Uploaded image for project: 'Teiid'
  1. Teiid
  2. TEIID-5167

PrestoDB translator - NULL values are not allowed on the probe side of SemiJoin operator

    XMLWordPrintable

Details

    • Bug
    • Resolution: Duplicate
    • Major
    • None
    • 8.12.11.6_4
    • JDBC Driver
    • None

    Description

      When running queries containg a subquery such as

      SELECT INTKEY, DOUBLENUM FROM BQT1.SMALLA WHERE DOUBLENUM <> ALL (SELECT DOUBLENUM FROM BQT1.SMALLA WHERE INTKEY = 40) 
      

      An exception is thrown:

      org.teiid.translator.TranslatorException: Unexpected exception while translating results: Query failed (#20171121_103829_00016_8zhqn): NULL values are not allowed on the probe side of SemiJoin operator. See the query plan for details.
              at org.teiid.translator.jdbc.JDBCQueryExecution.next(JDBCQueryExecution.java:351) [translator-jdbc-8.12.11.6_4-redhat-64-7.jar:8.12.11.6_4-redhat-64-7]
              at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.handleBatch(ConnectorWorkItem.java:433)
              at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.more(ConnectorWorkItem.java:236)
              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_141]
              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_141]
              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_141]
              at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_141]
              at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
              at com.sun.proxy.$Proxy80.more(Unknown Source)
              at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:309)
              at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112)
              at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
              at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_141]
              at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
              at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
              at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
              at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
              at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_141]
              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_141]
              at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_141]
      Caused by: java.sql.SQLException: Query failed (#20171121_103829_00016_8zhqn): NULL values are not allowed on the probe side of SemiJoin operator. See the query plan for details.
              at com.facebook.presto.jdbc.PrestoResultSet.resultsException(PrestoResultSet.java:1799)
              at com.facebook.presto.jdbc.PrestoResultSet$ResultsPageIterator.computeNext(PrestoResultSet.java:1787)
              at com.facebook.presto.jdbc.PrestoResultSet$ResultsPageIterator.computeNext(PrestoResultSet.java:1756)
              at com.facebook.presto.jdbc.internal.guava.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:145)
              at com.facebook.presto.jdbc.internal.guava.collect.AbstractIterator.hasNext(AbstractIterator.java:140)
              at com.facebook.presto.jdbc.internal.guava.collect.TransformedIterator.hasNext(TransformedIterator.java:42)
              at com.facebook.presto.jdbc.internal.guava.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:50)
              at com.facebook.presto.jdbc.internal.guava.collect.MultitransformedIterator.hasNext(MultitransformedIterator.java:50)
              at com.facebook.presto.jdbc.PrestoResultSet.next(PrestoResultSet.java:149)
              at org.jboss.jca.adapters.jdbc.WrappedResultSet.next(WrappedResultSet.java:1862)
              at org.teiid.translator.jdbc.JDBCQueryExecution.next(JDBCQueryExecution.java:338) [translator-jdbc-8.12.11.6_4-redhat-64-7.jar:8.12.11.6_4-redhat-64-7]
              ... 19 more
      

      The query is translated as

      SELECT g_0.intkey AS c_0, g_0.doublenum AS c_1 FROM smalla AS g_0 WHERE g_0.doublenum NOT IN (SELECT g_1.doublenum FROM smalla AS g_1 WHERE g_1.intkey = 40) 
      

      Attachments

        Activity

          People

            rhn-engineering-shawkins Steven Hawkins
            asmigala@redhat.com Andrej Smigala
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: