You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Robert Stupp (JIRA)" <ji...@apache.org> on 2015/08/09 17:50:46 UTC

[jira] [Commented] (CASSANDRA-10027) ALTER TYPE of varint to date should not be allowed

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

Robert Stupp commented on CASSANDRA-10027:
------------------------------------------

This seems to be a regression caused by CASSANDRA-6766 since 2.0.9.
{{ALTER TABLE tab ALTER col}} uses {{AbstractType.isValueCompatibleWith(AbstractType)}} to check for compatibility.

> ALTER TYPE of varint to date should not be allowed
> --------------------------------------------------
>
>                 Key: CASSANDRA-10027
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-10027
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>            Reporter: Aaron Ploetz
>            Priority: Minor
>             Fix For: 2.2.x
>
>
> I stumbled onto the fact that 2.2.0 will allow you to ALTER TYPE of a {{varint}} to the new {{date}} type.  I thought that was an odd conversion to allow, so I attempted to query it.  I received an error on all subsequent queries, unless I exited or truncated the table.
> After truncating, I could then INSERT and query as normal.  But the new {{varint}} values inserted simply were reflected as an offset of the minimum {{varint}} value.
> I'm not sure why that's happening, but if we could simply prevent type conversion between {{varint}} and {{date}} (and just show the "types are incompatible" message) that should fix this.
> Steps to reproduce:
> {code}
> aploetz@cqlsh:typeconversion> CREATE TABLE varinttest (key int PRIMARY KEY, c1 varint);
> aploetz@cqlsh:typeconversion> INSERT INTO varinttest (key, c1) VALUES (1,1);
> aploetz@cqlsh:typeconversion> SELECT * FROM varinttest ;
>  key | c1
> -----+----
>    1 |  1
> (1 rows)
> aploetz@cqlsh:typeconversion> ALTER TABLE varinttest ALTER c1 TYPE date;
> aploetz@cqlsh:typeconversion> SELECT * FROM varinttest ;
> Traceback (most recent call last):
>   File "/usr/bin/cqlsh.py", line 1150, in perform_simple_statement
>     rows = future.result(self.session.default_timeout)
>   File "/usr/share/cassandra/lib/cassandra-driver-internal-only-2.6.0c2.post.zip/cassandra-driver-2.6.0c2.post/cassandra/cluster.py", line 3296, in result
>     raise self._final_exception
> error: unpack requires a string argument of length 4
> aploetz@cqlsh:typeconversion> SELECT * FROM varinttest ;
> NoHostAvailable: ('Unable to complete the operation against any hosts', {<Host: 127.0.0.1 PloetzLabs>: ConnectionShutdown('Connection to 127.0.0.1 is defunct',)})
> aploetz@cqlsh:typeconversion> TRUNCATE varinttest ;
> aploetz@cqlsh:typeconversion> SELECT * FROM varinttest ;
>  key | c1
> -----+----
> (0 rows)
> aploetz@cqlsh:typeconversion> INSERT INTO varinttest (key, c1) VALUES (1,1);
> aploetz@cqlsh:typeconversion> INSERT INTO varinttest (key, c1) VALUES (2,2);
> aploetz@cqlsh:typeconversion> INSERT INTO varinttest (key, c1) VALUES (3,3);
> aploetz@cqlsh:typeconversion> SELECT * FROM varinttest ;
>  key | c1
> -----+-------------
>    1 | -2147483647
>    2 | -2147483646
>    3 | -2147483645
> (3 rows)
> {code}



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