You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Biju Nair (JIRA)" <ji...@apache.org> on 2016/03/29 00:39:25 UTC

[jira] [Updated] (PHOENIX-1478) Can't upsert value of 127 into column of type unsigned tinyint

     [ https://issues.apache.org/jira/browse/PHOENIX-1478?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Biju Nair updated PHOENIX-1478:
-------------------------------
    Attachment: PHOENIX-1478.patch

[~cartershanklin], this is an issue based on my verification. Attached is the patch. Even though the fix is small, it would be good to categorize this issue as major because of the impact.

> Can't upsert value of 127 into column of type unsigned tinyint
> --------------------------------------------------------------
>
>                 Key: PHOENIX-1478
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-1478
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.2.0
>            Reporter: Carter Shanklin
>            Priority: Minor
>              Labels: verify
>             Fix For: 4.8.0
>
>         Attachments: PHOENIX-1478.patch
>
>
> The docs say values from 0 to 127 are valid. From sqlline I can upsert a value of 126 but not 127. See below.
> {code}
> $ 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);
> {code}
> Results in:
> {code}
> 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
> {code}



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