You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/01/10 21:01:53 UTC

[4/4] git commit: re-add support for using KEY in a select even when that is not the defined alias, for backwards compatibility. Add case-insensitivity for the actual alias.

re-add support for using KEY in a select even when that is not the defined alias, for backwards compatibility.  Add case-insensitivity for the actual alias.

patch by jbellis; reviewed by pyaskevich for CASSANDRA-3700


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

Branch: refs/heads/cassandra-1.0
Commit: e2231a19711009659f791c372837852b604d9816
Parents: 044eb1e
Author: Jonathan Ellis <jb...@apache.org>
Authored: Tue Jan 10 12:36:04 2012 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Jan 10 12:52:45 2012 -0600

----------------------------------------------------------------------
 src/java/org/apache/cassandra/cql/WhereClause.java |   20 ++++++++++----
 1 files changed, 14 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e2231a19/src/java/org/apache/cassandra/cql/WhereClause.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql/WhereClause.java b/src/java/org/apache/cassandra/cql/WhereClause.java
index 964aad8..129de65 100644
--- a/src/java/org/apache/cassandra/cql/WhereClause.java
+++ b/src/java/org/apache/cassandra/cql/WhereClause.java
@@ -21,6 +21,7 @@ package org.apache.cassandra.cql;
  */
 
 import java.nio.ByteBuffer;
+import java.nio.charset.CharacterCodingException;
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
 import java.util.List;
@@ -142,20 +143,27 @@ public class WhereClause
 
     public void extractKeysFromColumns(CFMetaData cfm)
     {
-        ByteBuffer realKeyAlias = cfm.getKeyName();
+        String realKeyAlias = null;
+        try
+        {
+            // ThriftValidation ensures that key_alias is ascii
+            realKeyAlias = ByteBufferUtil.string(cfm.getKeyName()).toUpperCase();
+        }
+        catch (CharacterCodingException e)
+        {
+            throw new RuntimeException(e);
+        }
 
         if (!keys.isEmpty())
             return; // we already have key(s) set (<key> IN (.., ...) construction used)
 
         for (Relation relation : clauseRelations)
         {
-            String nameText = relation.getEntity().getText();
-            ByteBuffer name = ByteBufferUtil.bytes(nameText);
-
-            if (name.equals(realKeyAlias))
+            String name = relation.getEntity().getText().toUpperCase();
+            if (name.equals(realKeyAlias) || name.equals("KEY"))
             {
                 if (keyAlias == null) // setting found key as an alias
-                    keyAlias = nameText.toUpperCase();
+                    keyAlias = name;
 
                 if (relation.operator() == RelationType.EQ)
                 {