[
https://issues.jboss.org/browse/TEIID-5060?page=com.atlassian.jira.plugin...
]
Jan Stastny commented on TEIID-5060:
------------------------------------
I created sample VDB which reproduces the issue:
{code:xml|title=teiid5060-vdb.xml}
<vdb name="teiid5060" version="1">
<model name="Source" type="PHYSICAL"
visible="false">
<source name="jdg7-source"
translator-name="infinispan-hotrod"
connection-jndi-name="java:/jdg71HotrodDS" />
<metadata type="DDL"><![CDATA[
CREATE FOREIGN TABLE SmallA (
StringNum string,
StringKey string PRIMARY KEY
) OPTIONS(UPDATABLE true, "teiid_ispn:cache"
'jdg71_crud_null');
]]>
</metadata>
<metadata type = "NATIVE"/>
</model>
<model name="CRUD" type="VIRTUAL">
<metadata type="DDL"><![CDATA[
CREATE VIEW SmallA(
StringNum string,
StringKey string PRIMARY KEY
) OPTIONS (UPDATABLE true) AS
SELECT
source.StringNum, source.StringKey FROM Source.SmallA as source;
]]>
</metadata>
</model>
</vdb>
{code}
Then steps to reproduce:
# {code:sql|title=SELECT query}SELECT * FROM SMallA{code} returns
|| StringNum || StringKey ||
(empty resultset)
# {code:sql|title=INSERT query}INSERT INTO SmallA(StringKey, StringNum) VALUES
('1','23'),('2','34');{code}
# {code:sql|title=SELECT query 2}SELECT * FROM SMallA{code} returns
|| StringNum || StringKey ||
| 34 | 2 |
| 23 | 1 |
# {code:sql|title=UPDATE query}UPDATE SmallA SET StringKey=5 WHERE StringNum>30{code}
# {code:sql|title=SELECT query 3}SELECT * FROM SMallA{code} returns
|| StringNum || StringKey ||
| 34 | 2 |
| 23 | 1 |
Note that 'SELECT query 2' and 'SELECT query 3' returns identical
results.
Infinispan Hotrod Translator UPDATE on primary key column
---------------------------------------------------------
Key: TEIID-5060
URL:
https://issues.jboss.org/browse/TEIID-5060
Project: Teiid
Issue Type: Bug
Components: JDG Connector, Misc. Connectors
Reporter: Jan Stastny
Assignee: Ramesh Reddy
Priority: Blocker
Fix For: 10.0
UPDATE query where the PRIMARY KEY of the table is being changed succeeds, returns update
count of corresponding rows, but the changes don't get promoted to actual cache.
Consider
{code:sql|title=UPDATE query}
UPDATE SmallA SET StringKey = 100 WHERE IntKey > 25
{code}
where StringKey is set as PRIMARY KEY and 6 rows fulfill the filter on IntKey>25.
When this UPDATE is performed, returned number of rows update is 6, but the contents of
the cache don't change.
There are several applicable resolutions:
# There should be error thrown by Teiid, that this is not allowed operation
# There should be update count 0 returned
# There should be change in JDG cache, effectively squashing the 6 rows into single one
# There should be error thrown by Teiid, that there is duplicate PK value (this is not
something Teiid usually enforces)
--
This message was sent by Atlassian JIRA
(v7.2.3#72005)