From e0074a31ef26adaebff6ac0657e4471fc805f93f Mon Sep 17 00:00:00 2001 From: Benjamin Lerer Date: Thu, 21 Mar 2024 11:11:10 +0100 Subject: [PATCH] Add support for NOT operators in WHERE clauses (CASSANDRA-18584) In addition - Fixed Three Valued Logic patch by Piotr Kolaczkowski; reviewed by Benjamin Lerer, Ekaterina Dimitrova, Andres de la Pena for CASSANDRA-18584 Co-authored-by: Benjamin Lerer Co-authored by: Ekaterina Dimitrova --- CHANGES.txt | 1 + doc/cql3/CQL.textile | 14 +- .../examples/BNF/select_statement.bnf | 2 +- .../pages/developing/cql/changes.adoc | 1 + .../pages/developing/cql/cql_singlefile.adoc | 2 +- pylib/cqlshlib/cql3handling.py | 4 +- pylib/cqlshlib/test/test_cqlsh_completion.py | 6 +- src/antlr/Parser.g | 14 +- .../org/apache/cassandra/cql3/Operator.java | 173 +++++- .../org/apache/cassandra/cql3/Relation.java | 6 +- .../cql3/conditions/ColumnCondition.java | 2 +- .../cql3/restrictions/ClusteringElements.java | 5 + .../cql3/restrictions/MergedRestriction.java | 6 +- .../PartitionKeyRestrictions.java | 2 +- .../cql3/restrictions/SimpleRestriction.java | 14 +- .../apache/cassandra/db/filter/RowFilter.java | 9 +- .../SelectMultiColumnRelationTest.java | 584 +++++++++++++++++- .../SelectSingleColumnRelationTest.java | 499 ++++++++++++++- .../validation/operations/SelectTest.java | 312 +++++++++- .../index/sai/cql/TokenRangeReadTest.java | 31 + .../sai/cql/UnindexedExpressionsTest.java | 4 +- 21 files changed, 1593 insertions(+), 98 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index d3e54a69f7..26cb5d2c29 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 5.1 + * Add support for NOT operators in WHERE clauses. Fixed Three Valued Logic (CASSANDRA-18584) * Allow getendpoints for system tables and make sure getNaturalReplicas work for MetaStrategy (CASSANDRA-19846) * On upgrade, handle pre-existing tables with unexpected table ids (CASSANDRA-19845) * Reconfigure CMS before assassinate (CASSANDRA-19768) diff --git a/doc/cql3/CQL.textile b/doc/cql3/CQL.textile index d60b4d476f..4c2b09acc3 100644 --- a/doc/cql3/CQL.textile +++ b/doc/cql3/CQL.textile @@ -940,6 +940,10 @@ bc(syntax).. | IN | '(' (',' )* ')' IN '(' ( ( ',' )* )? ')' | '(' (',' )* ')' IN + | NOT IN '(' ( ( ',' )* )? ')' + | NOT IN + | '(' (',' )* ')' NOT IN '(' ( ( ',' )* )? ')' + | '(' (',' )* ')' NOT IN