Olivier Michallat created CASSANDRA-11064: ---------------------------------------------
Summary: Failed aggregate creation breaks server permanently Key: CASSANDRA-11064 URL: https://issues.apache.org/jira/browse/CASSANDRA-11064 Project: Cassandra Issue Type: Bug Reporter: Olivier Michallat While testing edge cases around aggregates, I tried the following to see if custom types were supported: {code} ccm create v321 -v3.2.1 -n3 ccm updateconf enable_user_defined_functions:true ccm start ccm node1 cqlsh CREATE FUNCTION id(i 'DynamicCompositeType(s => UTF8Type, i => Int32Type)') RETURNS NULL ON NULL INPUT RETURNS 'DynamicCompositeType(s => UTF8Type, i => Int32Type)' LANGUAGE java AS 'return i;'; // function created successfully CREATE AGGREGATE ag() SFUNC id STYPE 'DynamicCompositeType(s => UTF8Type, i => Int32Type)' INITCOND 's@foo:i@32'; ServerError: <ErrorMessage code=0000 [Server error] message="java.lang.RuntimeException: java.util.concurrent.ExecutionException: org.apache.cassandra.exceptions.SyntaxException: Failed parsing CQL term: [s@foo:i@32] reason: SyntaxException line 1:1 no viable alternative at character '@'">{code} Despite the error, the aggregate appears in system tables: {code} select * from system_schema.aggregates; keyspace_name | aggregate_name | ... ---------------+----------------+ ... test | ag | ... {code} But you can't drop it, and trying to drop its function produces the server error again: {code} DROP AGGREGATE ag; InvalidRequest: code=2200 [Invalid query] message="Cannot drop non existing aggregate 'test.ag'" DROP FUNCTION id; ServerError: <ErrorMessage code=0000 [Server error] message="java.lang.RuntimeException: java.util.concurrent.ExecutionException: org.apache.cassandra.exceptions.SyntaxException: Failed parsing CQL term: [s@foo:i@32] reason: SyntaxException line 1:1 no viable alternative at character '@'"> {code} What's worse, it's now impossible to restart the server: {code} ccm stop; ccm start org.apache.cassandra.exceptions.SyntaxException: Failed parsing CQL term: [s@foo:i@32] reason: SyntaxException line 1:1 no viable alternative at character '@' at org.apache.cassandra.cql3.CQLFragmentParser.parseAny(CQLFragmentParser.java:48) at org.apache.cassandra.cql3.Terms.asBytes(Terms.java:51) at org.apache.cassandra.schema.SchemaKeyspace.createUDAFromRow(SchemaKeyspace.java:1225) at org.apache.cassandra.schema.SchemaKeyspace.fetchUDAs(SchemaKeyspace.java:1204) at org.apache.cassandra.schema.SchemaKeyspace.fetchFunctions(SchemaKeyspace.java:1129) at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspace(SchemaKeyspace.java:897) at org.apache.cassandra.schema.SchemaKeyspace.fetchKeyspacesWithout(SchemaKeyspace.java:872) at org.apache.cassandra.schema.SchemaKeyspace.fetchNonSystemKeyspaces(SchemaKeyspace.java:860) at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:125) at org.apache.cassandra.config.Schema.loadFromDisk(Schema.java:115) at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:229) at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:551) at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:680) {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)