[ 
https://issues.apache.org/jira/browse/CALCITE-5835?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Ankit Siva updated CALCITE-5835:
--------------------------------
    Description: 
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()].

  was:
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()]].


> 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)

Reply via email to