You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ca...@apache.org on 2016/07/05 16:34:54 UTC
[3/6] cassandra git commit: Add test for multiple non primary-keys in
MV
Add test for multiple non primary-keys in MV
Patch by Carl Yeksigian; reviewed by Sylvain Lebresne for CASSANDRA-12044
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/a9a6e5fb
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/a9a6e5fb
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/a9a6e5fb
Branch: refs/heads/trunk
Commit: a9a6e5fb1656fa5918b6af644ab840c42fd60558
Parents: d95d8a9
Author: Carl Yeksigian <ca...@apache.org>
Authored: Tue Jul 5 11:44:18 2016 -0400
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Tue Jul 5 11:44:18 2016 -0400
----------------------------------------------------------------------
.../cql3/statements/CreateViewStatement.java | 2 +-
.../org/apache/cassandra/cql3/ViewTest.java | 31 ++++++++++++++++++++
2 files changed, 32 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a9a6e5fb/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
index 6446602..13e528c 100644
--- a/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
@@ -316,7 +316,7 @@ public class CreateViewStatement extends SchemaAlteringStatement
boolean isPk = basePK.contains(identifier);
if (!isPk && hasNonPKColumn)
- throw new InvalidRequestException(String.format("Cannot include more than one non-primary key column '%s' in materialized view partition key", identifier));
+ throw new InvalidRequestException(String.format("Cannot include more than one non-primary key column '%s' in materialized view primary key", identifier));
// We don't need to include the "IS NOT NULL" filter on a non-composite partition key
// because we will never allow a single partition key to be NULL
http://git-wip-us.apache.org/repos/asf/cassandra/blob/a9a6e5fb/test/unit/org/apache/cassandra/cql3/ViewTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/ViewTest.java b/test/unit/org/apache/cassandra/cql3/ViewTest.java
index 4a1dc07..85f01a6 100644
--- a/test/unit/org/apache/cassandra/cql3/ViewTest.java
+++ b/test/unit/org/apache/cassandra/cql3/ViewTest.java
@@ -1077,4 +1077,35 @@ public class ViewTest extends CQLTester
mvRows = executeNet(protocolVersion, "SELECT a, b FROM mvmap WHERE b = ?", 0);
assertRowsNet(protocolVersion, mvRows, row(0, 0));
}
+
+ @Test
+ public void testMultipleNonPrimaryKeysInView() throws Throwable
+ {
+ createTable("CREATE TABLE %s (" +
+ "a int," +
+ "b int," +
+ "c int," +
+ "d int," +
+ "e int," +
+ "PRIMARY KEY ((a, b), c))");
+
+ try
+ {
+ createView("mv_de", "CREATE MATERIALIZED VIEW %s AS SELECT * FROM %%s WHERE a IS NOT NULL AND b IS NOT NULL AND c IS NOT NULL AND d IS NOT NULL AND e IS NOT NULL PRIMARY KEY ((d, a), b, e, c)");
+ Assert.fail("Should have rejected a query including multiple non-primary key base columns");
+ }
+ catch (Exception e)
+ {
+ }
+
+ try
+ {
+ createView("mv_de", "CREATE MATERIALIZED VIEW %s AS SELECT * FROM %%s WHERE a IS NOT NULL AND b IS NOT NULL AND c IS NOT NULL AND d IS NOT NULL AND e IS NOT NULL PRIMARY KEY ((a, b), c, d, e)");
+ Assert.fail("Should have rejected a query including multiple non-primary key base columns");
+ }
+ catch (Exception e)
+ {
+ }
+
+ }
}