fix quoting in CqlPagingRecordReader and CqlRecordWriter
patch by Alex Liu; reviewed by jbellis for CASSANDRA-5824


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

Branch: refs/heads/trunk
Commit: aa518998c9114f6cc8de4bb43d5dae7eaa6b06f8
Parents: af1a9fe
Author: Jonathan Ellis <jbel...@apache.org>
Authored: Tue Jul 30 14:29:44 2013 -0500
Committer: Jonathan Ellis <jbel...@apache.org>
Committed: Tue Jul 30 14:29:44 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                               |  2 ++
 .../cassandra/hadoop/cql3/CqlPagingRecordReader.java      |  8 +++++---
 .../org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java | 10 ++++++++--
 3 files changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/aa518998/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9a348f1..bd85e88 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
 1.2.9
+ * (Hadoop) fix quoting in CqlPagingRecordReader and CqlRecordWriter 
+   (CASSANDRA-5824)
  * update default LCS sstable size to 160MB (CASSANDRA-5727)
 
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/aa518998/src/java/org/apache/cassandra/hadoop/cql3/CqlPagingRecordReader.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/hadoop/cql3/CqlPagingRecordReader.java 
b/src/java/org/apache/cassandra/hadoop/cql3/CqlPagingRecordReader.java
index a900261..7798ac9 100644
--- a/src/java/org/apache/cassandra/hadoop/cql3/CqlPagingRecordReader.java
+++ b/src/java/org/apache/cassandra/hadoop/cql3/CqlPagingRecordReader.java
@@ -430,8 +430,8 @@ public class CqlPagingRecordReader extends 
RecordReader<Map<String, ByteBuffer>,
 
                 columns = withoutKeyColumns(columns);
                 columns = (clusterKey == null || "".equals(clusterKey))
-                        ? quote(partitionKey) + "," + columns
-                        : quote(partitionKey) + "," + quote(clusterKey) + "," 
+ columns;
+                        ? partitionKey + "," + columns
+                        : partitionKey + "," + clusterKey + "," + columns;
             }
 
             String whereStr = userDefinedWhereClauses == null ? "" : " AND " + 
userDefinedWhereClauses;
@@ -590,7 +590,8 @@ public class CqlPagingRecordReader extends 
RecordReader<Map<String, ByteBuffer>,
         }
 
         /** Quoting for working with uppercase */
-        private String quote(String identifier) {
+        private String quote(String identifier)
+        {
             return "\"" + identifier.replaceAll("\"", "\"\"") + "\"";
         }
 
@@ -764,3 +765,4 @@ public class CqlPagingRecordReader extends 
RecordReader<Map<String, ByteBuffer>,
         }
     }
 }
+@

http://git-wip-us.apache.org/repos/asf/cassandra/blob/aa518998/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java 
b/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java
index 642d8c4..612f86a 100644
--- a/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java
+++ b/src/java/org/apache/cassandra/hadoop/cql3/CqlRecordWriter.java
@@ -375,10 +375,16 @@ final class CqlRecordWriter extends 
AbstractColumnFamilyRecordWriter<Map<String,
         String keyWhereClause = "";
 
         for (String partitionKey : partitionKeyColumns)
-            keyWhereClause += String.format("%s = ?", keyWhereClause.isEmpty() 
? partitionKey : (" AND " + partitionKey));
+            keyWhereClause += String.format("%s = ?", keyWhereClause.isEmpty() 
? quote(partitionKey) : (" AND " + quote(partitionKey)));
         for (String clusterColumn : clusterColumns)
-            keyWhereClause += " AND " + clusterColumn + " = ?";
+            keyWhereClause += " AND " + quote(clusterColumn) + " = ?";
 
         return cqlQuery + " WHERE " + keyWhereClause;
     }
+
+    /** Quoting for working with uppercase */
+    private String quote(String identifier)
+    {
+        return "\"" + identifier.replaceAll("\"", "\"\"") + "\"";
+    }
 }

Reply via email to