[ 
https://issues.apache.org/jira/browse/DRILL-8110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17608710#comment-17608710
 ] 

James Turton commented on DRILL-8110:
-------------------------------------

Interesting query syntax! This problem still exists in Drill master. Have you 
been able to rewrite your query using extra views or nested selects instead of 
CTEs in the meantime?

> CREATE VIEW with WITH clause as function argument creates invalid view
> ----------------------------------------------------------------------
>
>                 Key: DRILL-8110
>                 URL: https://issues.apache.org/jira/browse/DRILL-8110
>             Project: Apache Drill
>          Issue Type: Bug
>          Components: SQL Parser
>    Affects Versions: 1.18.0, 1.19.0
>            Reporter: Liubov Udalova
>            Priority: Major
>
> Creating a view from query with WITH clause as function argument (if function 
> has multiple arguments) results in a view which cannot be parsed. There are 
> missing parentheses around WITH expression, thus parsing is failed.
> Although execution of view subquery itself works fine.
> Drill query:
> {code:java}
> select age(
>         (with first_date as (select date '2021-12-20') 
>             select * from first_date), 
>         (with second_date as (select date '2022-12-20') 
>             select * from second_date)
>     ) {code}
> Query with view creation:
> {code:java}
> create or replace view storage.datasets.`debug_view_creation_1` as ( 
>     select age(
>         (with first_date as (select date '2021-12-20') 
>             select * from first_date), 
>         (with second_date as (select date '2022-12-20') 
>             select * from second_date)
>     )
> ); {code}
> Query the view:
> {code:java}
> select * from storage.datasets.`debug_view_creation_1`;
> Error: PARSE ERROR: Failure parsing a view your query is dependent upon.SQL 
> Query: SELECT `age`(WITH `first_date` AS (SELECT DATE '2021-12-20') (SELECT *
> FROM `first_date`), WITH `second_date` AS (SELECT DATE '2022-12-20') (SELECT *
>                   ^
> FROM `second_date`)) {code}
> Content of view file:
> {code:java}
> {
>   "name" : "debug_view_creation_1",
>   "sql" : "SELECT `age`(WITH `first_date` AS (SELECT DATE '2021-12-20') 
> (SELECT *\nFROM `first_date`), WITH `second_date` AS (SELECT DATE 
> '2022-12-20') (SELECT *\nFROM `second_date`))",
>   "fields" : [ {
>     "name" : "EXPR$0",
>     "type" : "ANY",
>     "isNullable" : true
>   } ],
>   "workspaceSchemaPath" : [ ]
> } {code}
>  
> It looks like a problem in Calcite 
> org.apache.calcite.sql.SqlWith.SqlWithOperator - perhaps in unparse method 
> first of SqlWriter.Frame frame should be created with additional parentheses:
> {code:java}
> final SqlWriter.Frame frame = writer.startList(SqlWriter.FrameTypeEnum.WITH, 
> "(WITH", ")"); {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to