Repository: cassandra Updated Branches: refs/heads/trunk eb56b490b -> 51db18cf0
Change schema change response in native protocol v3 patch by slebresne; reviewed by thobbs for CASSANDRA-7413 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2fe6de6a Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2fe6de6a Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2fe6de6a Branch: refs/heads/trunk Commit: 2fe6de6a11850f2b92c5364d8b78625f297c7f55 Parents: 9a6298e Author: Sylvain Lebresne <sylv...@datastax.com> Authored: Fri Jun 20 18:32:45 2014 +0200 Committer: Sylvain Lebresne <sylv...@datastax.com> Committed: Fri Jun 20 18:32:45 2014 +0200 ---------------------------------------------------------------------- CHANGES.txt | 3 +- doc/native_protocol_v3.spec | 29 ++++++---------- src/java/org/apache/cassandra/cql3/UTName.java | 5 +++ .../cql3/statements/AlterKeyspaceStatement.java | 6 ++-- .../cql3/statements/AlterTableStatement.java | 6 ++-- .../cql3/statements/AlterTypeStatement.java | 6 ++-- .../cql3/statements/CreateIndexStatement.java | 6 ++-- .../statements/CreateKeyspaceStatement.java | 6 ++-- .../cql3/statements/CreateTableStatement.java | 6 ++-- .../cql3/statements/CreateTriggerStatement.java | 6 ++-- .../cql3/statements/CreateTypeStatement.java | 6 ++-- .../cql3/statements/DropIndexStatement.java | 6 ++-- .../cql3/statements/DropKeyspaceStatement.java | 6 ++-- .../cql3/statements/DropTableStatement.java | 6 ++-- .../cql3/statements/DropTriggerStatement.java | 6 ++-- .../cql3/statements/DropTypeStatement.java | 6 ++-- .../statements/SchemaAlteringStatement.java | 9 +++-- .../org/apache/cassandra/transport/Event.java | 6 ++-- .../transport/messages/ResultMessage.java | 35 ++++---------------- 19 files changed, 70 insertions(+), 95 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 4298c37..7288de6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,4 @@ -2.1.0 +2.1.0-rc2 * Modify reconcile logic to always pick a tombstone over a counter cell (CASSANDRA-7346) * Avoid incremental compaction on Windows (CASSANDRA-7365) @@ -16,6 +16,7 @@ * RefCount native frames from netty (CASSANDRA-7245) * Use tarball dir instead of /var for default paths (CASSANDRA-7136) * Remove rows_per_partition_to_cache keyword (CASSANDRA-7193) + * Fix schema change response in native protocol v3 (CASSANDRA-7413) Merged from 2.0: * Fix assertion error in CL.ANY timeout handling (CASSANDRA-7364) * Add per-CF range read request latency metrics (CASSANDRA-7338) http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/doc/native_protocol_v3.spec ---------------------------------------------------------------------- diff --git a/doc/native_protocol_v3.spec b/doc/native_protocol_v3.spec index 5e9f439..c26feeb 100644 --- a/doc/native_protocol_v3.spec +++ b/doc/native_protocol_v3.spec @@ -639,17 +639,10 @@ Table of Contents 4.2.5.5. Schema_change The result to a schema altering query (creation/update/drop of a - keyspace/table/index). The body (after the kind [int]) is composed of 3 - [string]: - <change><keyspace><table> - where: - - <change> describe the type of change that has occured. It can be one of - "CREATED", "UPDATED" or "DROPPED". - - <keyspace> is the name of the affected keyspace or the keyspace of the - affected table. - - <table> is the name of the affected table. <table> will be empty (i.e. - the empty string "") if the change was affecting a keyspace and not a - table. + keyspace/table/index). The body (after the kind [int]) is the same + as the body for a "SCHEMA_CHANGE" event, so 3 strings: + <change_type><target><options> + Please refer to the section 4.2.6 below for the meaning of those fields. Note that queries to create and drop an index are considered as change updating the table the index is on. @@ -674,11 +667,11 @@ Table of Contents concerned node. - "SCHEMA_CHANGE": events related to schema change. After the event type, the rest of the message will be <change_type><target><options> where: - - <change_type> is the type of changed involved. It will be one of - "CREATED", "UPDATED" or "DROPPED". - - <target> can be one of "KEYSPACE", "TABLE" or "TYPE" and describes - what has been modified ("TYPE" stands for modifications related to - user types). + - <change_type> is a [string] representing the type of changed involved. + It will be one of "CREATED", "UPDATED" or "DROPPED". + - <target> is a [string] that can be one of "KEYSPACE", "TABLE" or "TYPE" + and describes what has been modified ("TYPE" stands for modifications + related to user types). - <options> depends on the preceding <target>. If <target> is "KEYSPACE", then <options> will be a single [string] representing the keyspace changed. Otherwise, if <target> is "TABLE" or "TYPE", then @@ -916,6 +909,6 @@ Table of Contents * QUERY, EXECUTE and BATCH messages can now optionally provide the names for the values of the query. As this feature is optionally enabled by clients, implementing it is at the discretion of the client. - * The format of "SCHEMA_CHANGE" notifications has been modified, and now includes changes related to - user types. + * The format of "Schema_change" results (Section 4.2.5.5) and "SCHEMA_CHANGE" events (Section 4.2.6) + has been modified, and now includes changes related to user types. http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/UTName.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/UTName.java b/src/java/org/apache/cassandra/cql3/UTName.java index a157720..c856797 100644 --- a/src/java/org/apache/cassandra/cql3/UTName.java +++ b/src/java/org/apache/cassandra/cql3/UTName.java @@ -50,6 +50,11 @@ public class UTName return utName.bytes; } + public String getStringTypeName() + { + return utName.toString(); + } + @Override public String toString() { http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/AlterKeyspaceStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/AlterKeyspaceStatement.java b/src/java/org/apache/cassandra/cql3/statements/AlterKeyspaceStatement.java index a940f9e..27cda49 100644 --- a/src/java/org/apache/cassandra/cql3/statements/AlterKeyspaceStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/AlterKeyspaceStatement.java @@ -27,7 +27,7 @@ import org.apache.cassandra.locator.AbstractReplicationStrategy; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.service.StorageService; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; public class AlterKeyspaceStatement extends SchemaAlteringStatement { @@ -89,8 +89,8 @@ public class AlterKeyspaceStatement extends SchemaAlteringStatement MigrationManager.announceKeyspaceUpdate(attrs.asKSMetadataUpdate(ksm), isLocalOnly); } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.UPDATED, keyspace()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java index cff0e8f..273ee11 100644 --- a/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/AlterTableStatement.java @@ -29,7 +29,7 @@ import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.exceptions.*; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; import static org.apache.cassandra.thrift.ThriftValidation.validateColumnFamily; @@ -249,8 +249,8 @@ public class AlterTableStatement extends SchemaAlteringStatement validator); } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.UPDATED, Event.SchemaChange.Target.TABLE, keyspace(), columnFamily()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/AlterTypeStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/AlterTypeStatement.java b/src/java/org/apache/cassandra/cql3/statements/AlterTypeStatement.java index 3cac7cc..94f7c87 100644 --- a/src/java/org/apache/cassandra/cql3/statements/AlterTypeStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/AlterTypeStatement.java @@ -28,7 +28,7 @@ import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.exceptions.*; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; public abstract class AlterTypeStatement extends SchemaAlteringStatement { @@ -78,9 +78,9 @@ public abstract class AlterTypeStatement extends SchemaAlteringStatement // It doesn't really change anything anyway. } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.UPDATED, Event.SchemaChange.Target.TYPE, keyspace(), name.getStringTypeName()); } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/CreateIndexStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateIndexStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateIndexStatement.java index b2e8d59..3f2635f 100644 --- a/src/java/org/apache/cassandra/cql3/statements/CreateIndexStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/CreateIndexStatement.java @@ -35,7 +35,7 @@ import org.apache.cassandra.cql3.*; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.thrift.ThriftValidation; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; /** A <code>CREATE INDEX</code> statement parsed from a CQL query. */ public class CreateIndexStatement extends SchemaAlteringStatement @@ -150,9 +150,9 @@ public class CreateIndexStatement extends SchemaAlteringStatement MigrationManager.announceColumnFamilyUpdate(cfm, false, isLocalOnly); } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { // Creating an index is akin to updating the CF - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.UPDATED, Event.SchemaChange.Target.TABLE, keyspace(), columnFamily()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/CreateKeyspaceStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateKeyspaceStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateKeyspaceStatement.java index c528e16..78263b6 100644 --- a/src/java/org/apache/cassandra/cql3/statements/CreateKeyspaceStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/CreateKeyspaceStatement.java @@ -30,7 +30,7 @@ import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.service.StorageService; import org.apache.cassandra.thrift.ThriftValidation; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; /** A <code>CREATE KEYSPACE</code> statement parsed from a CQL query. */ public class CreateKeyspaceStatement extends SchemaAlteringStatement @@ -110,8 +110,8 @@ public class CreateKeyspaceStatement extends SchemaAlteringStatement } } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.CREATED; + return new Event.SchemaChange(Event.SchemaChange.Change.CREATED, keyspace()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java index d764845..3a39e59 100644 --- a/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/CreateTableStatement.java @@ -38,7 +38,7 @@ import org.apache.cassandra.io.compress.CompressionParameters; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.thrift.CqlResult; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; import org.apache.cassandra.utils.ByteBufferUtil; /** A <code>CREATE TABLE</code> parsed from a CQL query statement. */ @@ -118,9 +118,9 @@ public class CreateTableStatement extends SchemaAlteringStatement } } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.CREATED; + return new Event.SchemaChange(Event.SchemaChange.Change.CREATED, Event.SchemaChange.Target.TABLE, keyspace(), columnFamily()); } /** http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java index e99da8a..9b7313f 100644 --- a/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/CreateTriggerStatement.java @@ -30,7 +30,7 @@ import org.apache.cassandra.exceptions.UnauthorizedException; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.thrift.ThriftValidation; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; import org.apache.cassandra.triggers.TriggerExecutor; public class CreateTriggerStatement extends SchemaAlteringStatement @@ -73,8 +73,8 @@ public class CreateTriggerStatement extends SchemaAlteringStatement MigrationManager.announceColumnFamilyUpdate(cfm, false, isLocalOnly); } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.UPDATED, Event.SchemaChange.Target.TABLE, keyspace(), columnFamily()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java b/src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java index 41116f5..1ddc8e6 100644 --- a/src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/CreateTypeStatement.java @@ -29,7 +29,7 @@ import org.apache.cassandra.db.marshal.UserType; import org.apache.cassandra.exceptions.*; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; public class CreateTypeStatement extends SchemaAlteringStatement { @@ -87,9 +87,9 @@ public class CreateTypeStatement extends SchemaAlteringStatement } } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.CREATED, Event.SchemaChange.Target.TYPE, keyspace(), name.getStringTypeName()); } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java b/src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java index 4321886..b8a4c9a 100644 --- a/src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/DropIndexStatement.java @@ -26,7 +26,7 @@ import org.apache.cassandra.cql3.*; import org.apache.cassandra.exceptions.*; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; public class DropIndexStatement extends SchemaAlteringStatement { @@ -54,10 +54,10 @@ public class DropIndexStatement extends SchemaAlteringStatement // validated in findIndexedCf() } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { // Dropping an index is akin to updating the CF - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.UPDATED, Event.SchemaChange.Target.TABLE, keyspace(), columnFamily()); } public void announceMigration(boolean isLocalOnly) throws InvalidRequestException, ConfigurationException http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/DropKeyspaceStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/DropKeyspaceStatement.java b/src/java/org/apache/cassandra/cql3/statements/DropKeyspaceStatement.java index 6c99bdd..0a3a510 100644 --- a/src/java/org/apache/cassandra/cql3/statements/DropKeyspaceStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/DropKeyspaceStatement.java @@ -25,7 +25,7 @@ import org.apache.cassandra.exceptions.UnauthorizedException; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.thrift.ThriftValidation; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; public class DropKeyspaceStatement extends SchemaAlteringStatement { @@ -68,8 +68,8 @@ public class DropKeyspaceStatement extends SchemaAlteringStatement } } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.DROPPED; + return new Event.SchemaChange(Event.SchemaChange.Change.DROPPED, keyspace()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/DropTableStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/DropTableStatement.java b/src/java/org/apache/cassandra/cql3/statements/DropTableStatement.java index 443c6d3..49979b1 100644 --- a/src/java/org/apache/cassandra/cql3/statements/DropTableStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/DropTableStatement.java @@ -24,7 +24,7 @@ import org.apache.cassandra.exceptions.InvalidRequestException; import org.apache.cassandra.exceptions.UnauthorizedException; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; public class DropTableStatement extends SchemaAlteringStatement { @@ -67,8 +67,8 @@ public class DropTableStatement extends SchemaAlteringStatement } } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.DROPPED; + return new Event.SchemaChange(Event.SchemaChange.Change.DROPPED, Event.SchemaChange.Target.TABLE, keyspace(), columnFamily()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java b/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java index ff7948f..594aeac 100644 --- a/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/DropTriggerStatement.java @@ -29,7 +29,7 @@ import org.apache.cassandra.exceptions.UnauthorizedException; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; import org.apache.cassandra.thrift.ThriftValidation; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; public class DropTriggerStatement extends SchemaAlteringStatement { @@ -62,8 +62,8 @@ public class DropTriggerStatement extends SchemaAlteringStatement MigrationManager.announceColumnFamilyUpdate(cfm, false, isLocalOnly); } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.UPDATED, Event.SchemaChange.Target.TABLE, keyspace(), columnFamily()); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java index 4036d33..5acfdea 100644 --- a/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/DropTypeStatement.java @@ -24,7 +24,7 @@ import org.apache.cassandra.db.marshal.*; import org.apache.cassandra.exceptions.*; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.MigrationManager; -import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.transport.Event; public class DropTypeStatement extends SchemaAlteringStatement { @@ -126,9 +126,9 @@ public class DropTypeStatement extends SchemaAlteringStatement return false; } - public ResultMessage.SchemaChange.Change changeType() + public Event.SchemaChange changeEvent() { - return ResultMessage.SchemaChange.Change.UPDATED; + return new Event.SchemaChange(Event.SchemaChange.Change.DROPPED, Event.SchemaChange.Target.TYPE, keyspace(), name.getStringTypeName()); } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/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 7d454a5..e70aac9 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SchemaAlteringStatement.java @@ -23,6 +23,7 @@ import org.apache.cassandra.cql3.QueryOptions; import org.apache.cassandra.exceptions.*; import org.apache.cassandra.service.ClientState; import org.apache.cassandra.service.QueryState; +import org.apache.cassandra.transport.Event; import org.apache.cassandra.transport.messages.ResultMessage; /** @@ -62,15 +63,14 @@ public abstract class SchemaAlteringStatement extends CFStatement implements CQL return new Prepared(this); } - public abstract ResultMessage.SchemaChange.Change changeType(); + public abstract Event.SchemaChange changeEvent(); public abstract void announceMigration(boolean isLocalOnly) throws RequestValidationException; public ResultMessage execute(QueryState state, QueryOptions options) throws RequestValidationException { announceMigration(false); - String tableName = cfName == null || columnFamily() == null ? "" : columnFamily(); - return new ResultMessage.SchemaChange(changeType(), keyspace(), tableName); + return new ResultMessage.SchemaChange(changeEvent()); } public ResultMessage executeInternal(QueryState state, QueryOptions options) @@ -78,8 +78,7 @@ public abstract class SchemaAlteringStatement extends CFStatement implements CQL try { announceMigration(true); - String tableName = cfName == null || columnFamily() == null ? "" : columnFamily(); - return new ResultMessage.SchemaChange(changeType(), keyspace(), tableName); + return new ResultMessage.SchemaChange(changeEvent()); } catch (RequestValidationException e) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/transport/Event.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/Event.java b/src/java/org/apache/cassandra/transport/Event.java index 7ec026e..3fa2733 100644 --- a/src/java/org/apache/cassandra/transport/Event.java +++ b/src/java/org/apache/cassandra/transport/Event.java @@ -226,7 +226,7 @@ public abstract class Event } // Assumes the type has already been deserialized - private static SchemaChange deserializeEvent(ByteBuf cb, int version) + public static SchemaChange deserializeEvent(ByteBuf cb, int version) { Change change = CBUtil.readEnumValue(Change.class, cb); if (version >= 3) @@ -244,7 +244,7 @@ public abstract class Event } } - protected void serializeEvent(ByteBuf dest, int version) + public void serializeEvent(ByteBuf dest, int version) { if (version >= 3) { @@ -262,7 +262,7 @@ public abstract class Event } } - protected int eventSerializedSize(int version) + public int eventSerializedSize(int version) { if (version >= 3) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/2fe6de6a/src/java/org/apache/cassandra/transport/messages/ResultMessage.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/transport/messages/ResultMessage.java b/src/java/org/apache/cassandra/transport/messages/ResultMessage.java index 9fe1d40..935a139 100644 --- a/src/java/org/apache/cassandra/transport/messages/ResultMessage.java +++ b/src/java/org/apache/cassandra/transport/messages/ResultMessage.java @@ -344,56 +344,33 @@ public abstract class ResultMessage extends Message.Response public static class SchemaChange extends ResultMessage { - public enum Change { CREATED, UPDATED, DROPPED } + public final Event.SchemaChange change; - public final Change change; - public final String keyspace; - public final String columnFamily; - - public SchemaChange(Change change, String keyspace) - { - this(change, keyspace, ""); - } - - public SchemaChange(Change change, String keyspace, String columnFamily) + public SchemaChange(Event.SchemaChange change) { super(Kind.SCHEMA_CHANGE); this.change = change; - this.keyspace = keyspace; - this.columnFamily = columnFamily; } public static final Message.Codec<ResultMessage> subcodec = new Message.Codec<ResultMessage>() { public ResultMessage decode(ByteBuf body, int version) { - Change change = CBUtil.readEnumValue(Change.class, body); - String keyspace = CBUtil.readString(body); - String columnFamily = CBUtil.readString(body); - return new SchemaChange(change, keyspace, columnFamily); - + return new SchemaChange(Event.SchemaChange.deserializeEvent(body, version)); } public void encode(ResultMessage msg, ByteBuf dest, int version) { assert msg instanceof SchemaChange; SchemaChange scm = (SchemaChange)msg; - - CBUtil.writeEnumValue(scm.change, dest); - CBUtil.writeString(scm.keyspace, dest); - CBUtil.writeString(scm.columnFamily, dest); + scm.change.serializeEvent(dest, version); } public int encodedSize(ResultMessage msg, int version) { assert msg instanceof SchemaChange; SchemaChange scm = (SchemaChange)msg; - - int size = 0; - size += CBUtil.sizeOfEnumValue(scm.change); - size += CBUtil.sizeOfString(scm.keyspace); - size += CBUtil.sizeOfString(scm.columnFamily); - return size; + return scm.change.eventSerializedSize(version); } }; @@ -405,7 +382,7 @@ public abstract class ResultMessage extends Message.Response @Override public String toString() { - return "RESULT schema change " + change + " on " + keyspace + (columnFamily.isEmpty() ? "" : "." + columnFamily); + return "RESULT schema change " + change; } } }