Don't return ReversedType in CQL3 resultSet patch by slebresne; reviewed by tjake for CASSANDRA-4717
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/0e0213b6 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/0e0213b6 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/0e0213b6 Branch: refs/heads/trunk Commit: 0e0213b60468232b43b3d9661c75b1021564a853 Parents: 6ddcf03 Author: Sylvain Lebresne <[email protected]> Authored: Wed Oct 3 17:24:23 2012 +0200 Committer: Sylvain Lebresne <[email protected]> Committed: Wed Oct 3 17:24:43 2012 +0200 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/cql3/QueryProcessor.java | 2 +- .../cassandra/cql3/statements/SelectStatement.java | 21 ++++++++++----- .../apache/cassandra/db/marshal/ReversedType.java | 3 +- 4 files changed, 17 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e0213b6/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index e922c3c..292db49 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -14,6 +14,7 @@ * (CLI) display elapsed time in 2 fraction digits (CASSANDRA-3460) * add authentication support to sstableloader (CASSANDRA-4712) * Fix CQL3 'is reversed' logic (CASSANDRA-4716) + * (CQL3) Don't return ReversedType in result set metadata (CASSANDRA-4717) Merged from 1.0: * Switch from NBHM to CHM in MessagingService's callback map, which prevents OOM in long-running instances (CASSANDRA-4708) http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e0213b6/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 6c155ed..9522c61 100644 --- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java +++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java @@ -206,7 +206,7 @@ public class QueryProcessor List<String> var_names = new ArrayList<String>(prepared.boundNames.size()); for (CFDefinition.Name n : prepared.boundNames) { - var_types.add(TypeParser.getShortName(n.type)); + var_types.add(SelectStatement.getShortTypeName(n.type)); var_names.add(n.name.toString()); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e0213b6/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 fac0deb..d288294 100644 --- a/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java +++ b/src/java/org/apache/cassandra/cql3/statements/SelectStatement.java @@ -168,12 +168,19 @@ public class SelectStatement implements CQLStatement return process(rows, createSchema(), Collections.<ByteBuffer>emptyList()); } + public static String getShortTypeName(AbstractType<?> type) + { + if (type instanceof ReversedType) + type = ((ReversedType)type).baseType; + return TypeParser.getShortName(type); + } + private CqlMetadata createSchema() { return new CqlMetadata(new HashMap<ByteBuffer, String>(), new HashMap<ByteBuffer, String>(), - TypeParser.getShortName(cfDef.cfm.comparator), - TypeParser.getShortName(cfDef.cfm.getDefaultValidator())); + getShortTypeName(cfDef.cfm.comparator), + getShortTypeName(cfDef.cfm.getDefaultValidator())); } public String keyspace() @@ -616,22 +623,22 @@ public class SelectStatement implements CQLStatement if (p.right.hasFunction()) { ByteBuffer nameAsRequested = ByteBufferUtil.bytes(p.right.toString()); - schema.name_types.put(nameAsRequested, TypeParser.getShortName(cfDef.definitionType)); + schema.name_types.put(nameAsRequested, getShortTypeName(cfDef.definitionType)); switch (p.right.function()) { case WRITE_TIME: - schema.value_types.put(nameAsRequested, TypeParser.getShortName(LongType.instance)); + schema.value_types.put(nameAsRequested, getShortTypeName(LongType.instance)); break; case TTL: - schema.value_types.put(nameAsRequested, TypeParser.getShortName(Int32Type.instance)); + schema.value_types.put(nameAsRequested, getShortTypeName(Int32Type.instance)); break; } } else { ByteBuffer nameAsRequested = p.right.id().key; - schema.name_types.put(nameAsRequested, TypeParser.getShortName(cfDef.getNameComparatorForResultSet(p.left))); - schema.value_types.put(nameAsRequested, TypeParser.getShortName(p.left.type)); + schema.name_types.put(nameAsRequested, getShortTypeName(cfDef.getNameComparatorForResultSet(p.left))); + schema.value_types.put(nameAsRequested, getShortTypeName(p.left.type)); } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/0e0213b6/src/java/org/apache/cassandra/db/marshal/ReversedType.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/marshal/ReversedType.java b/src/java/org/apache/cassandra/db/marshal/ReversedType.java index a2eec15..6165f3c 100644 --- a/src/java/org/apache/cassandra/db/marshal/ReversedType.java +++ b/src/java/org/apache/cassandra/db/marshal/ReversedType.java @@ -30,8 +30,7 @@ public class ReversedType<T> extends AbstractType<T> // interning instances private static final Map<AbstractType<?>, ReversedType> instances = new HashMap<AbstractType<?>, ReversedType>(); - // package protected for unit tests sake - final AbstractType<T> baseType; + public final AbstractType<T> baseType; public static <T> ReversedType<T> getInstance(TypeParser parser) throws ConfigurationException {
