Aaron Ploetz created CASSANDRA-10027:
----------------------------------------
Summary: 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)