You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2014/05/23 18:03:17 UTC

[3/5] git commit: Fix IllegalArgumentException in CqlStorage

Fix IllegalArgumentException in CqlStorage

patch by slebresne; reviewed by driftx for CASSANDRA-7287


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

Branch: refs/heads/trunk
Commit: dfcb73426c9e87b0e4c263d0739d6856c3119c05
Parents: 465a09c
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Fri May 23 18:01:58 2014 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Fri May 23 18:01:58 2014 +0200

----------------------------------------------------------------------
 CHANGES.txt                                              |  1 +
 .../cassandra/hadoop/pig/AbstractCassandraStorage.java   | 11 +++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/dfcb7342/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 6c26d84..108c859 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -23,6 +23,7 @@
  * Fix potential ClassCastException in HintedHandoffManager (CASSANDRA-7284)
  * Use prepared statements internally (CASSANDRA-6975)
  * Fix broken paging state with prepared statement (CASSANDRA-7120)
+ * Fix IllegalArgumentException in CqlStorage (CASSANDRA-7287)
 Merged from 2.0:
  * Always reallocate buffers in HSHA (CASSANDRA-6285)
  * (Hadoop) support authentication in CqlRecordReader (CASSANDRA-7221)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/dfcb7342/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java b/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java
index 9e3abcf..9737d67 100644
--- a/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java
+++ b/src/java/org/apache/cassandra/hadoop/pig/AbstractCassandraStorage.java
@@ -788,8 +788,15 @@ public abstract class AbstractCassandraStorage extends LoadFunc implements Store
     {
         if (validator instanceof DecimalType || validator instanceof InetAddressType)
             return validator.getString(value);
-        else
-            return validator.compose(value);
+
+        if (validator instanceof CollectionType)
+        {
+            // For CollectionType, the compose() method assumes the v3 protocol format of collection, which
+            // is not correct here since we query using the CQL-over-thrift interface which use the pre-v3 format
+            return ((CollectionSerializer)validator.getSerializer()).deserializeForNativeProtocol(value, 1);
+        }
+
+        return validator.compose(value);
     }
 
     protected static class CfInfo