6 Replies Latest reply on Jan 8, 2014 11:27 AM by shawkins

    Teiid Oracle Spatial

    tom9729

      Hi all,

       

      I am using Teiid 8.6, JBoss EAP 6.1 final, and Oracle 11g.

       

      Does anyone have a working example of using Oracle Spatial functions (SDO_*) through Teiid? It seems like there is some limited support, but I haven't been able to find much information on this.

       

      https://github.com/teiid/teiid/blob/master/connectors/translator-jdbc/src/test/java/org/teiid/translator/jdbc/oracle/TestOracleTranslator.java#L427

       

      From this it looks like there are several Oracle spatial function defined in Teiid, but queries similar to the ones in the tester are not working for me.

       

      I cannot get the spatial functions to work in the WHERE clause. They appear to work fine as SELECTs.

       

      This works:

       

      select sdo_relate(footprint,footprint,'mask=ANYINTERACT') from foo.stuff;

       

      This does not work:

       

      select * from foo.stuff where sdo_relate(footprint,footprint,'mask=ANYINTERACT') = 'TRUE';

       

      TEIID30019 Unexpected exception for request 10BpOpvKhXev.15: java.lang.NullPointerException

        at org.teiid.query.metadata.TempMetadataAdapter.isVirtualModel(TempMetadataAdapter.java:403) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

        at org.teiid.query.optimizer.relational.rules.CapabilitiesUtil.supports(CapabilitiesUtil.java:451) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

        at org.teiid.query.processor.relational.SubqueryAwareEvaluator.evaluatePushdown(SubqueryAwareEvaluator.java:359) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

      <snip>

       

      I also tried adding the functions I need that I need in my VDB as FOREIGN:

       

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

      <vdb name="Foo" version="1">

        <property name="UseConnectorMetadata" value="true"/>

        <model name="Foo">

          <property name="importer.useFullSchemaName" value="false"/>

          <property name="importer.tableTypes" value="TABLE,VIEW"/>

          <property name="importer.schemaPattern" value="FOO"/>

          <source name="foo" translator-name="oracle" connection-jndi-name="java:/foo-ds"/>

          <metadata type="NATIVE,DDL"><![CDATA[

                 CREATE FOREIGN FUNCTION sdo_elem_info_array(variadic x integer) RETURNS object;

                 CREATE FOREIGN FUNCTION sdo_ordinate_array(variadic x integer) RETURNS string;

                 CREATE FOREIGN FUNCTION sdo_geometry(a integer, b integer, c object, d object, e object) RETURNS object;

                 CREATE FOREIGN FUNCTION sdo_anyinteract(a object, b object) RETURNS string;

               ]]>

          </metadata>

        </model>

      </vdb>

       

      Again, these work fine in SELECTs but do not work in WHERE. I'm pretty new to Teiid, but it appears as though it is trying to evaluate the expressions early. In the log I see things like "select sdo_anyinteract(?,?) from dual" which I don't think will ever work.

       

      Let me know if you need any more info. Any help would be appreciated. Thanks!

        • 1. Re: Teiid Oracle Spatial
          shawkins

          This are a couple of issues here.  The odd behavior is due to an over zealous check that prevents the pushdown of a comparison if the metadata reports the column is non-comparable (probably due to the object type for footprint).  Then since it's a must pushdown function we are attempting to compensate by issuing a scalar select.  The exception is a regression in the must pushdown logic that does not consider the quasi-system functions reported by the translators.

           

          I'll correct both of these.  A possible workaround would be to turn on object compatibility and use alter statements to modify the metadata so that the desired columns are marked as searchable.

           

          Steve

          1 of 1 people found this helpful
          • 2. Re: Teiid Oracle Spatial
            tom9729

            Thanks Steve! That seems to have done the trick.

             

            I added this to my JBoss start command:

             

            -Dorg.teiid.comparableObject=true

             

            Then I changed my VDB to look like this (added ALTER command to DDL):

             

            <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

            <vdb name="Foo" version="1">

              <property name="UseConnectorMetadata" value="true"/>

              <model name="Foo">

                <property name="importer.useFullSchemaName" value="false"/>

                <property name="importer.tableTypes" value="TABLE,VIEW"/>

                <property name="importer.schemaPattern" value="FOO"/>

                <source name="foo" translator-name="oracle" connection-jndi-name="java:/foo-ds"/>

                <metadata type="NATIVE,DDL"><![CDATA[

                       CREATE FOREIGN FUNCTION sdo_elem_info_array(variadic x integer) RETURNS object;

                       CREATE FOREIGN FUNCTION sdo_ordinate_array(variadic x integer) RETURNS string;

                       CREATE FOREIGN FUNCTION sdo_geometry(a integer, b integer, c object, d object, e object) RETURNS object;

                       CREATE FOREIGN FUNCTION sdo_anyinteract(a object, b object) RETURNS string;

             

                       ALTER FOREIGN TABLE "STUFF" ALTER COLUMN "FOOTPRINT" OPTIONS(SET SEARCHABLE 'Searchable');

                     ]]>

                </metadata>

              </model>

            </vdb>

             

            Now these work:

             

            select id from foo.stuff where sdo_relate(footprint,footprint,'mask=ANYINTERACT') = 'TRUE';

            select id from foo.stuff where sdo_anyinteract(footprint,footprint) = 'TRUE';

             

            This also works:

             

            select id from foo.stuff

            where sdo_anyinteract(

                     footprint,

                     sdo_geometry(

                        2003,

                        8307,

                        null,

                        sdo_elem_info_array(1, 1003, 3),

                        sdo_ordinate_array(0, 0, 100, 100)

                     )

                  ) = 'TRUE';

             

            Note: I had to avoid selecting the footprint column because that type is not serializable. Overriding the translator StructRetrieval property fixes this, but I don't really need to do this because it's an opaque datatype as far as I care. Just making note of this for anyone else who runs into errors when doing "SELECT * ..." on a table like this.

             

              <translator name="oracle-override" type="oracle">

                <property name="StructRetrieval" value="COPY"/>

              </translator>

            • 3. Re: Teiid Oracle Spatial
              tom9729

              Hmmm, ran into another issue related to this.

               

              I wanted to add another Oracle database to my VDB and be able to run spatial queries on both individually. I changed my VDB to look like this:

               

              <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

              <vdb name="Foo" version="1">

                <property name="UseConnectorMetadata" value="true"/>

                <model name="foo">

                  <property name="importer.useFullSchemaName" value="false"/>

                  <property name="importer.tableTypes" value="TABLE,VIEW"/>

                  <property name="importer.schemaPattern" value="FOO"/>

                  <source name="foo" translator-name="oracle" connection-jndi-name="java:/foo-ds"/>

                  <metadata type="NATIVE,DDL"><![CDATA[

                         CREATE FOREIGN FUNCTION sdo_elem_info_array(variadic x integer) RETURNS object;

                         CREATE FOREIGN FUNCTION sdo_ordinate_array(variadic x double) RETURNS string;

                         CREATE FOREIGN FUNCTION sdo_geometry(a integer, b integer, c object, d object, e object) RETURNS object;

                         CREATE FOREIGN FUNCTION sdo_anyinteract(a object, b object) RETURNS string;

                         ALTER FOREIGN TABLE "STUFF" ALTER COLUMN "FOOTPRINT" OPTIONS(SET SEARCHABLE 'Searchable');

                       ]]>

                  </metadata>

                </model>

                <model name="bar">

                  <property name="importer.useFullSchemaName" value="false"/>

                  <property name="importer.tableTypes" value="TABLE,VIEW"/>

                  <property name="importer.schemaPattern" value="BAR"/>

                  <source name="bar" translator-name="oracle" connection-jndi-name="java:/bar-ds"/>

                  <metadata type="NATIVE,DDL"><![CDATA[

                         CREATE FOREIGN FUNCTION sdo_elem_info_array(variadic x integer) RETURNS object;

                         CREATE FOREIGN FUNCTION sdo_ordinate_array(variadic x double) RETURNS string;

                         CREATE FOREIGN FUNCTION sdo_geometry(a integer, b integer, c object, d object, e object) RETURNS object;

                         CREATE FOREIGN FUNCTION sdo_anyinteract(a object, b object) RETURNS string;

                         ALTER FOREIGN TABLE "STUFF" ALTER COLUMN "FOOTPRINT" OPTIONS(SET SEARCHABLE 'Searchable');

                       ]]>

                  </metadata>

                </model>

              </vdb>

               

              This gives me two schemas with mostly the same DDL, but different data. The Oracle versions are slightly different (one is XE), but I don't think that is the problem.

               

              This query works:

               

              select id from bar.stuff where sdo_anyinteract(footprint,footprint) = 'TRUE';

               

              This query does not work:

               

              select id from foo.stuff where sdo_anyinteract(footprint,footprint) = 'TRUE';

               

              13:59:50,088 ERROR [org.teiid.PROCESSOR] (Worker70_QueryProcessorQueue3266) 1GvvMGu0PSoi TEIID30019 Unexpected exception for request 1GvvMGu0PSoi.0: java.lang.NullPointerException

                at org.teiid.query.optimizer.relational.rules.CapabilitiesUtil.getCapabilities(CapabilitiesUtil.java:436) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.CapabilitiesUtil.isSameConnector(CapabilitiesUtil.java:423) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.visitor.EvaluatableVisitor.visit(EvaluatableVisitor.java:93) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.symbol.Function.acceptVisitor(Function.java:173) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor$1.visitVisitor(CriteriaCapabilityValidatorVisitor.java:765) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.postVisitVisitor(PreOrPostOrderNavigator.java:60) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.visit(PreOrPostOrderNavigator.java:197) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.symbol.Function.acceptVisitor(Function.java:173) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:63) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor$1.visitNode(CriteriaCapabilityValidatorVisitor.java:739) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.visit(PreOrPostOrderNavigator.java:194) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.symbol.Function.acceptVisitor(Function.java:173) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:63) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor$1.visitNode(CriteriaCapabilityValidatorVisitor.java:739) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.visit(PreOrPostOrderNavigator.java:194) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.symbol.Function.acceptVisitor(Function.java:173) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:63) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor$1.visitNode(CriteriaCapabilityValidatorVisitor.java:739) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.visit(PreOrPostOrderNavigator.java:132) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.sql.lang.CompareCriteria.acceptVisitor(CompareCriteria.java:126) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.canPushLanguageObject(CriteriaCapabilityValidatorVisitor.java:785) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.canPushLanguageObject(CriteriaCapabilityValidatorVisitor.java:691) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.RuleRaiseAccess.canRaiseOverSelect(RuleRaiseAccess.java:481) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.RulePushSelectCriteria.examinePath(RulePushSelectCriteria.java:448) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.RulePushSelectCriteria.pushTowardOriginatingNode(RulePushSelectCriteria.java:359) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.rules.RulePushSelectCriteria.execute(RulePushSelectCriteria.java:123) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.RelationalPlanner.executeRules(RelationalPlanner.java:606) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.relational.RelationalPlanner.optimize(RelationalPlanner.java:255) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.query.optimizer.QueryOptimizer.optimizePlan(QueryOptimizer.java:159) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.Request.generatePlan(Request.java:408) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.Request.processRequest(Request.java:435) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.RequestWorkItem.processNew(RequestWorkItem.java:600) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:309) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:248) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:273) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]

                at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]

                at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]

               

              If I swap the model names, I get the same results. It looks like the first one (alphabetically) works.

               

              I believe I found a workaround for this, which is to use SDO_RELATE which is defined in Teiid:

               

              These both work:

               

              select id from bar.stuff where sdo_relate(footprint,footprint,'mask=ANYINTERACT') = 'TRUE';

               

              select id from foo.stuff where sdo_relate(footprint,footprint,'mask=ANYINTERACT') = 'TRUE';

               

              These also both work:

               

              select id from bar.stuff where sdo_relate(footprint,'sdo_geometry(2003, 8307,null,sdo_elem_info_array(1, 1003, 3),sdo_ordinate_array(0, 0, 100, 100))','mask=ANYINTERACT') = 'TRUE';

               

              select id from foo.stuff where sdo_relate(footprint,'sdo_geometry(2003, 8307,null,sdo_elem_info_array(1, 1003, 3),sdo_ordinate_array(0, 0, 100, 100))','mask=ANYINTERACT') = 'TRUE';

              • 4. Re: Teiid Oracle Spatial
                shawkins

                [TEIID-2792] Must pushdown compensation does not account for translator pushdown functions - JBoss Issue Tracker and [TEIID-2793] Searchablity check is too broad - JBoss Issue Tracker were logged to address the issues from the first post.  At first glance I'm not sure why you aren't getting an exception about an ambiguous function.  Since the functions are defined with a schema scope, as a workaround you may need to match them with the schema of the table that you are trying to select -  select id from bar.stuff where bar.sdo_relate...

                 

                I'll have a look and see what may be going amiss here.

                 

                Steve

                1 of 1 people found this helpful
                • 5. Re: Teiid Oracle Spatial
                  tom9729

                  Qualifying the function names works for my foreign functions. I didn't realize they were scoped to a schema, but that makes a lot of sense. I have switched to using SDO_RELATE with "mask=ANYINTERACT" which should do the same thing and works without qualifying it. I think it is defined here:

                   

                  https://github.com/teiid/teiid/blob/master/connectors/translator-jdbc/src/main/resources/OracleSpatialFunctions.xmi

                   

                  I ran into another issue that might be related to TEIID-2792. I get a NPE when doing SDO_RELATE in an OR with expressions from another schema. AND works fine, and doing an OR with expressions from the same schema works fine.

                   

                  select

                     spatial_stuff.stuff_id

                  from foo.spatial_stuff spatial_stuff

                  join bar.stuff stuff on

                     spatial_stuff.stuff_id = stuff.id

                  where (

                     sdo_relate(

                        spatial_stuff.footprint,

                        'sdo_geometry(2003, 8307, null, sdo_elem_info_array(1, 1003, 3), sdo_ordinate_array(0, 0, 100, 100))',

                        'mask=ANYINTERACT'

                     ) = 'TRUE'

                  ) or (stuff.id is null);

                   

                  07:57:19,961 ERROR [org.teiid.PROCESSOR] (Worker139_QueryProcessorQueue6630) dWxWzmHHkgra TEIID30019 Unexpected exception for request dWxWzmHHkgra.7: java.lang.NullPointerException

                    at org.teiid.query.metadata.TempMetadataAdapter.isVirtualModel(TempMetadataAdapter.java:403) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.optimizer.relational.rules.CapabilitiesUtil.supports(CapabilitiesUtil.java:451) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.SubqueryAwareEvaluator.evaluatePushdown(SubqueryAwareEvaluator.java:359) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:1185) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.internalEvaluate(Evaluator.java:644) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:614) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:283) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.internalEvaluateTVL(Evaluator.java:223) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:249) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.internalEvaluateTVL(Evaluator.java:219) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.evaluateTVL(Evaluator.java:212) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:206) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.JoinNode.matchesCriteria(JoinNode.java:336) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.MergeJoinStrategy.process(MergeJoinStrategy.java:247) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.JoinNode.nextBatchDirect(JoinNode.java:211) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.LimitNode.nextBatchDirect(LimitNode.java:102) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:146) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:278) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:136) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:151) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:114) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:159) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:141) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:435) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:320) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:248) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:273) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:214) [teiid-engine-8.6.0.Final.jar:8.6.0.Final]

                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_45]

                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_45]

                    at java.lang.Thread.run(Thread.java:744) [rt.jar:1.7.0_45]

                   

                  Thanks,

                  Tom

                  • 6. Re: Teiid Oracle Spatial
                    shawkins

                    To recap the issue here:

                     

                    The root is [TEIID-2793] Searchablity check is too broad - JBoss Issue Tracker which you have worked around by making the object columns searchable.

                     

                    There are two parts then to [TEIID-2792] Must pushdown compensation does not account for translator pushdown functions - JBoss Issue Tracker the first exception is a regression introduced by [TEIID-2571] Generally allow must pushdown function evaluation - JBoss Issue Tracker In 8.4- you would have seen a better exception saying that we could not execute the function.  The second part is the exception from the previous post.  Similarly this is a regression from TEIID-2571 that only affects must pushdown functions, but I'm not sure what the handling was in 8.4-.

                     

                    [TEIID-2794] ambiguous function calls are not properly handled - JBoss Issue Tracker enforces that schema scoped functions with the same name require qualification.  This was a hold over from the metamatrix days (in which all function had a unique simple name) and a peculiarity with how pushdown functions are used in Designer.

                     

                    Sorry that you hit so many issues right off the bat.

                     

                    Steve