Uploaded image for project: 'Teiid'
  1. Teiid
  2. TEIID-4517

Add support for deleting child objects

XMLWordPrintable

    • Icon: Feature Request Feature Request
    • Resolution: Obsolete
    • Icon: Major Major
    • None
    • 8.12.7.6_3, 9.2
    • JDG Connector
    • None

      Infinispan cache dsl translator currently doesn't support deleting child objects when using complex POJO classes.
      Example of complex POJO:

      Unable to find source-code formatter for language: plain. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      package org.jboss.qe.jdg.remote.protobuf.complex;
      /* @Indexed */
      message Person {
          
          /* @IndexedField(index=true, store=false) */
          required int32 id = 1;
       
          /* @IndexedField */
          required string name = 2;
          
          /* @IndexedField */
          optional string email = 3;
          
          /* @IndexedField(index=true, store=false) */
          repeated PhoneNumber phones = 4;
          /* @Indexed */
          message Address {
       
              /* @IndexedField */
              required string Address = 1;
              
              /* @IndexedField(index=true, store=false) */
              required string City = 2;
              
              /* @IndexedField(index=true, store=false) */
              required string State = 3;
          }
          /* @IndexedField(index=true, store=false) */
          optional Address address = 5;
      }
       
      /* @Indexed */
      message PhoneNumber {
       
          /* @IndexedField */
          required string number = 1;
      }
      

      Mapped metadata:

      CREATE FOREIGN TABLE Address (
          Address string NOT NULL PRIMARY KEY OPTIONS (NAMEINSOURCE 'address.Address', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
          City string NOT NULL OPTIONS (NAMEINSOURCE 'address.City', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
          State string NOT NULL OPTIONS (NAMEINSOURCE 'address.State', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
          id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
          CONSTRAINT FK_PERSON FOREIGN KEY(id) REFERENCES Person (id) OPTIONS (NAMEINSOURCE 'address')
      ) OPTIONS (UPDATABLE TRUE);
       
      CREATE FOREIGN TABLE Person (
          id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
          name string NOT NULL OPTIONS (NAMEINSOURCE 'name', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
          email string OPTIONS (NAMEINSOURCE 'email', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
          CONSTRAINT PK_ID PRIMARY KEY(id)
      ) OPTIONS (UPDATABLE TRUE);
       
      CREATE FOREIGN TABLE PhoneNumber (
          number string NOT NULL PRIMARY KEY OPTIONS (NAMEINSOURCE 'phones.number', SEARCHABLE 'Searchable', NATIVE_TYPE 'java.lang.String'),
          id integer NOT NULL OPTIONS (NAMEINSOURCE 'id', SELECTABLE FALSE, SEARCHABLE 'Searchable', NATIVE_TYPE 'int'),
          CONSTRAINT FK_PERSON FOREIGN KEY(id) REFERENCES Person (id) OPTIONS (NAMEINSOURCE 'phones')
      ) OPTIONS (UPDATABLE TRUE);
      

      Expected usage:

      DELETE FROM PhoneNumber WHERE id=3
      

              van.halbert Van Halbert (Inactive)
              jstastny@redhat.com Jan Stastny
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: