[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 register or sign in to comment