You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@phoenix.apache.org by "Dumindu Buddhika (JIRA)" <ji...@apache.org> on 2015/08/27 16:12:46 UTC

[jira] [Assigned] (PHOENIX-2213) ARRAY_LENGTH fails for Decimal type array

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

Dumindu Buddhika reassigned PHOENIX-2213:
-----------------------------------------

    Assignee: Dumindu Buddhika

> ARRAY_LENGTH fails for Decimal type array
> -----------------------------------------
>
>                 Key: PHOENIX-2213
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-2213
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.4.0
>         Environment: HortonWorks HDP 2.3_1 using phoenix-4.4.0.2.3.0.0-2557-client.jar running under VirtualBox 4.3.30 r101601 on Mac OS X 10.10.5.
>            Reporter: Ken Taylor
>            Assignee: Dumindu Buddhika
>
> ARRAY_LENGTH generates a type mismatch if the array is DECIMAL type. 
> Sample code:
> !outputformat vertical
> DROP TABLE IF EXISTS mytable;
> CREATE TABLE IF NOT EXISTS mytable
> (id UNSIGNED_INT NOT NULL,
> b.myarray1 INTEGER ARRAY[10],
> c.myarray2 VARCHAR ARRAY[20],
> d.myarray3 DECIMAL(4,2) ARRAY[30],
> CONSTRAINT pk PRIMARY KEY (id));
> UPSERT INTO mytable(id, myarray1, myarray2, myarray3)
> VALUES(1,ARRAY[1],ARRAY['a','b'],ARRAY[1.11,2.22,3.33]);
> select * from mytable;
> SELECT ARRAY_LENGTH(myarray1) from mytable;
> SELECT ARRAY_LENGTH(myarray2) from mytable;
> SELECT ARRAY_LENGTH(myarray3) from mytable;
> Produces the following output run under SQLline:
> 0: jdbc:phoenix:localhost:2181:/hbase> !outputformat vertical
> 0: jdbc:phoenix:localhost:2181:/hbase> DROP TABLE IF EXISTS mytable;
> No rows affected (3.876 seconds)
> 0: jdbc:phoenix:localhost:2181:/hbase> CREATE TABLE IF NOT EXISTS mytable
> . . . . . . . . . . . . . . . . . . .> (id UNSIGNED_INT NOT NULL,
> . . . . . . . . . . . . . . . . . . .> b.myarray1 INTEGER ARRAY[10],
> . . . . . . . . . . . . . . . . . . .> c.myarray2 VARCHAR ARRAY[20],
> . . . . . . . . . . . . . . . . . . .> d.myarray3 DECIMAL(4,2) ARRAY[30],
> . . . . . . . . . . . . . . . . . . .> CONSTRAINT pk PRIMARY KEY (id));
> No rows affected (1.387 seconds)
> 0: jdbc:phoenix:localhost:2181:/hbase> UPSERT INTO mytable(id, myarray1, myarray2, myarray3)
> . . . . . . . . . . . . . . . . . . .> VALUES(1,ARRAY[1],ARRAY['a','b'],ARRAY[1.11,2.22,3.33]);
> 1 row affected (0.027 seconds)
> 0: jdbc:phoenix:localhost:2181:/hbase> select * from mytable;
> ID        1
> MYARRAY1  [1]
> MYARRAY2  ['a', 'b']
> MYARRAY3  [1.11, 2.22, 3.33]
> 1 row selected (0.017 seconds)
> 0: jdbc:phoenix:localhost:2181:/hbase> SELECT ARRAY_LENGTH(myarray1) from mytable;
> ARRAY_LENGTH(B.MYARRAY1)  1
> 1 row selected (0.015 seconds)
> 0: jdbc:phoenix:localhost:2181:/hbase> SELECT ARRAY_LENGTH(myarray2) from mytable;
> ARRAY_LENGTH(C.MYARRAY2)  2
> 1 row selected (0.015 seconds)
> 0: jdbc:phoenix:localhost:2181:/hbase> SELECT ARRAY_LENGTH(myarray3) from mytable;
> Error: ERROR 203 (22005): Type mismatch. expected: [BINARY ARRAY, VARBINARY] but was: DECIMAL ARRAY at ARRAY_LENGTH argument 1 (state=22005,code=203)
> org.apache.phoenix.schema.ArgumentTypeMismatchException: ERROR 203 (22005): Type mismatch. expected: [BINARY ARRAY, VARBINARY] but was: DECIMAL ARRAY at ARRAY_LENGTH argument 1
> 	at org.apache.phoenix.parse.FunctionParseNode.validate(FunctionParseNode.java:200)
> 	at org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:325)
> 	at org.apache.phoenix.compile.ProjectionCompiler$SelectClauseVisitor.visitLeave(ProjectionCompiler.java:637)
> 	at org.apache.phoenix.compile.ProjectionCompiler$SelectClauseVisitor.visitLeave(ProjectionCompiler.java:538)
> 	at org.apache.phoenix.parse.FunctionParseNode.accept(FunctionParseNode.java:87)
> 	at org.apache.phoenix.compile.ProjectionCompiler.compile(ProjectionCompiler.java:396)
> 	at org.apache.phoenix.compile.QueryCompiler.compileSingleFlatQuery(QueryCompiler.java:542)
> 	at org.apache.phoenix.compile.QueryCompiler.compileSingleQuery(QueryCompiler.java:493)
> 	at org.apache.phoenix.compile.QueryCompiler.compileSelect(QueryCompiler.java:205)
> 	at org.apache.phoenix.compile.QueryCompiler.compile(QueryCompiler.java:162)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:364)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableSelectStatement.compilePlan(PhoenixStatement.java:338)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:246)
> 	at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:241)
> 	at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
> 	at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:240)
> 	at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1250)
> 	at sqlline.Commands.execute(Commands.java:822)
> 	at sqlline.Commands.sql(Commands.java:732)
> 	at sqlline.SqlLine.dispatch(SqlLine.java:808)
> 	at sqlline.SqlLine.begin(SqlLine.java:681)
> 	at sqlline.SqlLine.start(SqlLine.java:398)
> 	at sqlline.SqlLine.main(SqlLine.java:292)
>     This was on phoenix-4.4.0.2.3.0.0-2557-client.jar
>     



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