Hello Community,

Really quick question. There are quite few SQL syntax tricks similar to "row 
value construct".

CREATE TABLE test ( a1 NUMBER, b1 NUMBER );
SELECT * FROM test WHERE (a1, b1) = ( 1, 1 ); -- Fails on Oracle
SELECT * FROM test WHERE (a1, b1) IN ( ( 1, 1 ), ( 2, 2 ) ); -- Passes on Oracle
SELECT * FROM test WHERE (a1, b1) = ( SELECT 1, 1 FROM dual ); -- Passes on 
Oracle
SELECT * FROM test WHERE (a1, b1) IN ( SELECT 1, 1 FROM dual ); -- Passes on 
Oracle

Oracle does not support "row value syntax" as shown in the first query 
(Dialect#supportsRowValueConstructorSyntax() has to return 
false).

Should I assume that second, third and fourth query ought to pass when 
Dialect#supportsRowValueConstructorSyntaxInInList() returns 
positive? Or shall I add another method to Dialect class like 
supportsRowValueConstructorSyntaxInSelectList()? Please advise. I 
just do not want the Dialect class to grow and grow. 
Dialect#supportsRowValueConstructorSyntaxInInList() is overridden only by 
Oracle dialect, but PostgreSQL supports this feature as well.

Regards,
Lukasz Antoniak
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to