cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andres de la Peña (Jira) <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-16510) Make ReadCommand::toCQLString return valid CQL
Date Mon, 05 Jul 2021 15:06:00 GMT

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

Andres de la Peña commented on CASSANDRA-16510:
-----------------------------------------------

[~blerer] Thanks for the review. I have rebased the patch and CI is running ([j8|https://app.circleci.com/pipelines/github/adelapena/cassandra/637/workflows/fcce57eb-db5f-4ece-9f85-6a13e733b70e] and
[j11|https://app.circleci.com/pipelines/github/adelapena/cassandra/637/workflows/ec830e8e-97c6-48af-930b-a2ba732ca2e0]),
with a few multiplexer runs for the new {{AbstractReadQueryToCQLStringTest}}.

Do we agree on applying this only to trunk?

> Make ReadCommand::toCQLString return valid CQL
> ----------------------------------------------
>
>                 Key: CASSANDRA-16510
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16510
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: CQL/Syntax, Observability/Logging
>            Reporter: Andres de la Peña
>            Assignee: Andres de la Peña
>            Priority: Normal
>             Fix For: 4.1
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> The method {{ReadCommand::toCQLString}} doesn't always return queries that are valid
CQL. For example, queries for a table without clustering columns always add the {{WHERE}}
keyword even if there isn't a restriction following it:
> {code:java}
> CREATE TABLE t (k int PRIMARY KEY, v int);
> SELECT * FROM t; 
> -- toCQLString 3.0:        SELECT * FROM k.t WHERE () = () LIMIT 100
> -- toCQLString 3.11/trunk: SELECT * FROM k.t WHERE  LIMIT 100
> {code}
> Also, case sensitive names and text values are not properly quoted:
> {code:java}
> CREATE TABLE "T" ("K" text, "C" text, "V" text, PRIMARY KEY("K", "C"));
> SELECT * FROM "T" WHERE "K" = 'a' AND "C" = 'b' AND "V" = 'c' ALLOW FILTERING;
> -- toCQLString 3.0/3.11/trunk: SELECT * FROM k.T WHERE K = a AND V = c AND (C) = (b)
LIMIT 100
> {code}
> Similar problems can be found on selections of collection items:
> {code:java}
> CREATE TABLE k.t (k int, c int, s set<text>,  m map<text, text>, PRIMARY
KEY(k, c));
> SELECT s['a'] FROM t;
> -- toCQLString trunk: SELECT s[a] FROM k.t LIMIT 100
> SELECT * FROM t WHERE m['a'] = 'b' ALLOW FILTERING;
> -- toCQLString 3.0/3.11/trunk: SELECT * FROM k.t WHERE m[a] = b LIMIT 100
> {code}
> Some similar problems with more impact than the described above are already being addressed
in CASSANDRA-16483 and CASSANDRA-16479.
> I think we should add more exhaustive JUnit tests for {{ReadCommand::toCQLString}}, making
sure that its output is parseable and equivalent to the original command. Also, we probably
should make sure that we have {{toCQLString}} methods in all the query components that are
used by {{ReadCommand::toCQLString}} (selection, filters, etc.). This way we can use them
instead of generic {{toString}} methods, making it clear that they are supposed to return
valid CQL.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org


Mime
View raw message