Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-3872

NullPoinerException thrown when INTEGER function used as a predicate in a WHERE clause of a SELECT .. GROUP BY .. HAVING statement

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.3.3.0
    • Fix Version/s: 10.4.2.1, 10.5.1.1
    • Component/s: SQL
    • Labels:
      None
    • Bug behavior facts:
      Regression

      Description

      Use attached SQL script to create two tables , execute the following SQL and throw the exception and stack trace below. NOTE: removing the 'always true' clause '.. ( integer (1.1) = 1) .." from the SQL and the query does not fail. Releated??

      select q1."DEPTNO" from DEPTTAB q1, EMPTAB q2 where ( integer (1.1) = 1) and ( q2."DEPT_DEPTNO" = q1."DEPTNO")
      GROUP BY q1."DEPTNO"
      HAVING max( q2."SALARY") >= ( select q3."SALARY" from EMPTAB q3 where ( q3."EMPID" = q1."DEPTNO") )

      ERROR 38000: The exception 'java.lang.NullPointerException' was thrown while evaluating an expression.
      . . .derby.iapi.error.StandardException.newException
      . . .derby.iapi.error.StandardException.unexpectedUserException
      . . .derby.impl.services.reflect.DirectCall.invoke
      . . .derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore
      . . .derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow
      . . .derby.impl.jdbc.EmbedResultSet.movePosition
      . . .derby.impl.jdbc.EmbedResultSet.next
      . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults
      . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults
      . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults
      . . .derby.tools.JDBCDisplayUtil.DisplayResults
      . . .derby.impl.tools.ij.utilMain.displayResult
      . . .derby.impl.tools.ij.utilMain.doCatch
      . . .derby.impl.tools.ij.utilMain.runScriptGuts
      . . .derby.impl.tools.ij.utilMain.go
      . . .derby.impl.tools.ij.Main.go
      . . .derby.impl.tools.ij.Main.mainCore
      . . .derby.impl.tools.ij.Main14.main
      . . .derby.tools.ij.main
      Caused by: java.lang.NullPointerException
      . . .derby.iapi.types.NumberDataType.compare
      . . .derby.impl.store.access.btree.ControlRow.compareIndexRowFromPageToKey
      . . .derby.impl.store.access.btree.ControlRow.searchForEntry
      . . .derby.impl.store.access.btree.LeafControlRow.search
      . . .derby.impl.store.access.btree.BTreeScan.positionAtStartForForwardScan
      . . .derby.impl.store.access.btree.BTreeForwardScan.positionAtStartPosition
      . . .derby.impl.store.access.btree.BTreeForwardScan.fetchRows
      . . .derby.impl.store.access.btree.BTreeScan.fetchNext
      . . .derby.impl.sql.execute.TableScanResultSet.getNextRowCore
      . . .derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore
      . . .derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore
      . . .derby.impl.sql.execute.OnceResultSet.getNextRowCore
      . . .derby.exe.ac601a400fx011cx480cx5eacx00000010d8100.g0
      . . .derby.exe.ac601a400fx011cx480cx5eacx00000010d8100.e6
      ... 17 more
      ============= begin nested exception, level (1) ===========
      java.lang.NullPointerException
      . . .derby.iapi.types.NumberDataType.compare
      . . .derby.impl.store.access.btree.ControlRow.compareIndexRowFromPageToKey
      . . .derby.impl.store.access.btree.ControlRow.searchForEntry
      . . .derby.impl.store.access.btree.LeafControlRow.search
      . . .derby.impl.store.access.btree.BTreeScan.positionAtStartForForwardScan
      . . .derby.impl.store.access.btree.BTreeForwardScan.positionAtStartPosition
      . . .derby.impl.store.access.btree.BTreeForwardScan.fetchRows
      . . .derby.impl.store.access.btree.BTreeScan.fetchNext
      . . .derby.impl.sql.execute.TableScanResultSet.getNextRowCore
      . . .derby.impl.sql.execute.IndexRowToBaseRowResultSet.getNextRowCore
      . . .derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore
      . . .derby.impl.sql.execute.OnceResultSet.getNextRowCore
      . . .derby.exe.ac601a400fx011cx480cx5eacx00000010d8100.g0
      . . .derby.exe.ac601a400fx011cx480cx5eacx00000010d8100.e6
      . . .derby.impl.services.reflect.DirectCall.invoke
      . . .derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore
      . . .derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow
      . . .derby.impl.jdbc.EmbedResultSet.movePosition
      . . .derby.impl.jdbc.EmbedResultSet.next
      . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults
      . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults
      . . .derby.tools.JDBCDisplayUtil.indent_DisplayResults
      . . .derby.tools.JDBCDisplayUtil.DisplayResults
      . . .derby.impl.tools.ij.utilMain.displayResult
      . . .derby.impl.tools.ij.utilMain.doCatch
      . . .derby.impl.tools.ij.utilMain.runScriptGuts
      . . .derby.impl.tools.ij.utilMain.go
      . . .derby.impl.tools.ij.Main.go
      . . .derby.impl.tools.ij.Main.mainCore
      . . .derby.impl.tools.ij.Main14.main
      . . .derby.tools.ij.main
      ============= end nested exception, level (1) ===========
      Cleanup action completed

        Attachments

        1. NPE_Reproduction.sql
          3 kB
          Sun Seng David Tan
        2. QueryWithoutTruePred.out
          5 kB
          Katherine Marsden
        3. QueryWithTruePred.out
          11 kB
          Katherine Marsden
        4. armysFix.diff
          1 kB
          Bryan Pendleton

          Issue Links

            Activity

              People

              • Assignee:
                mamtas Mamta A. Satoor
                Reporter:
                stan Sun Seng David Tan
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: