]
Ramesh Reddy commented on TEIID-4064:
-------------------------------------
Now I have also ran through this exact same example using postgres database locally, and
could not reproduce this. The stack seem to indicate your DB does not have the FK
relation, can you check and see your $metadata and see if there is Order_FK0?
OData - missing non-nullable property
-------------------------------------
Key: TEIID-4064
URL:
https://issues.jboss.org/browse/TEIID-4064
Project: Teiid
Issue Type: Sub-task
Components: OData
Reporter: Juraj DurĂ¡ni
Assignee: Ramesh Reddy
Labels: Alpha3
Fix For: 9.0, 8.12.5
Change DDL for tables Customer and Orders in VDB as follows:
{code:sql}
CREATE FOREIGN TABLE Customers (
id integer PRIMARY KEY OPTIONS (NAMEINSOURCE 'id'),
name varchar(10)) OPTIONS (NAMEINSOURCE 'DB.PUBLIC.CUSTOMERS');
CREATE FOREIGN TABLE Orders (
id integer PRIMARY KEY OPTIONS (NAMEINSOURCE 'id'),
customerid integer,
place varchar(10),
FOREIGN KEY (customerid) REFERENCES Customers(id)) OPTIONS (NAMEINSOURCE
'DB.PUBLIC.ORDERS');
{code}
Note, that both tables have same name of primary key named "id".
Invoke GET method to URL
http://localhost:8080/odata4/olingo_basic/Source/Customers/?$count=true&a...
*Result:*
{code:xml}
<error>
<code>400</code>
<message>The non-nullable property 'id' is missing.</message>
</error>
{code}
Here are selected part of Teiid's log:
*Query:*
{code:sql}
SELECT g10.id, g10.name, g11.id, g11.customerid, g11.place FROM Source.Customers AS g10
LEFT OUTER JOIN Source.Orders AS g11 ON g10.id = g11.customerid ORDER BY g10.id
{code}
*Result:*
|id|name|id|customerid|place|
|1|customer1|1|1|town|
|1|customer1|2|1|state|
|1|customer1|3|1|country|
|1|customer1|4|1|abroad|
|2|customer2|5|2|state|
|2|customer2|6|2|country|
|3|customer3|7|3|town|
|3|customer3|8|3|town|
|4|customer4|<null>|<null>|<null>|