Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-10027

ALTER TABLE TYPE check broken

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Low
    • Resolution: Fixed
    • 2.2.4, 3.0.1, 3.1
    • Legacy/CQL
    • None
    • Low

    Description

      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:

      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)
      

      Attachments

        1. 10027-2.2.txt
          3 kB
          Benjamin Lerer

        Issue Links

          Activity

            People

              blerer Benjamin Lerer
              aploetz Aaron Ploetz
              Benjamin Lerer
              Joshua McKenzie
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: