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

NPE when RVC between combined with key part comparison

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 4.2.0
    • 4.3.0, 3.3.0, 3.2.2, 4.2.2
    • None
    • None
    • CentOS6, HBase 0.98.5, Phoenix 4.2

    Description

      My queries worked with 4.1. I assume no code changes are required upgrading to 4.2. I used to copy the phoenix-4.1.0-server-hadoop2.jar to the HBase lib directory. I did not find instructions on how to install Phoenix 4.2. I assumed I had to copy the phoenix-4.2.0-server.jar. But, my queries are failing with an NPE.

      Here is a simple example that fails using sqlline.py. It fails as soon as I add the WHERE clause.

      0: jdbc:phoenix:localhost> select * from "asset_metadata" as T1 inner join "asset_latest_rev" as T2 on T1.L=T2.L and T1.C=T2.C and T1.A=T2.A AND T1.R = T2.R;
      ---------------------------------------------------------------+

      T1.L T1.C T1.A T1.REVERSETS T1.R T1.W

      ---------------------------------------------------------------+

      139359021902594048 139359004886302720 139359021973897216 9223370620364
      139359030865825792 139359004886302720 139359030958096384 9223370620364
      139359035940933632 139359004886302720 139359035974483968 9223370620364
      139359035940933632 139359004886302720 139359065401720832 9223370620364
      139359039808081920 139359004886302720 139359039824855040 9223370620364
      139359039808081920 139359004886302720 139359066852950016 9223370620364
      139359055830323200 139359042962194432 139359055851290624 9223370620364
      139359562284142592 139359547713126400 139359562313498624 9223370620364
      139359562284142592 139359547713126400 139359570307842048 9223370620364
      139359562284142592 139359547713126400 139359574065938432 9223370620364
      139359565945769984 139359547713126400 139359565975126016 9223370620364

      ---------------------------------------------------------------+
      11 rows selected (0.384 seconds)
      0: jdbc:phoenix:localhost> select * from "asset_metadata" as T1 inner join "asset_latest_rev" as T2 on T1.L=T2.L and T1.C=T2.C and T1.A=T2.A AND T1.R = T2.R WHERE T1.C=139359004886302720;
      java.lang.NullPointerException
      at org.apache.phoenix.compile.WhereOptimizer$KeyExpressionVisitor.andKeySlots(WhereOptimizer.java:643)
      at org.apache.phoenix.compile.WhereOptimizer$KeyExpressionVisitor.visitLeave(WhereOptimizer.java:825)
      at org.apache.phoenix.compile.WhereOptimizer$KeyExpressionVisitor.visitLeave(WhereOptimizer.java:440)
      at org.apache.phoenix.expression.AndExpression.accept(AndExpression.java:100)
      at org.apache.phoenix.compile.WhereOptimizer.pushKeyExpressionsToScan(WhereOptimizer.java:122)
      at org.apache.phoenix.compile.WhereCompiler.compile(WhereCompiler.java:142)
      at org.apache.phoenix.execute.HashJoinPlan.iterator(HashJoinPlan.java:183)
      at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:220)
      at org.apache.phoenix.jdbc.PhoenixStatement$1.call(PhoenixStatement.java:211)
      at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
      at org.apache.phoenix.jdbc.PhoenixStatement.executeQuery(PhoenixStatement.java:210)
      at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1040)
      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.begin(SqlLine.java:699)
      at sqlline.SqlLine.mainWithInputRedirection(SqlLine.java:441)
      at sqlline.SqlLine.main(SqlLine.java:424)

      It also works if I changed the WHERE to T2.C=139359004886302720. That is T1 did not work. These also worked.

      Reverse join

      select * from "asset_latest_rev" T2 inner join "asset_metadata" as T1 on T1.L=T2.L and T1.C=T2.C and T1.A=T2.A AND T1.R = T2.R WHERE T1.C=139359004886302720;

      Move where clause into join clause

      select * from "asset_latest_rev" T2 inner join "asset_metadata" as T1 on T1.L=T2.L and T1.C=T2.C and T1.A=T2.A AND T1.R = T2.R AND T1.C=139359004886302720;

      Attachments

        1. 1474.patch
          1.0 kB
          Wei Xue
        2. 1474-2.patch
          2 kB
          Wei Xue
        3. NPE.PNG
          153 kB
          Jerry Chabot

        Activity

          People

            maryannxue Wei Xue
            jchabot72 Jerry Chabot
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: