Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Fix Version/s: 2.2.4, 3.0.1, 3.1
    • Component/s: CQL
    • Labels:
      None

      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)
      
      1. 10027-2.2.txt
        3 kB
        Benjamin Lerer

        Issue Links

          Activity

          Hide
          blerer Benjamin Lerer added a comment -

          Committed in 2.2 at b05fe4ffee8f1c457a79013c2ddc88abcdadc6bb and merged into 3.0, 3.1 and trunk

          Show
          blerer Benjamin Lerer added a comment - Committed in 2.2 at b05fe4ffee8f1c457a79013c2ddc88abcdadc6bb and merged into 3.0, 3.1 and trunk
          Hide
          blerer Benjamin Lerer added a comment -

          Sorry, I attached the good patch.
          Thanks for the review.

          Show
          blerer Benjamin Lerer added a comment - Sorry, I attached the good patch. Thanks for the review.
          Hide
          JoshuaMcKenzie Joshua McKenzie added a comment -

          +1.

          Note: the patch you attached to this ticket is not for this ticket; dug around in your repo and reviewed based on the branch your tests are based off of.

          We'll handle other potential bugs of this nature, as well as other bugs with conversion, in CASSANDRA-10311.

          Show
          JoshuaMcKenzie Joshua McKenzie added a comment - +1. Note: the patch you attached to this ticket is not for this ticket; dug around in your repo and reviewed based on the branch your tests are based off of. We'll handle other potential bugs of this nature, as well as other bugs with conversion, in CASSANDRA-10311 .
          Hide
          blerer Benjamin Lerer added a comment -

          The problem has been introduced when the SimpleDateType was created.

          The date type should be compatible with the int type and not with the varint type.

          The error was probably caused by the fact that internally the class representing the int type is the Int32Type and not the IntegerType, while the bigint type is represented by the LongType.

          The patch makes sure that the proper type is used and add some unit tests to check the proper behavior.

          • The unit tests results for 2.2 are here
          • The dtests results for 2.2 are here
          • The unit tests results for 3.0 are here
          • The dtests results for 3.0 are here
          Show
          blerer Benjamin Lerer added a comment - The problem has been introduced when the SimpleDateType was created. The date type should be compatible with the int type and not with the varint type. The error was probably caused by the fact that internally the class representing the int type is the Int32Type and not the IntegerType , while the bigint type is represented by the LongType . The patch makes sure that the proper type is used and add some unit tests to check the proper behavior. The unit tests results for 2.2 are here The dtests results for 2.2 are here The unit tests results for 3.0 are here The dtests results for 3.0 are here
          Hide
          snazy Robert Stupp added a comment -

          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.

          Show
          snazy Robert Stupp added a comment - 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.

            People

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

              Dates

              • Created:
                Updated:
                Resolved:

                Development