3 Replies Latest reply on Apr 1, 2013 9:19 AM by shawkins

    class cast error

    virtualdatabase

      Getting the following error:

       

      java.lang.ClassCastException: org.teiid.query.sql.symbol.ExpressionSymbol cannot be cast to org.teiid.query.sql.symbol.ElementSymbol

       

       

       

      The error was introduced when I added a procedure which takes a bigdecimal as input and I join to a table with a column of the same type.


      Pretty simple but I'm sure someone will  have more questions to help...

       

      Ask away...

       

      Thanks in advance!!

        • 1. Re: class cast error
          shawkins

          You'll want to post representative sql, the version you are using, and ideally the stacktrace.  It should be easy to confirm from there if that has already been resolved.

           

          Steve

          • 2. Re: class cast error
            virtualdatabase

            SQL:

             

            SELECT  cols           FROM                    omf_radmgmt_order_st AS oros, getTechList3 AS gmt          WHERE (gmt.ORDER_ID = oros.ORDER_ID)            OPTION MAKEDEP gmt

             

            GMT is a procedure taking in  big decimal (same as oros.order_id)

             

            Version 5.3.1

             

            Stack Trace:

             

            15:06:51,779 ERROR [PROCESSOR] Unexpected exception for request +9k3m46A6L4Z.19

            java.lang.ClassCastException: org.teiid.query.sql.symbol.ExpressionSymbol cannot be cast to org.teiid.query.sql.symbol.ElementSymbol

                    at org.teiid.query.processor.relational.GroupingNode.initialize(GroupingNode.java:195)

                    at org.teiid.query.processor.relational.RelationalPlan.connectExternal(RelationalPlan.java:117)

                    at org.teiid.query.processor.relational.RelationalPlan.connectExternal(RelationalPlan.java:122)

                    at org.teiid.query.processor.relational.RelationalPlan.connectExternal(RelationalPlan.java:122)

                    at org.teiid.query.processor.relational.RelationalPlan.initialize(RelationalPlan.java:112)

                    at org.teiid.query.processor.QueryProcessor.init(QueryProcessor.java:176)

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

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

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

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

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

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

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

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

                    at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:122)

                    at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:292)

                    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

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

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

             

            Also if thiis helps at all... I CAN perform the following query using the function:

             

            select * from  getTechList3  WHERE ORDER_ID in (17662,18304,22282)

             

            as well as a join:

             

            select distinct a.* from  getTechList3 a,omf_radtech_order_st oros  WHERE oros.ORDER_ID in (17662,18304,22282) and oros.order_id = a.order_id

             

            I nailed the problem down a bit further....

             

            The query selects many columns, however if I comment out the ones that are functions (happen all to be push-down functions) the query will then execute (including the most recently added reference to the procedure)

            The whole query worked intact prior to the additional reference to the proc (GMT above) and continues to work with it as long as I remove/comment-out the columns that refer to functions)

            • 3. Re: class cast error
              shawkins

              There are several view layers involved here as well correct as presumably omf_radmgmt_order_st is a view with a grouping operation at the top level correct?  My guesses at reproducing this on latest were not successful, so since this is against EDS 5.3.1 you should open a support ticket with the vdb to ensure that it has been addressed by a later patch.

               

              Steve