You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by br...@apache.org on 2015/09/17 22:06:39 UTC

[02/17] cassandra git commit: Fix IndexOutOfBoundsException when using empty BATCH statements

Fix IndexOutOfBoundsException when using empty BATCH statements

patch by Vovodroid; reviewed by Benjamin Lerer for CASSANDRA-10277


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/1a2a1d2c
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1a2a1d2c
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1a2a1d2c

Branch: refs/heads/trunk
Commit: 1a2a1d2c24b777d4c9ea9106e0e7199c7b91fa29
Parents: b62fde1
Author: Vovodroid <vo...@gmail.com>
Authored: Thu Sep 17 20:57:51 2015 +0200
Committer: blerer <be...@datastax.com>
Committed: Thu Sep 17 20:57:51 2015 +0200

----------------------------------------------------------------------
 .../org/apache/cassandra/cql3/statements/BatchStatement.java   | 2 +-
 .../apache/cassandra/cql3/validation/operations/BatchTest.java | 6 ++++++
 2 files changed, 7 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a2a1d2c/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
index 0661b56..46dfda5 100644
--- a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
@@ -510,7 +510,7 @@ public class BatchStatement implements CQLStatement
 
             // Use the CFMetadata of the first statement for partition key bind indexes.  If the statements affect
             // multiple tables, we won't send partition key bind indexes.
-            Short[] partitionKeyBindIndexes = haveMultipleCFs ? null
+            Short[] partitionKeyBindIndexes = (haveMultipleCFs || batchStatement.statements.isEmpty())? null
                                                               : boundNames.getPartitionKeyBindIndexes(batchStatement.statements.get(0).cfm);
 
             return new ParsedStatement.Prepared(batchStatement, boundNames, partitionKeyBindIndexes);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/1a2a1d2c/test/unit/org/apache/cassandra/cql3/validation/operations/BatchTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/cql3/validation/operations/BatchTest.java b/test/unit/org/apache/cassandra/cql3/validation/operations/BatchTest.java
index 1447845..07117fd 100644
--- a/test/unit/org/apache/cassandra/cql3/validation/operations/BatchTest.java
+++ b/test/unit/org/apache/cassandra/cql3/validation/operations/BatchTest.java
@@ -103,4 +103,10 @@ public class BatchTest extends CQLTester
                    row(111, "batchtext", null)
         );
     }
+
+    @Test
+    public void testBatchEmpty() throws Throwable
+    {
+        execute("BEGIN BATCH APPLY BATCH;");
+    }
 }