Repository: cassandra
Updated Branches:
  refs/heads/cassandra-2.1 6127f8567 -> 1147ee3a8


Backport first patch of 6975


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

Branch: refs/heads/cassandra-2.1
Commit: 362e54803434053fea25f874f64c69bdc1db78da
Parents: 2635632
Author: Sylvain Lebresne <sylv...@datastax.com>
Authored: Wed May 14 14:25:29 2014 +0200
Committer: Sylvain Lebresne <sylv...@datastax.com>
Committed: Thu May 22 14:41:53 2014 +0200

----------------------------------------------------------------------
 .../org/apache/cassandra/cql3/CQLStatement.java |  2 +-
 .../apache/cassandra/cql3/QueryProcessor.java   |  2 +-
 .../statements/AuthenticationStatement.java     |  2 +-
 .../cql3/statements/AuthorizationStatement.java |  2 +-
 .../cql3/statements/BatchStatement.java         |  4 +-
 .../cql3/statements/ModificationStatement.java  |  4 +-
 .../statements/SchemaAlteringStatement.java     |  2 +-
 .../cql3/statements/SelectStatement.java        | 47 ++++++++++----------
 .../cql3/statements/TruncateStatement.java      |  2 +-
 .../cassandra/cql3/statements/UseStatement.java |  2 +-
 10 files changed, 34 insertions(+), 35 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/CQLStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/CQLStatement.java 
b/src/java/org/apache/cassandra/cql3/CQLStatement.java
index 81cd2b2..a1642ef 100644
--- a/src/java/org/apache/cassandra/cql3/CQLStatement.java
+++ b/src/java/org/apache/cassandra/cql3/CQLStatement.java
@@ -57,5 +57,5 @@ public interface CQLStatement
      *
      * @param state the current query state
      */
-    public ResultMessage executeInternal(QueryState state) throws 
RequestValidationException, RequestExecutionException;
+    public ResultMessage executeInternal(QueryState state, QueryOptions 
options) throws RequestValidationException, RequestExecutionException;
 }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/QueryProcessor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java 
b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
index 15ee59f..30d1bd7 100644
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@ -205,7 +205,7 @@ public class QueryProcessor implements QueryHandler
             state.setKeyspace(Keyspace.SYSTEM_KS);
             CQLStatement statement = getStatement(query, state).statement;
             statement.validate(state);
-            ResultMessage result = statement.executeInternal(qState);
+            ResultMessage result = statement.executeInternal(qState, 
QueryOptions.DEFAULT);
             if (result instanceof ResultMessage.Rows)
                 return new 
UntypedResultSet(((ResultMessage.Rows)result).result);
             else

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/statements/AuthenticationStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/AuthenticationStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/AuthenticationStatement.java
index 5fcf085..b47dd92 100644
--- a/src/java/org/apache/cassandra/cql3/statements/AuthenticationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/AuthenticationStatement.java
@@ -45,7 +45,7 @@ public abstract class AuthenticationStatement extends 
ParsedStatement implements
 
     public abstract ResultMessage execute(ClientState state) throws 
RequestExecutionException, RequestValidationException;
 
-    public ResultMessage executeInternal(QueryState state)
+    public ResultMessage executeInternal(QueryState state, QueryOptions 
options)
     {
         // executeInternal is for local query only, thus altering users 
doesn't make sense and is not supported
         throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/statements/AuthorizationStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/AuthorizationStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/AuthorizationStatement.java
index db4581e..2c7f2cb 100644
--- a/src/java/org/apache/cassandra/cql3/statements/AuthorizationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/AuthorizationStatement.java
@@ -47,7 +47,7 @@ public abstract class AuthorizationStatement extends 
ParsedStatement implements
 
     public abstract ResultMessage execute(ClientState state) throws 
RequestValidationException, RequestExecutionException;
 
-    public ResultMessage executeInternal(QueryState state)
+    public ResultMessage executeInternal(QueryState state, QueryOptions 
options)
     {
         // executeInternal is for local query only, thus altering permission 
doesn't make sense and is not supported
         throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
index 6a1201b..875e41c 100644
--- a/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/BatchStatement.java
@@ -327,11 +327,11 @@ public class BatchStatement implements CQLStatement, 
MeasurableForPreparedCache
         return new 
ResultMessage.Rows(ModificationStatement.buildCasResultSet(ksName, key, cfName, 
result, columnsWithConditions, true));
     }
 
-    public ResultMessage executeInternal(QueryState queryState) throws 
RequestValidationException, RequestExecutionException
+    public ResultMessage executeInternal(QueryState queryState, QueryOptions 
options) throws RequestValidationException, RequestExecutionException
     {
         assert !hasConditions;
 
-        for (IMutation mutation : getMutations(new 
PreparedBatchVariables(Collections.<ByteBuffer>emptyList()), true, null, 
queryState.getTimestamp()))
+        for (IMutation mutation : getMutations(new 
PreparedBatchVariables(options.getValues()), true, null, 
queryState.getTimestamp()))
             mutation.apply();
         return null;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
index 448722e..b1e4561 100644
--- a/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/ModificationStatement.java
@@ -671,12 +671,12 @@ public abstract class ModificationStatement implements 
CQLStatement, MeasurableF
         return builder.build();
     }
 
-    public ResultMessage executeInternal(QueryState queryState) throws 
RequestValidationException, RequestExecutionException
+    public ResultMessage executeInternal(QueryState queryState, QueryOptions 
options) throws RequestValidationException, RequestExecutionException
     {
         if (hasConditions())
             throw new UnsupportedOperationException();
 
-        for (IMutation mutation : 
getMutations(Collections.<ByteBuffer>emptyList(), true, null, 
queryState.getTimestamp()))
+        for (IMutation mutation : getMutations(options.getValues(), true, 
null, queryState.getTimestamp()))
             mutation.apply();
         return null;
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java
index 337e8dc..94df854 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java
@@ -73,7 +73,7 @@ public abstract class SchemaAlteringStatement extends 
CFStatement implements CQL
         return new ResultMessage.SchemaChange(changeType(), keyspace(), 
tableName);
     }
 
-    public ResultMessage executeInternal(QueryState state)
+    public ResultMessage executeInternal(QueryState state, QueryOptions 
options)
     {
         // executeInternal is for local query only, thus altering schema is 
not supported
         throw new UnsupportedOperationException();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
index 6b4309f..92bc99c 100644
--- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java
@@ -194,18 +194,8 @@ public class SelectStatement implements CQLStatement, 
MeasurableForPreparedCache
         cl.validateForRead(keyspace());
 
         int limit = getLimit(variables);
-        int limitForQuery = updateLimitForQuery(limit);
         long now = System.currentTimeMillis();
-        Pageable command;
-        if (isKeyRange || usesSecondaryIndexing)
-        {
-            command = getRangeCommand(variables, limitForQuery, now);
-        }
-        else
-        {
-            List<ReadCommand> commands = getSliceCommands(variables, 
limitForQuery, now);
-            command = commands == null ? null : new 
Pageable.ReadCommands(commands);
-        }
+        Pageable command = getPageableCommand(options, limit, now);
 
         int pageSize = options.getPageSize();
         // A count query will never be paged for the user, but we always page 
it internally to avoid OOM.
@@ -237,6 +227,21 @@ public class SelectStatement implements CQLStatement, 
MeasurableForPreparedCache
         }
     }
 
+    private Pageable getPageableCommand(QueryOptions options, int limit, long 
now) throws RequestValidationException
+    {
+        int limitForQuery = updateLimitForQuery(limit);
+        if (isKeyRange || usesSecondaryIndexing)
+            return getRangeCommand(options.getValues(), limitForQuery, now);
+
+        List<ReadCommand> commands = getSliceCommands(options.getValues(), 
limitForQuery, now);
+        return commands == null ? null : new Pageable.ReadCommands(commands);
+    }
+
+    public Pageable getPageableCommand(QueryOptions options) throws 
RequestValidationException
+    {
+        return getPageableCommand(options, getLimit(options.getValues()), 
System.currentTimeMillis());
+    }
+
     private ResultMessage.Rows execute(Pageable command, ConsistencyLevel cl, 
List<ByteBuffer> variables, int limit, long now) throws 
RequestValidationException, RequestExecutionException
     {
         List<Row> rows;
@@ -288,23 +293,17 @@ public class SelectStatement implements CQLStatement, 
MeasurableForPreparedCache
         return rows;
     }
 
-    public ResultMessage.Rows executeInternal(QueryState state) throws 
RequestExecutionException, RequestValidationException
+    public ResultMessage.Rows executeInternal(QueryState state, QueryOptions 
options) throws RequestExecutionException, RequestValidationException
     {
         List<ByteBuffer> variables = Collections.emptyList();
         int limit = getLimit(variables);
-        int limitForQuery = updateLimitForQuery(limit);
         long now = System.currentTimeMillis();
-        List<Row> rows;
-        if (isKeyRange || usesSecondaryIndexing)
-        {
-            RangeSliceCommand command = getRangeCommand(variables, 
limitForQuery, now);
-            rows = command == null ? Collections.<Row>emptyList() : 
command.executeLocally();
-        }
-        else
-        {
-            List<ReadCommand> commands = getSliceCommands(variables, 
limitForQuery, now);
-            rows = commands == null ? Collections.<Row>emptyList() : 
readLocally(keyspace(), commands);
-        }
+        Pageable command = getPageableCommand(options, limit, now);
+        List<Row> rows = command == null
+                       ? Collections.<Row>emptyList()
+                       : (command instanceof Pageable.ReadCommands
+                          ? readLocally(keyspace(), 
((Pageable.ReadCommands)command).commands)
+                          : ((RangeSliceCommand)command).executeLocally());
 
         return processResults(rows, variables, limit, now);
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java
----------------------------------------------------------------------
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java
index 30e57d5..ef1c4a4 100644
--- a/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/TruncateStatement.java
@@ -77,7 +77,7 @@ public class TruncateStatement extends CFStatement implements 
CQLStatement
         return null;
     }
 
-    public ResultMessage executeInternal(QueryState state)
+    public ResultMessage executeInternal(QueryState state, QueryOptions 
options)
     {
         throw new UnsupportedOperationException();
     }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/362e5480/src/java/org/apache/cassandra/cql3/statements/UseStatement.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/cql3/statements/UseStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/UseStatement.java
index ee70f9d..efda72d 100644
--- a/src/java/org/apache/cassandra/cql3/statements/UseStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/UseStatement.java
@@ -59,7 +59,7 @@ public class UseStatement extends ParsedStatement implements 
CQLStatement
         return new ResultMessage.SetKeyspace(keyspace);
     }
 
-    public ResultMessage executeInternal(QueryState state)
+    public ResultMessage executeInternal(QueryState state, QueryOptions 
options)
     {
         // Internal queries are exclusively on the system keyspace and 'use' 
is thus useless
         throw new UnsupportedOperationException();

Reply via email to