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

NPE while inserting NULL in a VARCHAR array using UPSERT stmt

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 4.7.0
    • 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)
      
      

      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

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

            Dates

              Created:
              Updated:
              Resolved: