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

NavigationProperty not working with Teiid odata, results in TEIID16053

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • 11.1.2, 12.0, 11.2.2
    • 11.2.1
    • OData
    • None
    • Hide

      Create a vdb with a NavigationProperty, add data and try to follow a path. In my setup this repeatedly fails.

      Show
      Create a vdb with a NavigationProperty, add data and try to follow a path. In my setup this repeatedly fails.
    • Hide

      No general workaround found yet. However, what is working for me is to change the primary key from a string value to an integer. I could fortunately do this, as I have a special situation with a table which holds uuids mapped to their internal database counterparts which are IDs of type integer. Hence, in my case both columns qualify as primary keys.
      Note, when using Teiid Designer it was not sufficient for me to reimport the database source and sync the vdb. I had to create and configure an entirely new vdb to get things working. Might be that I hit another issue here with Teiid Designer.

      Show
      No general workaround found yet. However, what is working for me is to change the primary key from a string value to an integer. I could fortunately do this, as I have a special situation with a table which holds uuids mapped to their internal database counterparts which are IDs of type integer. Hence, in my case both columns qualify as primary keys. Note, when using Teiid Designer it was not sufficient for me to reimport the database source and sync the vdb. I had to create and configure an entirely new vdb to get things working. Might be that I hit another issue here with Teiid Designer.

      Teiid throws an error in case it tries to follow an odata Navigation property. I tried this by using $expand and also by directly following a path. Two examples are shown below. My $metaddata.xml file is attached, and also a single record from the Account table in which the relevant comparison seems to happen. the uuidUser property you can find here.
      I do not understand the error message. What is not clear to me is the assignment which is mentioned there g1.uuidUser = g0.fkProfile

      Just for your awareness, uuidUser and fkProfile are different columns of different types that should not be compared in anyway. Maybe this is a hint what is going wrong. I would the relevant NavigationProperty expect to be

      <NavigationProperty Name="fkProfileInProfile" Type="my_nutri_diary.Account" Nullable="false">
      <ReferentialConstraint Property="fkProfile" ReferencedProperty="idProfile"/>

      Here are two example queries which fail with the same error

      http://localhost:8080/odata4/vdb/my_nutri_diary/Profile(38)?$expand=fkProfileInProfile
      http://localhost:8080/odata4/vdb/my_nutri_diary/Profile(38)/fkProfileInProfile

      <error xmlns="http://docs.oasis-open.org/odata/ns/metadata">
      <code>TEIID31172</code>
      <message>
      TEIID31172 Could not resolve expressions being compared to a common type excluding character conversions: g1.uuidUser = g0.fkProfile
      </message>
      </error>
      ----------------------

      There might also exist a bug in Teiid Designer, when changing the private key and reimporting the database, the source in Teiid Designer looks as expected. However, a sync of the vdb seems not to work properly. For the workaround described in this ticket, I had to create a new vdb in order to get things to work correctely.

        1. AccountRecord.xml
          3 kB
          Christoph John
        2. metadata.xml
          17 kB
          Christoph John

              rhn-engineering-shawkins Steven Hawkins
              cjohn001 Christoph John (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

                Created:
                Updated:
                Resolved: