cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sam Tunnicliffe (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CASSANDRA-9400) smallint, tinyint, date + time types in UDFs
Date Mon, 01 Jun 2015 16:25:18 GMT

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

Sam Tunnicliffe commented on CASSANDRA-9400:
--------------------------------------------

We should wait for [JAVA-404|https://datastax-oss.atlassian.net/browse/JAVA-404] to be committed
before incorporating the custom jar, just in case of further changes on the driver side. In
the meantime, I've a few remarks on the patch:

* adding support for the new types in {{CqlRecordReader}} should probably be broken out into
a separate ticket. But if we're going to shoehorn it in here, can we look at improving the
coverage of {{CqlRecordReaderTest}} to check all the supported datatypes.

* can we now enable {{UFTest#testFunctionExecutionExceptionNet}}? As with the previous comment,
maybe we ought to make that a separate ticket but I'd be ok with doing it here.

* the new {{UFTest#testTypesWithAndWithoutNulls}} is pretty hard to follow. It would add a
bit of boilerplate, but perhaps adding a simple struct and making {{typeDefs}} an array of
those would make the test more readable.

* the {{maxProtocolVersion}} logic in CQLTester is already incorrect and this (temporary)
hack to skip v4 while driver support is incomplete doesn't help much.
It's incorrect in 2.2/trunk because if {{Server.CURRENT_VERSION}} *is* supported by the driver,
then the {{IllegalArgumentException}} is never thrown, so we don't break out of the loop and
{{version}} will end up being incremented once too many times. How about this alternative:

{code}
    static
    {
        int version = Server.CURRENT_VERSION;
        while(version >= Server.VERSION_1)
        {
            try
            {
                ProtocolVersion.fromInt(version);
                break;
            }
            catch (IllegalArgumentException e)
            {
                version--;
            }
        }
        maxProtocolVersion = version;
        //TODO java-driver as of C* 2.2rc1 has incomplete V4 implementation - so skip V4 for
now
        maxProtocolVersion = Math.min(Server.VERSION_3, version);
{code}

We could either remove the last assignment when driver v4 support is complete, or just initialise
{{version}} to {{VERSION_3}}. I slightly favour the way it's done above as it's more explicit.

> smallint, tinyint, date + time types in UDFs
> --------------------------------------------
>
>                 Key: CASSANDRA-9400
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9400
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Robert Stupp
>            Assignee: Robert Stupp
>             Fix For: 2.2.0 rc1
>
>         Attachments: 9400.txt
>
>
> Cassandra 2.2 adds new types {{smallint}}, {{tinyint, {{date}} + {{time}}.
> However the bundled Java driver does not support them.
> There are two options:
> # Do not allow the new types {{smallint}}, {{tinyint}}, {{date}} + {{time}} for UDFs
> # Use a new Java Driver version that can handle these types.
> Probably we should go with option 1 and update the driver in a 2.2.x release?



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

Mime
View raw message