What I learned today about calcite is that it supports an impressive number of dialects so the calcite may in fact be OK (as drill parses the 'LATERAL (select * from UNNEST)" perfectly when I enter it as a *query*. when I enter it as a view definition with CREATE VIEW then the query text that drill saves to the view definition file is transformed in a way similar to the difference between actual and expected result in [1] which is the extra parenthesis around the UNNEST expression. Selecting from such view raises a parse error for UNNEST having extra parentheses.
So from outside it looks that drill uses parse -> unparse -> parse sequence when querying the view. Maybe the fix is to change drill to just store the original query. But it seems that calcite tries to go to great lengths to have roundtrip capability just for users like drill. So I think the error lies either in calcite if there is some bug with unparse, or more likely, in drill as it configures the unparser with a dialect that is not comptible with the dialect it's parsing with. Cheers, Bozzo [1] https://github.com/apache/calcite/blob/master/core/src/test/java/org/apache/calcite/sql/parser/SqlParserTest.java#L7154 On 29/05/2020 19:54, Rui Wang wrote: > You might try to add a test case at [1]. Based on your Drill JIRA, you > might test the syntax containing "Literal (select * from UNNEST)". > > >
