+233
−239
File changed.
Preview size limit exceeded, changes collapsed.
Loading
The "normal" JOIN:
A JOIN B ON A.id = B.id JOIN C ON B.id = C.id
is correctly interpreted as:
( (A JOIN B ON A.id = B.id) JOIN C ON B.id = C.id )
But with a NATURAL JOIN, the tree is mirrored:
A NATURAL JOIN B NATURAL JOIN C
gives:
( A NATURAL JOIN (B NATURAL JOIN C) )
instead of:
( (A NATURAL JOIN B) NATURAL JOIN C )
This is not a problem when the SQL translation is identical to the ADQL
expression, but for some DBMS a conversion into a INNER JOIN ON is necessary
and in this case we got the following SQL:
A JOIN B JOIN C ON A.id = B.id ON B.id = C.id
Which seems to work, but is syntactically strange.
This commit should fix the generated tree. A "normal" JOIN and a NATURAL JOIN
should now have the same form. A JUnit test has been added into TestADQLParser
to check that: testJoinTree().
File changed.
Preview size limit exceeded, changes collapsed.