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 2017/01/16 09:51:10 UTC
[12/16] cassandra git commit: Merge branch 'cassandra-3.0' into
cassandra-3.11
Merge branch 'cassandra-3.0' into cassandra-3.11
* cassandra-3.0:
Use timestamp from ClientState by default in AlterTableStatement
Fix test interference in ColumnFamilyStoreTest
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0b489776
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0b489776
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0b489776
Branch: refs/heads/trunk
Commit: 0b489776c63caeec2b63cd33d4b076d1048a651a
Parents: db2c50d 806ac77
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Mon Jan 16 10:46:32 2017 +0100
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Mon Jan 16 10:46:32 2017 +0100
----------------------------------------------------------------------
.../cassandra/cql3/statements/AlterKeyspaceStatement.java | 3 ++-
.../cassandra/cql3/statements/AlterTableStatement.java | 8 ++++----
.../apache/cassandra/cql3/statements/AlterTypeStatement.java | 3 ++-
.../apache/cassandra/cql3/statements/AlterViewStatement.java | 3 ++-
.../cassandra/cql3/statements/CreateAggregateStatement.java | 2 +-
.../cassandra/cql3/statements/CreateFunctionStatement.java | 2 +-
.../cassandra/cql3/statements/CreateIndexStatement.java | 3 ++-
.../cassandra/cql3/statements/CreateKeyspaceStatement.java | 2 +-
.../cassandra/cql3/statements/CreateTableStatement.java | 2 +-
.../cassandra/cql3/statements/CreateTriggerStatement.java | 3 ++-
.../cassandra/cql3/statements/CreateTypeStatement.java | 3 ++-
.../cassandra/cql3/statements/CreateViewStatement.java | 3 ++-
.../cassandra/cql3/statements/DropAggregateStatement.java | 3 ++-
.../cassandra/cql3/statements/DropFunctionStatement.java | 3 ++-
.../apache/cassandra/cql3/statements/DropIndexStatement.java | 4 ++--
.../cassandra/cql3/statements/DropKeyspaceStatement.java | 3 ++-
.../apache/cassandra/cql3/statements/DropTableStatement.java | 3 ++-
.../cassandra/cql3/statements/DropTriggerStatement.java | 3 ++-
.../apache/cassandra/cql3/statements/DropTypeStatement.java | 3 ++-
.../apache/cassandra/cql3/statements/DropViewStatement.java | 3 ++-
.../cassandra/cql3/statements/SchemaAlteringStatement.java | 6 +++---
21 files changed, 41 insertions(+), 27 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/AlterKeyspaceStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
index 48666be,6210d16..5f3b2ff
--- a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java
@@@ -65,10 -71,12 +65,10 @@@ public class AlterTableStatement extend
{
super(name);
this.oType = type;
- this.rawColumnName = columnName;
- this.validator = validator; // used only for ADD/ALTER commands
+ this.colNameList = colDataList;
this.attrs = attrs;
this.renames = renames;
- this.deleteTimestamp = deleteTimestamp == null ? FBUtilities.timestampMicros() : deleteTimestamp;
- this.isStatic = isStatic;
+ this.deleteTimestamp = deleteTimestamp;
}
public void checkAccess(ClientState state) throws UnauthorizedException, InvalidRequestException
@@@ -221,72 -218,66 +221,72 @@@
break;
case DROP:
- assert columnName != null;
if (!cfm.isCQLTable())
throw new InvalidRequestException("Cannot drop columns from a non-CQL3 table");
- if (def == null)
- throw new InvalidRequestException(String.format("Column %s was not found in table %s", columnName, columnFamily()));
- switch (def.kind)
+ for (AlterTableStatementColumn colData : colNameList)
{
- case PARTITION_KEY:
- case CLUSTERING:
- throw new InvalidRequestException(String.format("Cannot drop PRIMARY KEY part %s", columnName));
- case REGULAR:
- case STATIC:
- ColumnDefinition toDelete = null;
- for (ColumnDefinition columnDef : cfm.partitionColumns())
- {
- if (columnDef.name.equals(columnName))
- {
- toDelete = columnDef;
- break;
- }
- }
- assert toDelete != null;
- cfm.removeColumnDefinition(toDelete);
- cfm.recordColumnDrop(toDelete, deleteTimestamp == null ? queryState.getTimestamp() : deleteTimestamp);
- break;
- }
+ columnName = colData.getColumnName().getIdentifier(cfm);
+ def = cfm.getColumnDefinition(columnName);
- // If the dropped column is required by any secondary indexes
- // we reject the operation, as the indexes must be dropped first
- Indexes allIndexes = cfm.getIndexes();
- if (!allIndexes.isEmpty())
- {
- ColumnFamilyStore store = Keyspace.openAndGetStore(cfm);
- Set<IndexMetadata> dependentIndexes = store.indexManager.getDependentIndexes(def);
- if (!dependentIndexes.isEmpty())
- throw new InvalidRequestException(String.format("Cannot drop column %s because it has " +
- "dependent secondary indexes (%s)",
- def,
- dependentIndexes.stream()
- .map(i -> i.name)
- .collect(Collectors.joining(","))));
- }
+ if (def == null)
+ throw new InvalidRequestException(String.format("Column %s was not found in table %s", columnName, columnFamily()));
- // If a column is dropped which is included in a view, we don't allow the drop to take place.
- boolean rejectAlter = false;
- StringBuilder builder = new StringBuilder();
- for (ViewDefinition view : views)
- {
- if (!view.includes(columnName)) continue;
+ switch (def.kind)
+ {
+ case PARTITION_KEY:
+ case CLUSTERING:
+ throw new InvalidRequestException(String.format("Cannot drop PRIMARY KEY part %s", columnName));
+ case REGULAR:
+ case STATIC:
+ ColumnDefinition toDelete = null;
+ for (ColumnDefinition columnDef : cfm.partitionColumns())
+ {
+ if (columnDef.name.equals(columnName))
+ {
+ toDelete = columnDef;
+ break;
+ }
+ }
+ assert toDelete != null;
+ cfm.removeColumnDefinition(toDelete);
- cfm.recordColumnDrop(toDelete, deleteTimestamp);
++ cfm.recordColumnDrop(toDelete, deleteTimestamp == null ? queryState.getTimestamp() : deleteTimestamp);
+ break;
+ }
+
+ // If the dropped column is required by any secondary indexes
+ // we reject the operation, as the indexes must be dropped first
+ Indexes allIndexes = cfm.getIndexes();
+ if (!allIndexes.isEmpty())
+ {
+ ColumnFamilyStore store = Keyspace.openAndGetStore(cfm);
+ Set<IndexMetadata> dependentIndexes = store.indexManager.getDependentIndexes(def);
+ if (!dependentIndexes.isEmpty())
+ throw new InvalidRequestException(String.format("Cannot drop column %s because it has " +
+ "dependent secondary indexes (%s)",
+ def,
+ dependentIndexes.stream()
+ .map(i -> i.name)
+ .collect(Collectors.joining(","))));
+ }
+
+ // If a column is dropped which is included in a view, we don't allow the drop to take place.
+ boolean rejectAlter = false;
+ StringBuilder builder = new StringBuilder();
+ for (ViewDefinition view : views)
+ {
+ if (!view.includes(columnName)) continue;
+ if (rejectAlter)
+ builder.append(',');
+ rejectAlter = true;
+ builder.append(view.viewName);
+ }
if (rejectAlter)
- builder.append(',');
- rejectAlter = true;
- builder.append(view.viewName);
+ throw new InvalidRequestException(String.format("Cannot drop column %s, depended on by materialized views (%s.{%s})",
+ columnName.toString(),
+ keyspace(),
+ builder.toString()));
}
- if (rejectAlter)
- throw new InvalidRequestException(String.format("Cannot drop column %s, depended on by materialized views (%s.{%s})",
- columnName.toString(),
- keyspace(),
- builder.toString()));
break;
case OPTS:
if (attrs == null)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/AlterTypeStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/CreateAggregateStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/CreateIndexStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/CreateKeyspaceStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java
index 0b0b203,e7f8feb..ff9af75
--- a/src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java
@@@ -27,9 -27,10 +27,10 @@@ import org.apache.cassandra.db.marshal.
import org.apache.cassandra.db.marshal.UserType;
import org.apache.cassandra.exceptions.*;
import org.apache.cassandra.schema.KeyspaceMetadata;
+import org.apache.cassandra.schema.Types;
import org.apache.cassandra.service.ClientState;
import org.apache.cassandra.service.MigrationManager;
+ import org.apache.cassandra.service.QueryState;
import org.apache.cassandra.transport.Event;
public class CreateTypeStatement extends SchemaAlteringStatement
@@@ -114,10 -110,10 +115,10 @@@
for (CQL3Type.Raw type : columnTypes)
types.add(type.prepare(keyspace()).getType());
- return new UserType(name.getKeyspace(), name.getUserTypeName(), names, types);
+ return new UserType(name.getKeyspace(), name.getUserTypeName(), columnNames, types, true);
}
- public Event.SchemaChange announceMigration(boolean isLocalOnly) throws InvalidRequestException, ConfigurationException
+ public Event.SchemaChange announceMigration(QueryState queryState, boolean isLocalOnly) throws InvalidRequestException, ConfigurationException
{
KeyspaceMetadata ksm = Schema.instance.getKSMetaData(name.getKeyspace());
assert ksm != null; // should haven't validate otherwise
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
index 3cc0d97,708d551..668f791
--- a/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/CreateViewStatement.java
@@@ -42,7 -41,9 +42,8 @@@ import org.apache.cassandra.exceptions.
import org.apache.cassandra.exceptions.UnauthorizedException;
import org.apache.cassandra.schema.TableParams;
import org.apache.cassandra.service.ClientState;
-import org.apache.cassandra.service.ClientWarn;
import org.apache.cassandra.service.MigrationManager;
+ import org.apache.cassandra.service.QueryState;
import org.apache.cassandra.thrift.ThriftValidation;
import org.apache.cassandra.transport.Event;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java
index 70a86db,35aee3c..fcd06d4
--- a/src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java
@@@ -64,9 -64,9 +64,9 @@@ public class DropIndexStatement extend
}
@Override
- public ResultMessage execute(QueryState state, QueryOptions options) throws RequestValidationException
+ public ResultMessage execute(QueryState state, QueryOptions options, long queryStartNanoTime) throws RequestValidationException
{
- Event.SchemaChange ce = announceMigration(false);
+ Event.SchemaChange ce = announceMigration(state, false);
return ce == null ? null : new ResultMessage.SchemaChange(ce);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/DropKeyspaceStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/DropViewStatement.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b489776/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java
index 139c566,62ba0ae..4a20451
--- a/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java
@@@ -84,9 -84,9 +84,9 @@@ public abstract class SchemaAlteringSta
*
* @throws RequestValidationException
*/
- public abstract Event.SchemaChange announceMigration(boolean isLocalOnly) throws RequestValidationException;
+ protected abstract Event.SchemaChange announceMigration(QueryState queryState, boolean isLocalOnly) throws RequestValidationException;
- public ResultMessage execute(QueryState state, QueryOptions options) throws RequestValidationException
+ public ResultMessage execute(QueryState state, QueryOptions options, long queryStartNanoTime) throws RequestValidationException
{
// If an IF [NOT] EXISTS clause was used, this may not result in an actual schema change. To avoid doing
// extra work in the drivers to handle schema changes, we return an empty message in this case. (CASSANDRA-7600)