Hanumath Rao Maduri created CALCITE-6178:
--------------------------------------------

             Summary: WITH RECURSIVE query when cloned using sqlshuttle looses 
RECURSIVE property
                 Key: CALCITE-6178
                 URL: https://issues.apache.org/jira/browse/CALCITE-6178
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.36.0
            Reporter: Hanumath Rao Maduri
            Assignee: Hanumath Rao Maduri
             Fix For: 1.37.0


Here is a test case which shows that a recursive query becomes a non recursive 
query when cloned using SqlShuttle. 

Copy paste the below test case in SqlParserTest


{code:java}
 @Test void testRecursiveQueryCloned() throws Exception {
    SqlNode sqlNode = sql("with RECURSIVE emp2 as "
        + "(select * from emp union select * from emp2) select * from 
emp2").parser().parseStmt();
    SqlNode sqlNode1 = sqlNode.accept(new SqlShuttle() {
   @Override public SqlNode visit(SqlIdentifier identifier) {
             return new SqlIdentifier(identifier.names, 
identifier.getParserPosition());
           }
  });
      System.out.println(sqlNode1.toSqlString(c -> 
c.withAlwaysUseParentheses(false)).getSql());
  }{code}

The above test case generates following output.


{code:java}
@Test void testRecursiveQueryCloned() throws Exception {
    SqlNode sqlNode = sql("with RECURSIVE emp2 as "
        + "(select * from emp union select * from emp2) select * from 
emp2").parser().parseStmt();
    SqlNode sqlNode1 = sqlNode.accept(new SqlShuttle() {
   @Override public SqlNode visit(SqlIdentifier identifier) {
             return new SqlIdentifier(identifier.names, 
identifier.getParserPosition());
           }
  });
      System.out.println(sqlNode1.toSqlString(c -> 
c.withAlwaysUseParentheses(false)).getSql());
  } {code}
 



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

Reply via email to