Merge branch cassandra-2.1 into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/67feb71e Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/67feb71e Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/67feb71e Branch: refs/heads/trunk Commit: 67feb71eef95abc738048e7fecedff41355977ac Parents: c0aa746 4c22b16 Author: Pavel Yaskevich <[email protected]> Authored: Thu Mar 13 14:21:49 2014 -0700 Committer: Pavel Yaskevich <[email protected]> Committed: Thu Mar 13 14:21:49 2014 -0700 ---------------------------------------------------------------------- CHANGES.txt | 11 ++ ...assandra-driver-internal-only-1.0.2.post.zip | Bin 95836 -> 95846 bytes pylib/cqlshlib/cql3handling.py | 6 +- .../apache/cassandra/db/ColumnFamilyStore.java | 2 +- .../db/composites/AbstractComposite.java | 5 +- .../db/marshal/AbstractCompositeType.java | 63 +++-------- .../cassandra/db/marshal/CollectionType.java | 6 - .../cassandra/db/marshal/CompositeType.java | 12 +- .../db/marshal/DynamicCompositeType.java | 14 +-- .../serializers/CollectionSerializer.java | 6 - .../cassandra/serializers/ListSerializer.java | 9 +- .../cassandra/serializers/MapSerializer.java | 17 +-- .../cassandra/serializers/SetSerializer.java | 9 +- .../cassandra/streaming/StreamWriter.java | 8 +- .../apache/cassandra/utils/ByteBufferUtil.java | 37 +++++++ .../org/apache/cassandra/utils/FBUtilities.java | 2 +- .../org/apache/cassandra/stress/Operation.java | 109 +++++++++++++------ .../apache/cassandra/stress/StressAction.java | 4 +- .../cassandra/stress/generatedata/RowGen.java | 1 + .../generatedata/RowGenDistributedSize.java | 7 ++ .../stress/operations/CqlCounterAdder.java | 21 ++-- .../stress/operations/CqlCounterGetter.java | 13 ++- .../operations/CqlIndexedRangeSlicer.java | 18 +-- .../stress/operations/CqlInserter.java | 10 +- .../stress/operations/CqlOperation.java | 68 ++++++++---- .../stress/operations/CqlRangeSlicer.java | 8 +- .../cassandra/stress/operations/CqlReader.java | 12 +- .../stress/operations/ThriftCounterAdder.java | 12 +- .../stress/operations/ThriftCounterGetter.java | 15 +-- .../operations/ThriftIndexedRangeSlicer.java | 5 +- .../stress/operations/ThriftInserter.java | 6 +- .../stress/operations/ThriftMultiGetter.java | 3 +- .../stress/operations/ThriftRangeSlicer.java | 3 +- .../stress/operations/ThriftReader.java | 16 +-- .../cassandra/stress/settings/Command.java | 72 +++++++----- .../cassandra/stress/settings/Option.java | 1 + .../stress/settings/OptionDataGen.java | 5 + .../stress/settings/OptionDistribution.java | 13 ++- .../cassandra/stress/settings/OptionMulti.java | 39 ++++++- .../stress/settings/OptionReplication.java | 2 +- .../cassandra/stress/settings/OptionSimple.java | 2 +- .../stress/settings/SettingsColumn.java | 29 +++-- .../stress/settings/SettingsCommand.java | 30 ++--- .../stress/settings/SettingsCommandMixed.java | 46 ++++---- .../stress/settings/SettingsCommandMulti.java | 90 --------------- .../cassandra/stress/settings/SettingsKey.java | 2 +- .../cassandra/stress/settings/SettingsMisc.java | 4 +- .../cassandra/stress/settings/SettingsMode.java | 31 +++++- .../stress/settings/SettingsSchema.java | 7 +- .../stress/settings/SettingsTransport.java | 2 +- .../stress/settings/StressSettings.java | 30 +++-- .../cassandra/stress/util/JavaDriverClient.java | 4 +- 52 files changed, 506 insertions(+), 441 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/CHANGES.txt ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/Operation.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java ---------------------------------------------------------------------- diff --cc tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java index 910b6ed,9a8c37d..4e333a4 --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterAdder.java @@@ -22,9 -22,12 +22,9 @@@ package org.apache.cassandra.stress.ope import java.nio.ByteBuffer; - import java.util.Collections; + import java.util.ArrayList; -import java.util.Collections; import java.util.List; -import org.apache.cassandra.utils.ByteBufferUtil; - public class CqlCounterAdder extends CqlOperation<Integer> { public CqlCounterAdder(State state, long idx) @@@ -35,11 -38,14 +35,7 @@@ @Override protected String buildQuery() { - String counterCF = "Counter3"; - - StringBuilder query = new StringBuilder("UPDATE ").append(wrapInQuotes(counterCF)); - - query.append(" SET "); - String counterCF = state.isCql2() ? state.type.table : "Counter3"; - - StringBuilder query = new StringBuilder("UPDATE ").append(wrapInQuotesIfRequired(counterCF)); - - if (state.isCql2()) - query.append(" USING CONSISTENCY ").append(state.settings.command.consistencyLevel); - - query.append(" SET "); ++ StringBuilder query = new StringBuilder("UPDATE \"Counter3\" SET "); // TODO : increment distribution subset of columns for (int i = 0; i < state.settings.columns.maxColumnsPerKey; i++) @@@ -47,7 -53,7 +43,8 @@@ if (i > 0) query.append(","); - query.append('C').append(i).append("=C").append(i).append("+1"); - query.append('C').append(i).append("=C").append(i).append("+?"); ++ String name = state.settings.columns.namestrs.get(i); ++ query.append(name).append("=").append(name).append("+?"); } query.append(" WHERE KEY=?"); return query.toString(); http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java ---------------------------------------------------------------------- diff --cc tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java index 6186667,88d622e..28e6a12 --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlCounterGetter.java @@@ -42,7 -42,22 +42,12 @@@ public class CqlCounterGetter extends C @Override protected String buildQuery() { - return "SELECT * FROM \"Counter3\" USING CONSISTENCY " + state.settings.command.consistencyLevel + " WHERE KEY=?"; - StringBuilder query = new StringBuilder("SELECT "); ++ StringBuilder query = new StringBuilder("SELECT *"); + + // TODO: obey slice/noslice option (instead of always slicing) - if (state.isCql2()) - query.append("FIRST ").append(state.settings.columns.maxColumnsPerKey).append(" ''..''"); - else - query.append("*"); - - String counterCF = state.isCql2() ? state.type.table : "Counter3"; - - query.append(" FROM ").append(wrapInQuotesIfRequired(counterCF)); - - if (state.isCql2()) - query.append(" USING CONSISTENCY ").append(state.settings.command.consistencyLevel); ++ query.append(" FROM ").append(wrapInQuotes(state.type.table)); + + return query.append(" WHERE KEY=?").toString(); } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java ---------------------------------------------------------------------- diff --cc tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java index 25af04a,c971844..6febe26 --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlIndexedRangeSlicer.java @@@ -48,10 -47,22 +47,11 @@@ public class CqlIndexedRangeSlicer exte @Override protected String buildQuery() { - StringBuilder query = new StringBuilder("SELECT * FROM \"Standard1\""); - final String columnName = getColumnName(1); - query.append(" WHERE ").append(columnName).append("=?") - .append(" AND KEY > ? LIMIT ").append(((SettingsCommandMulti)state.settings.command).keysAtOnce); - StringBuilder query = new StringBuilder("SELECT "); - - if (state.isCql2()) - query.append(state.settings.columns.maxColumnsPerKey).append(" ''..''"); - else - query.append("*"); - - query.append(" FROM "); - query.append(wrapInQuotesIfRequired(state.type.table)); - - if (state.isCql2()) - query.append(" USING CONSISTENCY ").append(state.settings.command.consistencyLevel); - - final String columnName = (state.settings.columns.namestrs.get(1)); - query.append(" WHERE ").append(columnName).append("=?") ++ final String indexColumn = (state.settings.columns.namestrs.get(1)); ++ StringBuilder query = new StringBuilder("SELECT * FROM "); ++ query.append(wrapInQuotes(state.type.table)); ++ query.append(" WHERE ").append(indexColumn).append("=?") + .append(" AND KEY > ? LIMIT ").append(state.settings.command.keysAtOnce); return query.toString(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/operations/CqlInserter.java ---------------------------------------------------------------------- diff --cc tools/stress/src/org/apache/cassandra/stress/operations/CqlInserter.java index 1f8987d,71cdadf..45e375b --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlInserter.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlInserter.java @@@ -38,7 -40,10 +40,7 @@@ public class CqlInserter extends CqlOpe @Override protected String buildQuery() { - StringBuilder query = new StringBuilder("UPDATE ").append(wrapInQuotes(state.settings.schema.columnFamily)); - StringBuilder query = new StringBuilder("UPDATE ").append(wrapInQuotesIfRequired(state.type.table)); - - if (state.isCql2()) - query.append(" USING CONSISTENCY ").append(state.settings.command.consistencyLevel); ++ StringBuilder query = new StringBuilder("UPDATE ").append(wrapInQuotes(state.type.table)); query.append(" SET "); http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java ---------------------------------------------------------------------- diff --cc tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java index 8674cc0,5b27146..6da145e --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlOperation.java @@@ -297,9 -303,9 +300,9 @@@ public abstract class CqlOperation<V> e } @Override - public <V> V execute(String query, ByteBuffer key, List<ByteBuffer> queryParams, ResultHandler<V> handler) + public <V> V execute(String query, ByteBuffer key, List<Object> queryParams, ResultHandler<V> handler) { - String formattedQuery = formatCqlQuery(query, queryParams, state.isCql3()); + String formattedQuery = formatCqlQuery(query, queryParams); return handler.javaDriverHandler().apply(client.execute(formattedQuery, ThriftConversion.fromThrift(state.settings.command.consistencyLevel))); } @@@ -329,9 -335,9 +332,9 @@@ } @Override - public <V> V execute(String query, ByteBuffer key, List<ByteBuffer> queryParams, ResultHandler<V> handler) + public <V> V execute(String query, ByteBuffer key, List<Object> queryParams, ResultHandler<V> handler) { - String formattedQuery = formatCqlQuery(query, queryParams, state.isCql3()); + String formattedQuery = formatCqlQuery(query, queryParams); return handler.thriftHandler().apply(client.execute(formattedQuery, ThriftConversion.fromThrift(state.settings.command.consistencyLevel))); } @@@ -362,9 -368,9 +365,9 @@@ } @Override - public <V> V execute(String query, ByteBuffer key, List<ByteBuffer> queryParams, ResultHandler<V> handler) throws TException + public <V> V execute(String query, ByteBuffer key, List<Object> queryParams, ResultHandler<V> handler) throws TException { - String formattedQuery = formatCqlQuery(query, queryParams, true); + String formattedQuery = formatCqlQuery(query, queryParams); return handler.simpleNativeHandler().apply( client.execute_cql3_query(formattedQuery, key, Compression.NONE, state.settings.command.consistencyLevel) ); @@@ -608,7 -650,7 +611,7 @@@ * @param parms sequence of string query parameters * @return formatted CQL query string */ - private static String formatCqlQuery(String query, List<ByteBuffer> parms) - private static String formatCqlQuery(String query, List<Object> parms, boolean isCql3) ++ private static String formatCqlQuery(String query, List<Object> parms) { int marker, position = 0; StringBuilder result = new StringBuilder(); @@@ -616,10 -658,14 +619,15 @@@ if (-1 == (marker = query.indexOf('?')) || parms.size() == 0) return query; - for (ByteBuffer parm : parms) + for (Object parm : parms) { result.append(query.substring(position, marker)); - result.append(getUnQuotedCqlBlob(parm)); ++ + if (parm instanceof ByteBuffer) - result.append(getUnQuotedCqlBlob((ByteBuffer) parm, isCql3)); ++ result.append(getUnQuotedCqlBlob((ByteBuffer) parm)); + else if (parm instanceof Long) + result.append(parm.toString()); + else throw new AssertionError(); position = marker + 1; if (-1 == (marker = query.indexOf('?', position + 1))) @@@ -632,9 -678,25 +640,23 @@@ return result.toString(); } + private static List<ByteBuffer> toByteBufferParams(List<Object> params) + { + List<ByteBuffer> r = new ArrayList<>(); + for (Object param : params) + { + if (param instanceof ByteBuffer) + r.add((ByteBuffer) param); + else if (param instanceof Long) + r.add(ByteBufferUtil.bytes((Long) param)); + else throw new AssertionError(); + } + return r; + } + - protected String wrapInQuotesIfRequired(String string) + protected String wrapInQuotes(String string) { - return state.settings.mode.cqlVersion == CqlVersion.CQL3 - ? "\"" + string + "\"" - : string; + return "\"" + string + "\""; } } http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/operations/CqlRangeSlicer.java ---------------------------------------------------------------------- diff --cc tools/stress/src/org/apache/cassandra/stress/operations/CqlRangeSlicer.java index cce47fc,16cdff3..8b6d6fc --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlRangeSlicer.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlRangeSlicer.java @@@ -41,7 -41,13 +41,7 @@@ public class CqlRangeSlicer extends Cql @Override protected String buildQuery() { - return "SELECT FIRST " + state.settings.columns.maxColumnsPerKey + " ''..'' FROM " + state.settings.schema.columnFamily + " WHERE KEY > ?"; - StringBuilder query = new StringBuilder("SELECT FIRST ").append(state.settings.columns.maxColumnsPerKey) - .append(" ''..'' FROM ").append(wrapInQuotesIfRequired(state.type.table)); - - if (state.isCql2()) - query.append(" USING CONSISTENCY ").append(state.settings.command.consistencyLevel); - - return query.append(" WHERE KEY > ?").toString(); ++ return "SELECT FIRST " + state.settings.columns.maxColumnsPerKey + " ''..'' FROM " + wrapInQuotes(state.type.table) + " WHERE KEY > ?"; } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java ---------------------------------------------------------------------- diff --cc tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java index aa949d4,4b8d69e..c9d8870 --- a/tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java +++ b/tools/stress/src/org/apache/cassandra/stress/operations/CqlReader.java @@@ -40,9 -40,12 +40,9 @@@ public class CqlReader extends CqlOpera { StringBuilder query = new StringBuilder("SELECT "); - if (state.settings.columns.names == null) + if (state.settings.columns.slice) { - if (state.isCql2()) - query.append("FIRST ").append(state.settings.columns.maxColumnsPerKey).append(" ''..''"); - else - query.append("*"); + query.append("*"); } else { @@@ -54,8 -57,10 +54,8 @@@ } } - query.append(" FROM ").append(wrapInQuotes(state.settings.schema.columnFamily)); - query.append(" FROM ").append(wrapInQuotesIfRequired(state.type.table)); ++ query.append(" FROM ").append(wrapInQuotes(state.type.table)); - if (state.isCql2()) - query.append(" USING CONSISTENCY ").append(state.settings.command.consistencyLevel); query.append(" WHERE KEY=?"); return query.toString(); } http://git-wip-us.apache.org/repos/asf/cassandra/blob/67feb71e/tools/stress/src/org/apache/cassandra/stress/settings/SettingsMode.java ---------------------------------------------------------------------- diff --cc tools/stress/src/org/apache/cassandra/stress/settings/SettingsMode.java index 93cfe05,95c3da3..09a875a --- a/tools/stress/src/org/apache/cassandra/stress/settings/SettingsMode.java +++ b/tools/stress/src/org/apache/cassandra/stress/settings/SettingsMode.java @@@ -126,7 -166,7 +145,7 @@@ public class SettingsMode implements Se return new SettingsMode(opts); } - GroupedOptions options = GroupedOptions.select(params, new ThriftOptions(), new Cql3Options(), new Cql3SimpleNativeOptions()); - GroupedOptions options = GroupedOptions.select(params, new ThriftOptions(), new Cql3NativeOptions(), new Cql3ThriftOptions(), new Cql3SimpleNativeOptions(), new Cql2ThriftOptions()); ++ GroupedOptions options = GroupedOptions.select(params, new ThriftOptions(), new Cql3NativeOptions(), new Cql3SimpleNativeOptions()); if (options == null) { printHelp(); @@@ -138,7 -178,7 +157,7 @@@ public static void printHelp() { - GroupedOptions.printOptions(System.out, "-mode", new ThriftOptions(), new Cql3Options(), new Cql3SimpleNativeOptions()); - GroupedOptions.printOptions(System.out, "-mode", new ThriftOptions(), new Cql3NativeOptions(), new Cql3ThriftOptions(), new Cql3SimpleNativeOptions(), new Cql2ThriftOptions()); ++ GroupedOptions.printOptions(System.out, "-mode", new ThriftOptions(), new Cql3NativeOptions(), new Cql3SimpleNativeOptions()); } public static Runnable helpPrinter()
