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/02/26 22:00:17 UTC
[2/3] cassandra git commit: MV should only query complex columns
included in the view
MV should only query complex columns included in the view
Patch by Carl Yeksigian; reviewed by Jake Luciani for CASSANDRA-11069
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/9961b699
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/9961b699
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/9961b699
Branch: refs/heads/trunk
Commit: 9961b6991130ec4bedaf6fdfd8562229b52be7f0
Parents: c6ed2e0
Author: Carl Yeksigian <ca...@apache.org>
Authored: Fri Feb 26 15:56:20 2016 -0500
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Fri Feb 26 15:56:20 2016 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/view/View.java | 2 +-
.../org/apache/cassandra/cql3/ViewTest.java | 47 +++++++++++++-------
3 files changed, 34 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9961b699/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index bdcf328..fbc1c8a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
3.0.4
+ * MV should only query complex columns included in the view (CASSANDRA-11069)
* Failed aggregate creation breaks server permanently (CASSANDRA-11064)
* Add sstabledump tool (CASSANDRA-7464)
* Introduce backpressure for hints (CASSANDRA-10972)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9961b699/src/java/org/apache/cassandra/db/view/View.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/view/View.java b/src/java/org/apache/cassandra/db/view/View.java
index 30e9776..1b823aa 100644
--- a/src/java/org/apache/cassandra/db/view/View.java
+++ b/src/java/org/apache/cassandra/db/view/View.java
@@ -169,7 +169,7 @@ public class View
for (ColumnDefinition cdef : baseCfs.metadata.allColumns())
{
- if (cdef.isComplex())
+ if (cdef.isComplex() && definition.includes(cdef.name))
{
baseComplexColumns.add(cdef);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/9961b699/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 2e3cf5f..830f37f 100644
--- a/test/unit/org/apache/cassandra/cql3/ViewTest.java
+++ b/test/unit/org/apache/cassandra/cql3/ViewTest.java
@@ -18,20 +18,20 @@
package org.apache.cassandra.cql3;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.InetAddress;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Date;
import java.util.HashSet;
import java.util.List;
-import java.util.UUID;
import java.util.concurrent.TimeUnit;
import junit.framework.Assert;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import com.datastax.driver.core.ResultSet;
+import com.datastax.driver.core.Row;
+import com.datastax.driver.core.exceptions.InvalidQueryException;
import org.apache.cassandra.concurrent.SEPExecutor;
import org.apache.cassandra.concurrent.Stage;
import org.apache.cassandra.concurrent.StageManager;
@@ -41,14 +41,6 @@ import org.apache.cassandra.db.ColumnFamilyStore;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.utils.FBUtilities;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import com.datastax.driver.core.ResultSet;
-import com.datastax.driver.core.Row;
-import com.datastax.driver.core.exceptions.InvalidQueryException;
import static org.junit.Assert.assertTrue;
@@ -1002,4 +994,29 @@ public class ViewTest extends CQLTester
mvRows = executeNet(protocolVersion, "SELECT a, d, b FROM mv1");
assertTrue(mvRows.isExhausted());
}
+
+ @Test
+ public void testCollectionInView() throws Throwable
+ {
+ createTable("CREATE TABLE %s (" +
+ "a int," +
+ "b int," +
+ "c map<int, text>," +
+ "PRIMARY KEY (a))");
+
+ executeNet(protocolVersion, "USE " + keyspace());
+ createView("mvmap", "CREATE MATERIALIZED VIEW %s AS SELECT a, b FROM %%s WHERE b IS NOT NULL PRIMARY KEY (b, a)");
+
+ updateView("INSERT INTO %s (a, b) VALUES (?, ?)", 0, 0);
+ ResultSet mvRows = executeNet(protocolVersion, "SELECT a, b FROM mvmap WHERE b = ?", 0);
+ assertRowsNet(protocolVersion, mvRows, row(0, 0));
+
+ updateView("INSERT INTO %s (a, b, c) VALUES (?, ?, ?)", 1, 1, map(1, "1"));
+ mvRows = executeNet(protocolVersion, "SELECT a, b FROM mvmap WHERE b = ?", 1);
+ assertRowsNet(protocolVersion, mvRows, row(1, 1));
+
+ updateView("INSERT INTO %s (a, b, c) VALUES (?, ?, ?)", 0, 0, map(0, "0"));
+ mvRows = executeNet(protocolVersion, "SELECT a, b FROM mvmap WHERE b = ?", 0);
+ assertRowsNet(protocolVersion, mvRows, row(0, 0));
+ }
}