Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
None
-
None
-
None
Description
With reference to the mail in user list there is an NPE when upserting NULL in an VARCHAR array as reported by Kathir
Is it possible to insert null elements in an array type column? CREATE TABLE ARRAYTEST124 (ID VARCHAR, NAME VARCHAR ARRAY CONSTRAINT PK PRIMARY KEY(ID)) UPSERT INTO ARRAYTEST124 (ID, NAME) VALUES('123',ARRAY['ABC','XYZ',null]) UPSERT INTO ARRAYTEST124 (ID, NAME) VALUES('123',ARRAY['ABC',null,'XYZ']) UPSERT INTO ARRAYTEST124 (ID, NAME) VALUES('123',ARRAY[null,'ABC','XYZ']) I'm using phoenix 4.4.0-HBase-0.98-rc0 I'm getting a null pointer exception, while trying to do the above upserts java.lang.NullPointerException at org.apache.phoenix.schema.types.PVarchar.toObject(PVarchar.java:62) at org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:979) at org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:992) at org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:1275) at org.apache.phoenix.compile.ExpressionCompiler.visitLeave(ExpressionCompiler.java:142) at org.apache.phoenix.parse.ArrayConstructorNode.accept(ArrayConstructorNode.java:43) at org.apache.phoenix.compile.UpsertCompiler.compile(UpsertCompiler.java:733) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:525) at org.apache.phoenix.jdbc.PhoenixStatement$ExecutableUpsertStatement.compilePlan(PhoenixStatement.java:513) at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:299) at org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:292) at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:290) at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:222) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:173) at org.apache.phoenix.jdbc.PhoenixPreparedStatement.execute(PhoenixPreparedStatement.java:178)