[ 
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)

Reply via email to