Updated Branches: refs/heads/cassandra-1.2 af1a9fef2 -> aa518998c refs/heads/trunk f2be80c61 -> bdc8e2617
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/cassandra-1.2 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("\"", "\"\"") + "\""; + } }