On Fri 25 May 2012 02:19:29 PM CDT, Łukasz Antoniak wrote:
> 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?

Why would the third query fall into 
supportsRowValueConstructorSyntaxInInList?


> Or shall I add another method to Dialect class like 
> supportsRowValueConstructorSyntaxInSelectList()?

I am not understanding the need for 
supportsRowValueConstructorSyntaxInSelectList.  What exactly is the 
purpose of grouping the values together in a select list?  And in fact 
you are not even using tuple (row value constructor) syntax in any of 
the selects.

> Please advise. I
> just do not want the Dialect class to grow and grow.

Nor do I :)  The problem is all the variation in support for tuple 
syntax in different scenarios across the different databases.

--
st...@hibernate.org
http://hibernate.org
_______________________________________________
hibernate-dev mailing list
hibernate-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/hibernate-dev

Reply via email to