From 1a2a1d2c24b777d4c9ea9106e0e7199c7b91fa29 Mon Sep 17 00:00:00 2001 From: Vovodroid Date: Thu, 17 Sep 2015 20:57:51 +0200 Subject: [PATCH] Fix IndexOutOfBoundsException when using empty BATCH statements patch by Vovodroid; reviewed by Benjamin Lerer for CASSANDRA-10277 --- .../apache/cassandra/cql3/statements/BatchStatement.java | 2 +- .../cassandra/cql3/validation/operations/BatchTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java index 0661b563f0..46dfda551f 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); 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 14478457fb..07117fda05 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;"); + } }