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

NPE while inserting NULL in a VARCHAR array using UPSERT stmt

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 4.7.0
    • Component/s: None
    • Labels:
      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)
      
      

        Attachments

        1. Phoenix-1949.patch
          3 kB
          ramkrishna.s.vasudevan
        2. PVarcharFix.patch
          0.9 kB
          James R. Taylor
        3. Phoenix-1949_1.patch
          4 kB
          ramkrishna.s.vasudevan

          Activity

            People

            • Assignee:
              ram_krish ramkrishna.s.vasudevan
              Reporter:
              ram_krish ramkrishna.s.vasudevan
            • Votes:
              1 Vote for this issue
              Watchers:
              5 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: