[ 
https://issues.apache.org/jira/browse/CASSANDRA-10365?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14979182#comment-14979182
 ] 

Robert Stupp commented on CASSANDRA-10365:
------------------------------------------

Pushed a commit that adds initcond literal to schema table 
[here|https://github.com/snazy/cassandra/tree/10365-uda-3.0].

Specifically the patch does:
* add {{initcond_literal}} column to {{system_schema.aggregates}}, which 
contains the literal from the _CREATE AGGREGATE_ statement
* add {{initcond_version}} column to {{system_schema.aggregates}}, which 
contains the native protocol version used to serialize {{initcond}} value (to 
be able to read it in future versions)
* add {{"tuple"}} case to {{CqlTypeParser}} (to get {{AggregationTest}} working)

Unfortunately we cannot reliably re-construct the CQL literal for a number of 
reasons:
* there are no {{TypeSerializer}} implementations for tuples/UDTs
* AbstractTextSerializer.getString() returns the non-quoted string
* TupleType/UserType return BytesSerializer - this means that nested type 
combinations cannot be reliably stringified (would return a hex representation 
instead of CQL tuple/UDT literals)

WRT this ticket - although it is not nice to not have the INITCOND literal in a 
_describeAggregate_ method for pre-3.0 UDAs, I *think* it's ok, since UDFs and 
UDAs were experimental in 2.2 and it only affects a _describeAggregate_ method, 
if the driver is not "smart enough" to reconstruct the literal itself from 
{{initcond}}. So - for pre-3.0 UDAs such a _describeAggregate_ would not work 
perfectly and might return some hint if {{initcond_literal}} column is {{null}}.

I'm not sure whether it's worth to fix the AbstractType/TypeSerializer 
getString/toString functionality (for 3.0) since it's a 'bit' more code to 
change.

> Consider storing types by their CQL names in schema tables instead of 
> fully-qualified internal class names
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: CASSANDRA-10365
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10365
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Aleksey Yeschenko
>            Assignee: Aleksey Yeschenko
>              Labels: client-impacting
>             Fix For: 3.0.0
>
>
> Consider saving CQL types names for column, UDF/UDA arguments and return 
> types, and UDT components.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to