Updated Branches: refs/heads/trunk bfe1e1cef -> 6158c6428
Fix binary protocol versioning Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6158c642 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6158c642 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6158c642 Branch: refs/heads/trunk Commit: 6158c6428ea72311d7dc477df871aa99857d567a Parents: bfe1e1c Author: Sylvain Lebresne <[email protected]> Authored: Wed Jul 3 14:54:18 2013 +0200 Committer: Sylvain Lebresne <[email protected]> Committed: Wed Jul 3 14:54:18 2013 +0200 ---------------------------------------------------------------------- src/java/org/apache/cassandra/cql3/ResultSet.java | 4 ++-- .../cassandra/transport/messages/ResultMessage.java | 11 +++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/6158c642/src/java/org/apache/cassandra/cql3/ResultSet.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/cql3/ResultSet.java b/src/java/org/apache/cassandra/cql3/ResultSet.java index 21ef8e8..6f0dcb9 100644 --- a/src/java/org/apache/cassandra/cql3/ResultSet.java +++ b/src/java/org/apache/cassandra/cql3/ResultSet.java @@ -218,7 +218,7 @@ public class ResultSet { public static final CBCodec<Metadata> codec = new Codec(); - public static final Metadata empty = new Metadata(EnumSet.of(Flag.NO_METADATA), 0); + public static final Metadata EMPTY = new Metadata(EnumSet.of(Flag.NO_METADATA), 0); public final EnumSet<Flag> flags; public final List<ColumnSpecification> names; @@ -345,7 +345,7 @@ public class ResultSet ChannelBuffer header = ChannelBuffers.buffer(8); - assert version > 1 || (!m.flags.contains(Flag.HAS_MORE_PAGES) && !noMetadata); + assert version > 1 || (!m.flags.contains(Flag.HAS_MORE_PAGES) && !noMetadata): "version = " + version + ", flags = " + m.flags; header.writeInt(Flag.serialize(m.flags)); header.writeInt(m.columnCount); http://git-wip-us.apache.org/repos/asf/cassandra/blob/6158c642/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 9300f42..108572c 100644 --- a/src/java/org/apache/cassandra/transport/messages/ResultMessage.java +++ b/src/java/org/apache/cassandra/transport/messages/ResultMessage.java @@ -244,7 +244,10 @@ public abstract class ResultMessage extends Message.Response { MD5Digest id = MD5Digest.wrap(CBUtil.readBytes(body)); ResultSet.Metadata metadata = ResultSet.Metadata.codec.decode(body, version); - ResultSet.Metadata resultMetadata = ResultSet.Metadata.codec.decode(body, version); + + ResultSet.Metadata resultMetadata = ResultSet.Metadata.EMPTY; + if (version > 1) + resultMetadata = ResultSet.Metadata.codec.decode(body, version); return new Prepared(id, -1, metadata, resultMetadata); } @@ -258,7 +261,7 @@ public abstract class ResultMessage extends Message.Response return ChannelBuffers.wrappedBuffer(CBUtil.bytesToCB(prepared.statementId.bytes), ResultSet.Metadata.codec.encode(prepared.metadata, version), - ResultSet.Metadata.codec.encode(prepared.resultMetadata, version)); + version > 1 ? ResultSet.Metadata.codec.encode(prepared.resultMetadata, version) : ChannelBuffers.EMPTY_BUFFER); } }; @@ -276,7 +279,7 @@ public abstract class ResultMessage extends Message.Response public static Prepared forThrift(int statementId, List<ColumnSpecification> names) { - return new Prepared(null, statementId, new ResultSet.Metadata(names), ResultSet.Metadata.empty); + return new Prepared(null, statementId, new ResultSet.Metadata(names), ResultSet.Metadata.EMPTY); } private Prepared(MD5Digest statementId, int thriftStatementId, ResultSet.Metadata metadata, ResultSet.Metadata resultMetadata) @@ -291,7 +294,7 @@ public abstract class ResultMessage extends Message.Response private static ResultSet.Metadata extractResultMetadata(CQLStatement statement) { if (!(statement instanceof SelectStatement)) - return ResultSet.Metadata.empty; + return ResultSet.Metadata.EMPTY; return ((SelectStatement)statement).getResultMetadata(); }
