ekaterinadimitrova2 commented on code in PR #2398:
URL: https://github.com/apache/cassandra/pull/2398#discussion_r1229763593
##########
test/unit/org/apache/cassandra/schema/CreateTableValidationTest.java:
##########
@@ -48,4 +51,60 @@ public void testInvalidBloomFilterFPRatio() throws Throwable
// sanity check
createTable("CREATE TABLE %s (a int PRIMARY KEY, b int) WITH
bloom_filter_fp_chance = 0.1");
}
+
+ @Test
+ public void testCreateTableOnSelectedClusterColumn()
+ {
+ createTable("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY
KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC);");
+ }
+
+ @Test
+ public void testCreateTableOnAllClusterColumns()
+ {
+ createTable("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY
KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC);");
+ }
+ @Test
+ public void testCreateTableErrorOnNonClusterKey()
+ {
+ String expectedMessage = "Only clustering key columns can be defined
in CLUSTERING ORDER directive";
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC, v
ASC);",
+ expectedMessage+": [v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (v ASC);",
+ expectedMessage+": [v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk ASC);",
+ expectedMessage+": [pk]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk ASC, ck1 DESC);",
+ expectedMessage+": [pk]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC, pk
DESC);",
+ expectedMessage+": [pk]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk DESC, v DESC);",
+ expectedMessage+": [pk, v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk DESC, v DESC, ck1
DESC);",
+ expectedMessage+": [pk, v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, v ASC);",
+ expectedMessage+": [v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (v ASC, ck1 DESC);",
+ expectedMessage+": [v]");
+ }
+
+ @Test
+ public void testCreateTableInWrongOrdering()
+ {
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck2 ASC, ck1 DESC);",
+ "The order of columns in the CLUSTERING ORDER
directive must be the one of the clustering key");
+ }
+
+ @Test
+ public void testCreateTableWithMissingClusterColumn()
Review Comment:
```suggestion
public void testCreateTableWithMissingClusteringColumn()
```
to be fixed on commit
##########
test/unit/org/apache/cassandra/schema/CreateTableValidationTest.java:
##########
@@ -48,4 +51,60 @@ public void testInvalidBloomFilterFPRatio() throws Throwable
// sanity check
createTable("CREATE TABLE %s (a int PRIMARY KEY, b int) WITH
bloom_filter_fp_chance = 0.1");
}
+
+ @Test
+ public void testCreateTableOnSelectedClusterColumn()
Review Comment:
```suggestion
public void testCreateTableOnSelectedClusteringColumn()
```
to be corrected on commit
##########
test/unit/org/apache/cassandra/schema/CreateTableValidationTest.java:
##########
@@ -48,4 +51,60 @@ public void testInvalidBloomFilterFPRatio() throws Throwable
// sanity check
createTable("CREATE TABLE %s (a int PRIMARY KEY, b int) WITH
bloom_filter_fp_chance = 0.1");
}
+
+ @Test
+ public void testCreateTableOnSelectedClusterColumn()
+ {
+ createTable("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY
KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC);");
+ }
+
+ @Test
+ public void testCreateTableOnAllClusterColumns()
+ {
+ createTable("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY
KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC);");
+ }
+ @Test
+ public void testCreateTableErrorOnNonClusterKey()
+ {
+ String expectedMessage = "Only clustering key columns can be defined
in CLUSTERING ORDER directive";
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC, v
ASC);",
+ expectedMessage+": [v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (v ASC);",
+ expectedMessage+": [v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk ASC);",
+ expectedMessage+": [pk]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk ASC, ck1 DESC);",
+ expectedMessage+": [pk]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC, pk
DESC);",
+ expectedMessage+": [pk]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk DESC, v DESC);",
+ expectedMessage+": [pk, v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (pk DESC, v DESC, ck1
DESC);",
+ expectedMessage+": [pk, v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, v ASC);",
+ expectedMessage+": [v]");
+ expectedFailure("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int,
PRIMARY KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (v ASC, ck1 DESC);",
+ expectedMessage+": [v]");
+ }
+
+ @Test
+ public void testCreateTableInWrongOrdering()
Review Comment:
```suggestion
public void testCreateTableInWrongOrder()
```
to be corrected on commit
##########
test/unit/org/apache/cassandra/schema/CreateTableValidationTest.java:
##########
@@ -48,4 +51,60 @@ public void testInvalidBloomFilterFPRatio() throws Throwable
// sanity check
createTable("CREATE TABLE %s (a int PRIMARY KEY, b int) WITH
bloom_filter_fp_chance = 0.1");
}
+
+ @Test
+ public void testCreateTableOnSelectedClusterColumn()
+ {
+ createTable("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY
KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC);");
+ }
+
+ @Test
+ public void testCreateTableOnAllClusterColumns()
+ {
+ createTable("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY
KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC, ck2 DESC);");
+ }
+ @Test
+ public void testCreateTableErrorOnNonClusterKey()
Review Comment:
```suggestion
public void testCreateTableErrorOnNonClusteringKey()
```
to be corrected on commit
##########
test/unit/org/apache/cassandra/schema/CreateTableValidationTest.java:
##########
@@ -48,4 +51,60 @@ public void testInvalidBloomFilterFPRatio() throws Throwable
// sanity check
createTable("CREATE TABLE %s (a int PRIMARY KEY, b int) WITH
bloom_filter_fp_chance = 0.1");
}
+
+ @Test
+ public void testCreateTableOnSelectedClusterColumn()
+ {
+ createTable("CREATE TABLE %s (pk int, ck1 int, ck2 int, v int, PRIMARY
KEY ((pk),ck1, ck2)) WITH CLUSTERING ORDER BY (ck1 ASC);");
+ }
+
+ @Test
+ public void testCreateTableOnAllClusterColumns()
Review Comment:
```suggestion
public void testCreateTableOnAllClusterColumns()
```
to be corrected on commit
##########
src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java:
##########
@@ -342,8 +344,14 @@ public ParsedStatement.Prepared prepare(Types udts) throws
RequestValidationExce
// If we give a clustering order, we must explicitly do so for all
aliases and in the order of the PK
if (!properties.definedOrdering.isEmpty())
{
- if (properties.definedOrdering.size() > columnAliases.size())
- throw new InvalidRequestException("Only clustering key
columns can be defined in CLUSTERING ORDER directive");
+ List<ColumnIdentifier> nonClusterColumn =
properties.definedOrdering.keySet().stream()
+
.filter((id) -> !columnAliases.contains(id))
+
.collect(Collectors.toList());
+
+ if (!nonClusterColumn.isEmpty())
+ {
+ throw new InvalidRequestException("Only clustering key
columns can be defined in CLUSTERING ORDER directive: " + nonClusterColumn + "
are not clustering column");
Review Comment:
```suggestion
throw new InvalidRequestException("Only clustering key
columns can be defined in CLUSTERING ORDER directive: " + nonClusterColumn + "
are not clustering columns");
```
to be corrected on commit
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]