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 2013/04/29 09:30:34 UTC

git commit: Fix use of CQL3 functions with descending clustering order

Updated Branches:
  refs/heads/cassandra-1.2 9851b73fc -> 7eae57aea


Fix use of CQL3 functions with descending clustering order

patch by slebresne; reviewed by iamaleksey for CASSANDRA-5472


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

Branch: refs/heads/cassandra-1.2
Commit: 7eae57aeac291799d54d5a1b5a444e27336215f1
Parents: 9851b73
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Mon Apr 29 09:29:22 2013 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Mon Apr 29 09:29:22 2013 +0200

----------------------------------------------------------------------
 CHANGES.txt                                        |    3 +-
 .../cassandra/cql3/statements/Selection.java       |   42 ++++++++++++--
 2 files changed, 38 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/7eae57ae/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index c843e5e..241ef7c 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -13,9 +13,10 @@
  * Fix shutdown of binary protocol server (CASSANDRA-5507)
  * Fix repair -snapshot not working (CASSANDRA-5512)
  * Set isRunning flag later in binary protocol server (CASSANDRA-5467)
+ * Fix use of CQL3 functions with descencind clustering order (CASSANDRA-5472)
 Merged from 1.1
  * Add retry mechanism to OTC for non-droppable_verbs (CASSANDRA-5393)
- * Use allocator information to improve memtable memory usage estimate 
+ * Use allocator information to improve memtable memory usage estimate
    (CASSANDRA-5497)
  * Fix trying to load deleted row into row cache on startup (CASSANDRA-4463)
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/7eae57ae/src/java/org/apache/cassandra/cql3/statements/Selection.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/Selection.java b/src/java/org/apache/cassandra/cql3/statements/Selection.java
index e4e59c5..64710be 100644
--- a/src/java/org/apache/cassandra/cql3/statements/Selection.java
+++ b/src/java/org/apache/cassandra/cql3/statements/Selection.java
@@ -92,7 +92,7 @@ public abstract class Selection
                 throw new InvalidRequestException(String.format("Undefined name %s in selection clause", raw));
             if (metadata != null)
                 metadata.add(name);
-            return new SimpleSelector(addAndGetIndex(name, names), name.type);
+            return new SimpleSelector(name.toString(), addAndGetIndex(name, names), name.type);
         }
         else if (raw instanceof RawSelector.WritetimeOrTTL)
         {
@@ -107,7 +107,7 @@ public abstract class Selection
 
             if (metadata != null)
                 metadata.add(makeWritetimeOrTTLSpec(cfDef, tot));
-            return new WritetimeOrTTLSelector(addAndGetIndex(name, names), tot.isWritetime);
+            return new WritetimeOrTTLSelector(name.toString(), addAndGetIndex(name, names), tot.isWritetime);
         }
         else
         {
@@ -313,11 +313,13 @@ public abstract class Selection
 
     private static class SimpleSelector implements Selector
     {
+        private final String columnName;
         private final int idx;
         private final AbstractType<?> type;
 
-        public SimpleSelector(int idx, AbstractType<?> type)
+        public SimpleSelector(String columnName, int idx, AbstractType<?> type)
         {
+            this.columnName = columnName;
             this.idx = idx;
             this.type = type;
         }
@@ -329,7 +331,13 @@ public abstract class Selection
 
         public boolean isAssignableTo(ColumnSpecification receiver)
         {
-            return type.equals(receiver.type);
+            return type.asCQL3Type().equals(receiver.type.asCQL3Type());
+        }
+
+        @Override
+        public String toString()
+        {
+            return columnName;
         }
     }
 
@@ -355,17 +363,33 @@ public abstract class Selection
 
         public boolean isAssignableTo(ColumnSpecification receiver)
         {
-            return fun.returnType().equals(receiver.type);
+            return fun.returnType().asCQL3Type().equals(receiver.type.asCQL3Type());
+        }
+
+        @Override
+        public String toString()
+        {
+            StringBuilder sb = new StringBuilder();
+            sb.append(fun.name()).append("(");
+            for (int i = 0; i < argSelectors.size(); i++)
+            {
+                if (i > 0)
+                    sb.append(", ");
+                sb.append(argSelectors.get(i));
+            }
+            return sb.append(")").toString();
         }
     }
 
     private static class WritetimeOrTTLSelector implements Selector
     {
+        private final String columnName;
         private final int idx;
         private final boolean isWritetime;
 
-        public WritetimeOrTTLSelector(int idx, boolean isWritetime)
+        public WritetimeOrTTLSelector(String columnName, int idx, boolean isWritetime)
         {
+            this.columnName = columnName;
             this.idx = idx;
             this.isWritetime = isWritetime;
         }
@@ -386,6 +410,12 @@ public abstract class Selection
         {
             return receiver.type.asCQL3Type().equals(isWritetime ? CQL3Type.Native.BIGINT : CQL3Type.Native.INT);
         }
+
+        @Override
+        public String toString()
+        {
+            return columnName;
+        }
     }
 
     private static class SelectionWithFunctions extends Selection