You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "David Capwell (Jira)" <ji...@apache.org> on 2022/09/23 18:06:00 UTC
[jira] [Created] (CASSANDRA-17919) Capital P gets confused in the parser for a Duration in places where IDENT are needed
David Capwell created CASSANDRA-17919:
-----------------------------------------
Summary: Capital P gets confused in the parser for a Duration in places where IDENT are needed
Key: CASSANDRA-17919
URL: https://issues.apache.org/jira/browse/CASSANDRA-17919
Project: Cassandra
Issue Type: Bug
Components: CQL/Syntax
Reporter: David Capwell
This was found while adding Accord Transaction syntax into CQL and fuzz testing to validate all possible cases… in doing this the following was found
{code}
String query = "BEGIN TRANSACTION\n" +
" LET P = (SELECT v FROM " + keyspace + ".tbl WHERE k=? AND c=?);\n" +
" LET row2 = (SELECT v FROM " + keyspace + ".tbl WHERE k=? AND c=?);\n" +
" SELECT v FROM " + keyspace + ".tbl WHERE k=? AND c=?;\n" +
" IF P IS NULL AND row2.v = ? THEN\n" +
" INSERT INTO " + keyspace + ".tbl (k, c, v) VALUES (?, ?, ?);\n" +
" END IF\n" +
"COMMIT TRANSACTION";
{code}
Fails with
{code}
SyntaxException: line 2:6 mismatched input 'P' expecting IDENT (BEGIN TRANSACTION LET [P]...)
{code}
The new LET syntax found this, but was able to reproduce in other cases
{code}
cqlsh:ks> CREATE TABLE P (k INT PRIMARY KEY);
SyntaxException: line 1:13 no viable alternative at input 'P' (CREATE TABLE [P]...)
cqlsh:ks>
cqlsh:ks> CREATE TABLE p (k INT PRIMARY KEY);
cqlsh:ks>
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org