[ADQL] Fix the tree generated by the parsing of NATURAL JOINs.
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().
Loading
Please sign in to comment