This is an automated email from the ASF dual-hosted git repository. blerer pushed a commit to branch trunk in repository https://gitbox.apache.org/repos/asf/cassandra.git
commit 980c6ea6abe2f5138aa3bd2666344e86bde4b141 Merge: 56e697d ec5e242 Author: Benjamin Lerer <b.le...@gmail.com> AuthorDate: Tue Nov 3 14:36:12 2020 +0100 Merge branch cassandra-3.11 into trunk test/unit/org/apache/cassandra/cql3/CQLTester.java | 58 +++++++---- .../cassandra/cql3/validation/entities/UFTest.java | 104 ++++++++++---------- .../cql3/validation/entities/UFTypesTest.java | 21 ++-- .../validation/operations/AggregationTest.java | 109 ++++++++++----------- 4 files changed, 159 insertions(+), 133 deletions(-) diff --cc test/unit/org/apache/cassandra/cql3/CQLTester.java index 04ac289,4e320ef..d205c10 --- a/test/unit/org/apache/cassandra/cql3/CQLTester.java +++ b/test/unit/org/apache/cassandra/cql3/CQLTester.java @@@ -713,9 -588,20 +711,19 @@@ public abstract class CQLTeste return typeName; } + protected String createFunctionName(String keyspace) + { + return String.format("%s.function_%02d", keyspace, seqNumber.getAndIncrement()); + } + + protected void registerFunction(String functionName, String argTypes) + { + functions.add(functionName + '(' + argTypes + ')'); + } + protected String createFunction(String keyspace, String argTypes, String query) throws Throwable { - String functionName = String.format("%s.function_%02d", keyspace, seqNumber.getAndIncrement()); + String functionName = createFunctionName(keyspace); - createFunctionOverload(functionName, argTypes, query); return functionName; } @@@ -728,9 -614,20 +736,19 @@@ schemaChange(fullQuery); } + protected String createAggregateName(String keyspace) + { + return String.format("%s.aggregate_%02d", keyspace, seqNumber.getAndIncrement()); + } + + protected void registerAggregate(String aggregateName, String argTypes) + { + aggregates.add(aggregateName + '(' + argTypes + ')'); + } + protected String createAggregate(String keyspace, String argTypes, String query) throws Throwable { - String aggregateName = String.format("%s.aggregate_%02d", keyspace, seqNumber.getAndIncrement()); + String aggregateName = createAggregateName(keyspace); - createAggregateOverload(aggregateName, argTypes, query); return aggregateName; } @@@ -970,7 -795,7 +992,7 @@@ QueryOptions options = QueryOptions.forInternalCalls(Collections.<ByteBuffer>emptyList()); - lastSchemaChangeResult = statement.executeLocally(queryState, options); - return prepared.statement.executeInternal(queryState, options); ++ return statement.executeLocally(queryState, options); } catch (Exception e) { diff --cc test/unit/org/apache/cassandra/cql3/validation/entities/UFTest.java index d691374,cac0fd3..76ba6c1 --- a/test/unit/org/apache/cassandra/cql3/validation/entities/UFTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/UFTest.java @@@ -36,13 -36,13 +36,14 @@@ import org.apache.cassandra.cql3.functi import org.apache.cassandra.cql3.functions.UDFunction; import org.apache.cassandra.db.marshal.CollectionType; import org.apache.cassandra.exceptions.InvalidRequestException; -import org.apache.cassandra.exceptions.SyntaxException; import org.apache.cassandra.schema.KeyspaceMetadata; +import org.apache.cassandra.schema.Schema; import org.apache.cassandra.service.ClientState; - import org.apache.cassandra.transport.*; + import org.apache.cassandra.transport.Event.SchemaChange.Change; + import org.apache.cassandra.transport.Event.SchemaChange.Target; import org.apache.cassandra.transport.ProtocolVersion; import org.apache.cassandra.transport.messages.ResultMessage; +import org.apache.cassandra.utils.ByteBufferUtil; public class UFTest extends CQLTester { @@@ -83,58 -72,59 +84,59 @@@ @Test public void testSchemaChange() throws Throwable { - String f = createFunction(KEYSPACE, - "double, double", - "CREATE OR REPLACE FUNCTION %s(state double, val double) " + - "RETURNS NULL ON NULL INPUT " + - "RETURNS double " + - "LANGUAGE javascript " + - "AS '\"string\";';"); - - assertLastSchemaChange(Event.SchemaChange.Change.CREATED, Event.SchemaChange.Target.FUNCTION, - KEYSPACE, parseFunctionName(f).name, - "double", "double"); - - createFunctionOverload(f, - "double, double", - "CREATE OR REPLACE FUNCTION %s(state int, val int) " + - "RETURNS NULL ON NULL INPUT " + - "RETURNS int " + - "LANGUAGE javascript " + - "AS '\"string\";';"); - - assertLastSchemaChange(Event.SchemaChange.Change.CREATED, Event.SchemaChange.Target.FUNCTION, - KEYSPACE, parseFunctionName(f).name, - "int", "int"); - - schemaChange("CREATE OR REPLACE FUNCTION " + f + "(state int, val int) " + - "RETURNS NULL ON NULL INPUT " + - "RETURNS int " + - "LANGUAGE javascript " + - "AS '\"string1\";';"); - - assertLastSchemaChange(Event.SchemaChange.Change.UPDATED, Event.SchemaChange.Target.FUNCTION, - KEYSPACE, parseFunctionName(f).name, - "int", "int"); - - schemaChange("DROP FUNCTION " + f + "(double, double)"); - - assertLastSchemaChange(Event.SchemaChange.Change.DROPPED, Event.SchemaChange.Target.FUNCTION, - KEYSPACE, parseFunctionName(f).name, - "double", "double"); + String f = createFunctionName(KEYSPACE); + String functionName = shortFunctionName(f); + registerFunction(f, "double, double"); + + assertSchemaChange("CREATE OR REPLACE FUNCTION " + f + "(state double, val double) " + + "RETURNS NULL ON NULL INPUT " + + "RETURNS double " + + "LANGUAGE javascript " + + "AS '\"string\";';", + Change.CREATED, + Target.FUNCTION, + KEYSPACE, functionName, + "double", "double"); + + registerFunction(f, "int, int"); + + assertSchemaChange("CREATE OR REPLACE FUNCTION " + f + "(state int, val int) " + + "RETURNS NULL ON NULL INPUT " + + "RETURNS int " + + "LANGUAGE javascript " + + "AS '\"string\";';", + Change.CREATED, + Target.FUNCTION, + KEYSPACE, functionName, + "int", "int"); + + assertSchemaChange("CREATE OR REPLACE FUNCTION " + f + "(state int, val int) " + + "RETURNS NULL ON NULL INPUT " + + "RETURNS int " + + "LANGUAGE javascript " + + "AS '\"string1\";';", + Change.UPDATED, + Target.FUNCTION, + KEYSPACE, functionName, + "int", "int"); + + assertSchemaChange("DROP FUNCTION " + f + "(double, double)", + Change.DROPPED, Target.FUNCTION, + KEYSPACE, functionName, + "double", "double"); // The function with nested tuple should be created without throwing InvalidRequestException. See CASSANDRA-15857 - String f1 = createFunction(KEYSPACE, - "list<tuple<int, int>>, double", - "CREATE OR REPLACE FUNCTION %s(state list<tuple<int, int>>, val double) " + - "RETURNS NULL ON NULL INPUT " + - "RETURNS double " + - "LANGUAGE javascript " + - "AS '\"string\";';"); - - assertLastSchemaChange(Event.SchemaChange.Change.CREATED, Event.SchemaChange.Target.FUNCTION, - KEYSPACE, parseFunctionName(f1).name, - "list<tuple<int, int>>", "double"); + String fl = createFunctionName(KEYSPACE); + registerFunction(fl, "list<tuple<int, int>>, double"); + + assertSchemaChange("CREATE OR REPLACE FUNCTION " + fl + "(state list<tuple<int, int>>, val double) " + + "RETURNS NULL ON NULL INPUT " + + "RETURNS double " + + "LANGUAGE javascript " + + "AS '\"string\";';", + Change.CREATED, Target.FUNCTION, + KEYSPACE, shortFunctionName(fl), - "list<frozen<tuple<int, int>>>", "double"); ++ "list<tuple<int, int>>", "double"); } @Test diff --cc test/unit/org/apache/cassandra/cql3/validation/entities/UFTypesTest.java index e455500,f789e25..b9ea27d --- a/test/unit/org/apache/cassandra/cql3/validation/entities/UFTypesTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/entities/UFTypesTest.java @@@ -34,8 -34,9 +34,10 @@@ import org.junit.Test import com.datastax.driver.core.Row; import org.apache.cassandra.cql3.CQLTester; import org.apache.cassandra.cql3.UntypedResultSet; - import org.apache.cassandra.transport.Event; + import org.apache.cassandra.transport.Event.SchemaChange.Change; + import org.apache.cassandra.transport.Event.SchemaChange.Target; import org.apache.cassandra.transport.ProtocolVersion; ++import org.apache.cassandra.transport.messages.ResultMessage; import org.apache.cassandra.utils.UUIDGen; public class UFTypesTest extends CQLTester diff --cc test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java index 3440748,e4b16ef..5913bb2 --- a/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java +++ b/test/unit/org/apache/cassandra/cql3/validation/operations/AggregationTest.java @@@ -51,8 -52,11 +51,9 @@@ import org.apache.cassandra.db.marshal. import org.apache.cassandra.db.marshal.TypeParser; import org.apache.cassandra.exceptions.FunctionExecutionException; import org.apache.cassandra.exceptions.InvalidRequestException; -import org.apache.cassandra.schema.KeyspaceMetadata; import org.apache.cassandra.service.ClientState; --import org.apache.cassandra.transport.Event; + import org.apache.cassandra.transport.Event.SchemaChange.Change; + import org.apache.cassandra.transport.Event.SchemaChange.Target; import org.apache.cassandra.transport.ProtocolVersion; import org.apache.cassandra.transport.messages.ResultMessage; @@@ -459,16 -469,16 +458,16 @@@ public class AggregationTest extends CQ "LANGUAGE javascript " + "AS '\"string\";';"); - String a1 = createAggregate(KEYSPACE, - "list<tuple<int, int>>", - "CREATE OR REPLACE AGGREGATE %s(list<tuple<int, int>>) " + - "SFUNC " + shortFunctionName(f1) + " " + - "STYPE double " + - "INITCOND 0"); - - assertLastSchemaChange(Event.SchemaChange.Change.CREATED, Event.SchemaChange.Target.AGGREGATE, - KEYSPACE, parseFunctionName(a1).name, - "list<tuple<int, int>>"); + String a1 = createAggregateName(KEYSPACE); + registerAggregate(a1, "list<tuple<int, int>>"); + + assertSchemaChange("CREATE OR REPLACE AGGREGATE " + a1 + "(list<tuple<int, int>>) " + + "SFUNC " + shortFunctionName(f1) + " " + + "STYPE double " + + "INITCOND 0", - Event.SchemaChange.Change.CREATED, Event.SchemaChange.Target.AGGREGATE, - KEYSPACE, parseFunctionName(a1).name, - "list<frozen<tuple<int, int>>>"); // CASSANDRA-14825: remove frozen from param ++ Change.CREATED, Target.AGGREGATE, ++ KEYSPACE, shortFunctionName(a1), ++ "list<tuple<int, int>>"); } @Test --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org