-
Bug
-
Resolution: Done
-
Major
-
JDG 7.2 ER1, JDG 7.2 ER3
-
None
-
-
-
-
-
-
ER3
-
Reopened by mistake
-
JDBC CacheStore Passivating data into Oracle 12c RAC DB will fail with following error (Full stacktrace in attachment):
[java] Caused by: Error : 928, Position : 47, Sql = MERGE INTO "EDG_STRING2_memcachedCache" USING (VALUES (:1 , :2 , :3 )) AS tmp (datum, version, id) ON (datum = tmp.datum) WHEN MATCHED THEN UPDATE SET version = tmp.version, id = tmp.id WHEN NOT MATCHED THEN INSERT (datum, version, id) VALUES (tmp.datum, tmp.version, tmp.id), OriginalSql = MERGE INTO "EDG_STRING2_memcachedCache" USING (VALUES (?, ?, ?)) AS tmp (datum, version, id) ON (datum = tmp.datum) WHEN MATCHED THEN UPDATE SET version = tmp.version, id = tmp.id WHEN NOT MATCHED THEN INSERT (datum, version, id) VALUES (tmp.datum, tmp.version, tmp.id), Error Msg = ORA-00928: missing SELECT keyword
[java] at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:498)
[java] ... 107 more
As far as I know, merging tables in oracle BD requires two actual database objects, so I believe substituting
(SELECT :1 datum, :2 version, :3 id FROM dual) tmp
for
(VALUES (:1 , :2 , :3 )) AS tmp
should do the trick.
Note: The target object in the query (EDG_STRING2_memcachedCache table in this case) could also use a naming ("target"?) to avoid possible ambiguity. Some DBs are touchy about that.
- is cloned by
-
JDG-1462 REMOTE JDBC CacheStore failing upsert on MSSql 2012
- Closed