Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-1478

Can't upsert value of 127 into column of type unsigned tinyint

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 4.2.0
    • 4.8.0
    • None

    Description

      The docs say values from 0 to 127 are valid. From sqlline I can upsert a value of 126 but not 127. See below.

      $ cat UnsignedTinyintFail.sql
      drop table if exists unsigned_tinyint_test;
      create table unsigned_tinyint_test (uti unsigned_tinyint primary key);
      upsert into unsigned_tinyint_test values (126);
      upsert into unsigned_tinyint_test values (127);
      

      Results in:

      Setting property: [isolation, TRANSACTION_READ_COMMITTED]
      Setting property: [run, UnsignedTinyintFail.sql]
      issuing: !connect jdbc:phoenix:localhost:2181:/hbase-unsecure none none org.apache.phoenix.jdbc.PhoenixDriver
      Connecting to jdbc:phoenix:localhost:2181:/hbase-unsecure
      14/11/15 08:19:57 WARN impl.MetricsConfig: Cannot locate configuration: tried hadoop-metrics2-phoenix.properties,hadoop-metrics2.properties
      Connected to: Phoenix (version 4.2)
      Driver: PhoenixEmbeddedDriver (version 4.2)
      Autocommit status: true
      Transaction isolation: TRANSACTION_READ_COMMITTED
      Building list of tables and columns for tab-completion (set fastconnect to true to skip)...
      76/76 (100%) Done
      Done
      1/4          drop table if exists unsigned_tinyint_test;
      No rows affected (0.015 seconds)
      2/4          create table unsigned_tinyint_test (uti unsigned_tinyint primary key);
      No rows affected (0.317 seconds)
      3/4          upsert into unsigned_tinyint_test values (126);
      1 row affected (0.032 seconds)
      4/4          upsert into unsigned_tinyint_test values (127);
      Error: ERROR 203 (22005): Type mismatch. UNSIGNED_TINYINT and INTEGER for 127 (state=22005,code=203)
      org.apache.phoenix.schema.TypeMismatchException: ERROR 203 (22005): Type mismatch. UNSIGNED_TINYINT and INTEGER for 127
      	at org.apache.phoenix.schema.TypeMismatchException.newException(TypeMismatchException.java:52)
      	at org.apache.phoenix.expression.LiteralExpression.newConstant(LiteralExpression.java:160)
      	at org.apache.phoenix.expression.LiteralExpression.newConstant(LiteralExpression.java:136)
      	at org.apache.phoenix.compile.UpsertCompiler$UpsertValuesCompiler.visit(UpsertCompiler.java:854)
      	at org.apache.phoenix.compile.UpsertCompiler$UpsertValuesCompiler.visit(UpsertCompiler.java:830)
      	at org.apache.phoenix.parse.LiteralParseNode.accept(LiteralParseNode.java:73)
      	at org.apache.phoenix.compile.UpsertCompiler.compile(UpsertCompiler.java:721)
      	at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:467)
      	at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:458)
      	at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:259)
      	at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:252)
      	at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
      	at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:250)
      	at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1037)
      	at sqlline.SqlLine$Commands.execute(SqlLine.java:3673)
      	at sqlline.SqlLine$Commands.sql(SqlLine.java:3584)
      	at sqlline.SqlLine.dispatch(SqlLine.java:821)
      	at sqlline.SqlLine.runCommands(SqlLine.java:1793)
      	at sqlline.SqlLine$Commands.run(SqlLine.java:4161)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:606)
      	at sqlline.SqlLine$ReflectiveCommandHandler.execute(SqlLine.java:2810)
      	at sqlline.SqlLine.dispatch(SqlLine.java:817)
      	at sqlline.SqlLine.initArgs(SqlLine.java:657)
      	at sqlline.SqlLine.begin(SqlLine.java:680)
      	at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441)
      	at sqlline.SqlLine.main(SqlLine.java:424)
      Aborting command set because "force" is false and command failed: "upsert into unsigned_tinyint_test values (127);"
      Closing: org.apache.phoenix.jdbc.PhoenixConnection
      sqlline version 1.1.2
      

      Attachments

        1. PHOENIX-1478.patch
          1 kB
          Biju Nair
        2. PHOENIX-1478-1.patch
          4 kB
          Biju Nair

        Activity

          People

            gsbiju Biju Nair
            cartershanklin Carter Shanklin
            Votes:
            0 Vote for this issue
            Watchers:
            6 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: