10 Replies Latest reply on Jul 20, 2017 10:21 AM by Kulbhushan Chaskar

    teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.

    Kulbhushan Chaskar Expert

      Hi,

       

      I am using teiid admin api 9.1.3 and wildfly 10.0.0

       

      I need to call netezza database specific function i.e. ENCRYPT, I developed a custom translator for the same and successfully integrated with teiid, when I restart wildfly sever it shows netezza translator loaded successfully. When I am trying to use Encrypt function in the query teiid throws the exception, it's Full stack trace given below. The same implementation for the mysql database is working fine i.e. for the function AES_ENCRYPT. I have also checked state of the netezza VDB it's Active.

      This is the code snippet by which I am adding support for the MySql and netezza database. the method Start is under the class who extends the NetezzaExecutionFactory

       

      @Override

      public void start() {

      try {

           super.start();

           super.addPushDownFunction("ENCRYPT", "ENCRYPT", "String","Object","Object"); // netezza pushdown

           super.addPushDownFunction("AES_ENCRYPT", "AES_ENCRYPT", "String","Object","Object"); // mysql pushdown, and its working

      }

      catch(........................) {

       

      }

      }

       

      Full Stack trace:

      TEIID30328 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate ENCRYPT('TEMPRECORD', 'TEMPKEY'): TEIID30341 Function ENCRYPT.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.org.teiid.jdbc.TeiidSQLException: TEIID30328 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate ENCRYPT('TEMPRECORD', 'TEMPKEY'): TEIID30341 Function ENCRYPT.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

              at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)

              at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)

              at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:723)

              at org.teiid.jdbc.StatementImpl.access$100(StatementImpl.java:65)

              at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:561)

              at org.teiid.client.util.ResultsFuture.done(ResultsFuture.java:135)

              at org.teiid.client.util.ResultsFuture.access$200(ResultsFuture.java:40)

              at org.teiid.client.util.ResultsFuture$1.receiveResults(ResultsFuture.java:79)

              at org.teiid.net.socket.SocketServerInstanceImpl.receivedMessage(SocketServerInstanceImpl.java:285)

              at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:323)

              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

              at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

              at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

              at java.lang.reflect.Method.invoke(Method.java:497)

              at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:98)

              at com.sun.proxy.$Proxy1.read(Unknown Source)

              at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:422)

              at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:570)

              at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:423)

              at org.teiid.jdbc.StatementImpl.executeQuery(StatementImpl.java:354)

              at WithTeiid.execute(WithTeiid.java:511)

              at WithTeiid.executeSelect(WithTeiid.java:124)

              at WithTeiid.main(WithTeiid.java:80)

      Caused by: org.teiid.core.TeiidProcessingException: TEIID30328 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate ENCRYPT('TEMPRECORD', 'TEMPKEY'): TEIID30341 Function ENCRYPT.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

              at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:728)

              at org.teiid.query.processor.relational.ProjectNode.updateTuple(ProjectNode.java:194)

              at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:169)

              at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:282)

              at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:145)

              at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:151)

              at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:114)

              at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)

              at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:146)

              at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:477)

              at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:349)

              at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)

              at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:275)

              at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:282)

              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:1142)

              at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

              at java.lang.Thread.run(Thread.java:745)

      Caused by: org.teiid.core.TeiidProcessingException: TEIID30341 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30341 Function ENCRYPT.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

              at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:1389)

              at org.teiid.query.eval.Evaluator.internalEvaluate(Evaluator.java:756)

              at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:726)

              ... 18 more

      Caused by: org.teiid.core.TeiidProcessingException: TEIID30341 Remote org.teiid.api.exception.query.FunctionExecutionException: TEIID30341 Function ENCRYPT.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

              at org.teiid.query.processor.relational.SubqueryAwareEvaluator.evaluatePushdown(SubqueryAwareEvaluator.java:438)

              at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:1387)

              ... 20 more

       

      Thanks,

      Kulbhushan Chaskar.

        • 1. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
          Ramesh Reddy Master

          1) You do not need to write a custom translator for this, you could have extended the current Netezza translator, and gave it a slightly different name to use it.

          2) Even simpler, you could add "ENCRYPT" function definition on source model then use it in any transformation. For ex.

           

          CREATE FOREIGN  FUNCTION ENCRYPT (IN x String ..)

           

          see Source Supported Functions · Teiid Documentation

          • 2. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
            Steven Hawkins Master

            Based upon the exception for "ENCRYPT('TEMPRECORD', 'TEMPKEY')" what you are likely looking for is the Netezza translator to return true for supportsSelectWithoutFrom.  That will allow the evaluation of the function to be pushed as a SELECT or VALUES statement without a from clause.  Based upon the Netezza sql reference it looks like that should be supported.

             

            Can you capture on the issue the full set of pushdown functions you would like added and update your test case to return true for supportsSelectWithoutFrom to confirm that this works as expected for you?

            • 3. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
              Kulbhushan Chaskar Expert

              1) You do not need to write a custom translator for this, you could have extended the current Netezza translator, and gave it a slightly different name to use it.

              > Can you please provide the detailed example or the link where I could find the relevant example.

               

              2) Even simpler, you could add "ENCRYPT" function definition on source model then use it in any transformation.  >

              > I tried your suggestion, but it throws the same exception; VDB file contents:

               

              <?xml version="1.0" ?><vdb name="SvcSourceVdb_netezzConn" version="1"><description>VDB for: SvcSourceVdb_netezzConn, Version: 1</description><connection-type>BY_VERSION</connection-type><model name="netezzConn" type="PHYSICAL" visible="true"><property name="importer.tableTypes" value="TABLE"></property><property name="importer.importKeys" value="false"></property><source name="netezzConn" translator-name="netezza" connection-jndi-name="java:/DSNETEZZA20170707220539629"></source><metadata type="DDL"><![CDATA[CREATE FOREIGN FUNCTION ENCRYPT(val Object, val2 Object) RETURNS String;]]></metadata></model></vdb>

               

              Full Stack trace:

              org.teiid.jdbc.TeiidSQLException: TEIID30328 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate ENCRYPT('TEMPRECORD', 'TEMPKEY'): TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

              at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)

              at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)

              at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:703)

              at org.teiid.jdbc.StatementImpl.access$100(StatementImpl.java:64)

              at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:542)

              at org.teiid.client.util.ResultsFuture.done(ResultsFuture.java:135)

              at org.teiid.client.util.ResultsFuture.access$200(ResultsFuture.java:40)

              at org.teiid.client.util.ResultsFuture$1.receiveResults(ResultsFuture.java:79)

              at org.teiid.net.socket.SocketServerInstanceImpl.receivedMessage(SocketServerInstanceImpl.java:268)

              at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:306)

              at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

              at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

              at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

              at java.lang.reflect.Method.invoke(Unknown Source)

              at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:98)

              at com.sun.proxy.$Proxy1.read(Unknown Source)

              at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:405)

              at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:551)

              at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:404)

              at org.teiid.jdbc.StatementImpl.executeQuery(StatementImpl.java:338)

              at com.bitwise.mySql.WithTeiid.execute(WithTeiid.java:515)

              at com.bitwise.mySql.WithTeiid.executeSelect(WithTeiid.java:128)

              at com.bitwise.mySql.WithTeiid.main(WithTeiid.java:81)

              Caused by: org.teiid.core.TeiidProcessingException: TEIID30328 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate ENCRYPT('TEMPRECORD', 'TEMPKEY'): TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

              at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:728)

              at org.teiid.query.processor.relational.ProjectNode.updateTuple(ProjectNode.java:194)

              at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:169)

              at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:282)

              at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:145)

              at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:151)

              at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:114)

              at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)

              at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:146)

              at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:477)

              at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:349)

              at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)

              at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:275)

              at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:282)

              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(Unknown Source)

              at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

              at java.lang.Thread.run(Unknown Source)

              Caused by: org.teiid.core.TeiidProcessingException: TEIID30341 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

              at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:1389)

              at org.teiid.query.eval.Evaluator.internalEvaluate(Evaluator.java:756)

              at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:726)

              ... 18 more

              Caused by: org.teiid.core.TeiidProcessingException: TEIID30341 Remote org.teiid.api.exception.query.FunctionExecutionException: TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.TEIID30328 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate ENCRYPT('TEMPRECORD', 'TEMPKEY'): TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

               

               

              at org.teiid.query.processor.relational.SubqueryAwareEvaluator.evaluatePushdown(SubqueryAwareEvaluator.java:448)

              at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:1387)

              ... 20 more

               

              Thanks,

              Kulbhushan Chaskar

              • 4. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
                Kulbhushan Chaskar Expert

                Can you capture on the issue the full set of pushdown functions you would like added and update your test case to return true for supportsSelectWithoutFrom to confirm that this works as expected for you?

                > I am not aware of supportsSelectWithoutFrom, but I have tried the scenario using FROM clause too, getting the same exception.

                • 5. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
                  Ramesh Reddy Master

                  Can you try

                   

                  <?xml version="1.0" ?>
                  <vdb name="SvcSourceVdb_netezzConn" version="1">
                      <description>VDB for: SvcSourceVdb_netezzConn, Version: 1</description>
                      <connection-type>BY_VERSION</connection-type>
                      <model name="netezzConn" type="PHYSICAL" visible="true">
                          <property name="importer.tableTypes" value="TABLE"></property>
                          <property name="importer.importKeys" value="false"></property>
                          <source name="netezzConn" translator-name="netezza" connection-jndi-name="java:/DSNETEZZA20170707220539629"></source>
                          <metadata type="NATIVE"/>
                          <metadata type="DDL">
                              <![CDATA[
                                  CREATE FOREIGN FUNCTION ENCRYPT(val Object, val2 Object) 
                                  RETURNS String;
                              ]]>
                          </metadata>
                      </model>
                  </vdb>
                  

                   

                   

                  I added the NATIVE part to import rest of the metadata from Netezza.

                  • 6. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
                    Kulbhushan Chaskar Expert

                    I tried to execute the query by making the changes you suggested in reply, but it throws same exception, you can find full stack trace below.


                    When I tried all your suggestions with MySql all are working fine.

                     

                    Exception stack trace:

                     

                    org.teiid.jdbc.TeiidSQLException: TEIID30328 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate ENCRYPT('TEMPRECORD', 'TEMPKEY'): TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

                    at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:135)

                    at org.teiid.jdbc.TeiidSQLException.create(TeiidSQLException.java:71)

                    at org.teiid.jdbc.StatementImpl.postReceiveResults(StatementImpl.java:703)

                    at org.teiid.jdbc.StatementImpl.access$100(StatementImpl.java:64)

                    at org.teiid.jdbc.StatementImpl$2.onCompletion(StatementImpl.java:542)

                    at org.teiid.client.util.ResultsFuture.done(ResultsFuture.java:135)

                    at org.teiid.client.util.ResultsFuture.access$200(ResultsFuture.java:40)

                    at org.teiid.client.util.ResultsFuture$1.receiveResults(ResultsFuture.java:79)

                    at org.teiid.net.socket.SocketServerInstanceImpl.receivedMessage(SocketServerInstanceImpl.java:268)

                    at org.teiid.net.socket.SocketServerInstanceImpl.read(SocketServerInstanceImpl.java:306)

                    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)

                    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)

                    at java.lang.reflect.Method.invoke(Unknown Source)

                    at org.teiid.net.socket.SocketServerConnectionFactory$ShutdownHandler.invoke(SocketServerConnectionFactory.java:98)

                    at com.sun.proxy.$Proxy1.read(Unknown Source)

                    at org.teiid.net.socket.SocketServerInstanceImpl$RemoteInvocationHandler$1.get(SocketServerInstanceImpl.java:405)

                    at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:551)

                    at org.teiid.jdbc.StatementImpl.executeSql(StatementImpl.java:404)

                    at org.teiid.jdbc.StatementImpl.executeQuery(StatementImpl.java:338)

                    at com.bitwise.mySql.WithTeiid.execute(WithTeiid.java:516)

                    at com.bitwise.mySql.WithTeiid.executeSelect(WithTeiid.java:129)

                    at com.bitwise.mySql.WithTeiid.main(WithTeiid.java:81)

                    Caused by: org.teiid.core.TeiidProcessingException: TEIID30328 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30328 Unable to evaluate ENCRYPT('TEMPRECORD', 'TEMPKEY'): TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:728)

                    at org.teiid.query.processor.relational.ProjectNode.updateTuple(ProjectNode.java:194)

                    at org.teiid.query.processor.relational.ProjectNode.nextBatchDirect(ProjectNode.java:169)

                    at org.teiid.query.processor.relational.RelationalNode.nextBatch(RelationalNode.java:282)

                    at org.teiid.query.processor.relational.RelationalPlan.nextBatch(RelationalPlan.java:145)

                    at org.teiid.query.processor.QueryProcessor.nextBatchDirect(QueryProcessor.java:151)

                    at org.teiid.query.processor.QueryProcessor.nextBatch(QueryProcessor.java:114)

                    at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:164)

                    at org.teiid.query.processor.BatchCollector.collectTuples(BatchCollector.java:146)

                    at org.teiid.dqp.internal.process.RequestWorkItem.processMore(RequestWorkItem.java:477)

                    at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:349)

                    at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51)

                    at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:275)

                    at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:282)

                    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(Unknown Source)

                    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

                    at java.lang.Thread.run(Unknown Source)

                    Caused by: org.teiid.core.TeiidProcessingException: TEIID30341 Remote org.teiid.api.exception.query.ExpressionEvaluationException: TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:1389)

                    at org.teiid.query.eval.Evaluator.internalEvaluate(Evaluator.java:756)

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:726)

                    ... 18 more

                    Caused by: org.teiid.core.TeiidProcessingException: TEIID30341 Remote org.teiid.api.exception.query.FunctionExecutionException: TEIID30341 Function netezzConn.ENCRYPT is marked in the function metadata as a function that must be evaluated at the source.

                    at org.teiid.query.processor.relational.SubqueryAwareEvaluator.evaluatePushdown(SubqueryAwareEvaluator.java:448)

                    at org.teiid.query.eval.Evaluator.evaluate(Evaluator.java:1387)

                    ... 20 more

                    • 7. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
                      Steven Hawkins Master

                      > When I tried all your suggestions with MySql all are working fine.

                       

                      Again I suspect that the issue is related to the Netezza capabilities - specifically supportsSelectWithoutFrom.

                       

                      > I am not aware of supportsSelectWithoutFrom, but I have tried the scenario using FROM clause too, getting the same exception.

                       

                      Can you provide a full example of what user query you are trying to execute and the query plan from this case?

                      • 8. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
                        Kulbhushan Chaskar Expert

                        Steven my mistake I tested FROM clause using custom translator and it's not working, but with the way suggested by Ramesh it's working.

                         

                        Thanks a lot guys !!!

                         

                        Can you please elaborate more on as you said that Netezza capabilities - specifically supportsSelectWithoutFrom

                        • 9. Re: teiid throwing source.org.teiid.jdbc.TeiidSQLException when support for pushdown function is added.
                          Steven Hawkins Master

                          If you simply issue "select netezzConn.ENCRYPT('TEMPRECORD', 'TEMPKEY')" it should fail with a message similar to the above, since the translator is not advertising that it can evaluate the function without a from clause.

                           

                          If you are satisfied with using ddl to define the pushdown functions, then we can reword [TEIID-4984] Support for netezza pushdown functions - JBoss Issue Tracker  to just be for select without from support, or just resolve it in general.