[ https://issues.apache.org/jira/browse/CALCITE-5835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17748890#comment-17748890 ]
Jiajun Xie commented on CALCITE-5835: ------------------------------------- Make sense. `top-level SqlNode representing stmt` is more accurate than `{{{}SqlSelect{}}} or {{{}SqlBinaryOperator{}}}`. [~ankitsiva], Welcome to contribute. > SqlParser.parseQuery() successfully parses DML and DDL statements without > throwing a SqlParseException > ------------------------------------------------------------------------------------------------------ > > Key: CALCITE-5835 > URL: https://issues.apache.org/jira/browse/CALCITE-5835 > Project: Calcite > Issue Type: Bug > Components: core > Affects Versions: 1.34.0 > Reporter: Ankit Siva > Priority: Major > > I've set up a parser as follows: > > {code:java} > val config= SqlParser.config() > .withConformance(SqlConformanceEnum.BABEL) > .withQuoting(Quoting.DOUBLE_QUOTE) > .withQuotedCasing(Casing.TO_LOWER) > .withUnquotedCasing(Casing.TO_LOWER) > .withCaseSensitive(false) > val parser = SqlParser.create(sql, config) > parser.parseQuery() > {code} > > I am parsing the following statements: > 1. > {code:java} > INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, > Country) > VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', > 'Norway'){code} > 2. > {code:java} > INSERT INTO emps (emp_id , emp_name , emp_salary) > SELECT employee_id , last_name , salary > FROM employees > WHERE department_id = 50{code} > 3. > {code:java} > UPDATE employees > SET salary = 5000 > WHERE employee_id = 100{code} > 4. > {code:java} > DELETE FROM employees > WHERE department_id = ( > SELECT department_id FROM departments > WHERE department_name = 'Sales' > ){code} > 5. > {code:java} > MERGE INTO customers_backup bkup > USING customers cust > ON (bkup.cust_id = cust.cust_id) > WHEN MATCHED THEN > UPDATE SET > bkup.cust_name = cust.cust_name , > bkup.cust_surfing_package = cust.cust_surfing_package > WHEN NOT MATCHED THEN > INSERT VALUES(cust.cust_id , cust.cust_name , cust.cust_surfing_package){code} > Parsing any of these queries does not raise a `SqlParseException`. > Additionally, these return nodes that are not of type {{SqlSelect}} or > {{{}SqlBinaryOperator{}}}. This conflicts with the expectation of the method > and the contract declared in the > [javadoc|https://calcite.apache.org/javadocAggregate/org/apache/calcite/sql/parser/SqlParser.html#parseQuery()]. -- This message was sent by Atlassian Jira (v8.20.10#820010)