3 Replies Latest reply on May 17, 2016 2:41 PM by Steven Hawkins

    User Defined Functions - External jar

    parrotola Novice

      Hi,

      if I created a function with User Defined Functions using external jar, I have this  exception:

       

      TEIID30384 Error while evaluating function .... Originally ExpressionEvaluationException

       

      while I created a function without external jar, it did work.

       

      Best regards.

       

      Francesco

        • 1. Re: User Defined Functions - External jar
          Steven Hawkins Master

          Can you provide the full stack trace?

          • 2. Re: User Defined Functions - External jar
            parrotola Novice

            10:34:38,119 INFO  [org.teiid.PLANNER] (Worker0_QueryProcessorQueue47) GzUPLUyEV2u5

            ============================================================================

            USER COMMAND:

            SELECT convertUri(ViewModel.new_table.citta, '', '') FROM ViewModel.new_table

             

             

            ----------------------------------------------------------------------------

            OPTIMIZE:

            SELECT convertUri(ViewModel.new_table.citta, '', '') FROM ViewModel.new_table

             

             

            ----------------------------------------------------------------------------

            GENERATE CANONICAL:

            SELECT convertUri(ViewModel.new_table.citta, '', '') FROM ViewModel.new_table

             

             

            CANONICAL PLAN:

            Project(groups=[ViewModel.new_table], props={PROJECT_COLS=[convertUri(ViewModel.new_table.citta, '', '')]})

              Source(groups=[ViewModel.new_table], props={NESTED_COMMAND=SELECT A.id_transazione, A.cognome, A.nome, A.indirizzo, A.citta, A.stato, A.regione, A.iban, A.iban2, A.data, A.filiale, A.cifra, A.d_clienti, A.d_filiali, A.d_ip, A.d_prodotti FROM (EXEC SourceModel_1.getTextFiles('csvprova.csv')) AS f CROSS JOIN TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, SYMBOL_MAP={ViewModel.new_table.id_transazione=A.id_transazione, ViewModel.new_table.cognome=A.cognome, ViewModel.new_table.nome=A.nome, ViewModel.new_table.indirizzo=A.indirizzo, ViewModel.new_table.citta=A.citta, ViewModel.new_table.stato=A.stato, ViewModel.new_table.regione=A.regione, ViewModel.new_table.iban=A.iban, ViewModel.new_table.iban2=A.iban2, ViewModel.new_table.data=A.data, ViewModel.new_table.filiale=A.filiale, ViewModel.new_table.cifra=A.cifra, ViewModel.new_table.d_clienti=A.d_clienti, ViewModel.new_table.d_filiali=A.d_filiali, ViewModel.new_table.d_ip=A.d_ip, ViewModel.new_table.d_prodotti=A.d_prodotti}})

                Project(groups=[A], props={PROJECT_COLS=[A.id_transazione, A.cognome, A.nome, A.indirizzo, A.citta, A.stato, A.regione, A.iban, A.iban2, A.data, A.filiale, A.cifra, A.d_clienti, A.d_filiali, A.d_ip, A.d_prodotti]})

                  Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[]})

                    Source(groups=[f], props={NESTED_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), SYMBOL_MAP={f.file=SourceModel_1.getTextFiles.file, f.filePath=SourceModel_1.getTextFiles.filePath}})

                      Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file, SourceModel_1.getTextFiles.filePath]})

                        Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv')})

                    Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}})

             

             

             

             

            ============================================================================

            EXECUTING PlaceAccess

             

             

            AFTER:

            Project(groups=[ViewModel.new_table], props={PROJECT_COLS=[convertUri(ViewModel.new_table.citta, '', '')]})

              Source(groups=[ViewModel.new_table], props={NESTED_COMMAND=SELECT A.id_transazione, A.cognome, A.nome, A.indirizzo, A.citta, A.stato, A.regione, A.iban, A.iban2, A.data, A.filiale, A.cifra, A.d_clienti, A.d_filiali, A.d_ip, A.d_prodotti FROM (EXEC SourceModel_1.getTextFiles('csvprova.csv')) AS f CROSS JOIN TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, SYMBOL_MAP={ViewModel.new_table.id_transazione=A.id_transazione, ViewModel.new_table.cognome=A.cognome, ViewModel.new_table.nome=A.nome, ViewModel.new_table.indirizzo=A.indirizzo, ViewModel.new_table.citta=A.citta, ViewModel.new_table.stato=A.stato, ViewModel.new_table.regione=A.regione, ViewModel.new_table.iban=A.iban, ViewModel.new_table.iban2=A.iban2, ViewModel.new_table.data=A.data, ViewModel.new_table.filiale=A.filiale, ViewModel.new_table.cifra=A.cifra, ViewModel.new_table.d_clienti=A.d_clienti, ViewModel.new_table.d_filiali=A.d_filiali, ViewModel.new_table.d_ip=A.d_ip, ViewModel.new_table.d_prodotti=A.d_prodotti}})

                Project(groups=[A], props={PROJECT_COLS=[A.id_transazione, A.cognome, A.nome, A.indirizzo, A.citta, A.stato, A.regione, A.iban, A.iban2, A.data, A.filiale, A.cifra, A.d_clienti, A.d_filiali, A.d_ip, A.d_prodotti]})

                  Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[]})

                    Source(groups=[f], props={NESTED_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), SYMBOL_MAP={f.file=SourceModel_1.getTextFiles.file, f.filePath=SourceModel_1.getTextFiles.filePath}})

                      Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file, SourceModel_1.getTextFiles.filePath]})

                        Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055})

                          Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv')})

                    Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}})

             

             

             

             

            ============================================================================

            EXECUTING AssignOutputElements

             

             

            AFTER:

            Project(groups=[ViewModel.new_table], props={PROJECT_COLS=[convertUri(ViewModel.new_table.citta, '', '')], OUTPUT_COLS=[convertUri(ViewModel.new_table.citta, '', '')]})

              Source(groups=[ViewModel.new_table], props={NESTED_COMMAND=SELECT A.id_transazione, A.cognome, A.nome, A.indirizzo, A.citta, A.stato, A.regione, A.iban, A.iban2, A.data, A.filiale, A.cifra, A.d_clienti, A.d_filiali, A.d_ip, A.d_prodotti FROM (EXEC SourceModel_1.getTextFiles('csvprova.csv')) AS f CROSS JOIN TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, SYMBOL_MAP={ViewModel.new_table.citta=A.citta}, OUTPUT_COLS=[ViewModel.new_table.citta]})

                Project(groups=[A], props={PROJECT_COLS=[A.citta], OUTPUT_COLS=[A.citta]})

                  Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=[A.citta]})

                    Source(groups=[f], props={NESTED_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), SYMBOL_MAP={f.file=SourceModel_1.getTextFiles.file}, OUTPUT_COLS=[file]})

                      Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file], OUTPUT_COLS=[SourceModel_1.getTextFiles.file]})

                        Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055, OUTPUT_COLS=[SourceModel_1.getTextFiles.file, SourceModel_1.getTextFiles.filePath]})

                          Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), OUTPUT_COLS=[SourceModel_1.getTextFiles.file]})

                    Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}, OUTPUT_COLS=[A.citta]})

             

             

             

             

            ============================================================================

            EXECUTING MergeVirtual

             

             

            AFTER:

            Project(groups=[A], props={PROJECT_COLS=[convertUri(A.citta, '', '')], OUTPUT_COLS=[convertUri(A.citta, '', '')]})

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=[A.citta]})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), OUTPUT_COLS=[SourceModel_1.getTextFiles.file]})

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING PushNonJoinCriteria

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=[A.citta]})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING CleanCriteria

             

             

            AFTER:

            Project(groups=[A], props={PROJECT_COLS=[convertUri(A.citta, '', '')], OUTPUT_COLS=null})

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=null})

                Source(groups=[f], props={NESTED_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), SYMBOL_MAP={f.file=SourceModel_1.getTextFiles.file}, OUTPUT_COLS=null})

                  Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file], OUTPUT_COLS=null})

                    Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055, OUTPUT_COLS=null})

                      Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), OUTPUT_COLS=null})

                Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}, OUTPUT_COLS=null})

             

             

             

             

            ============================================================================

            EXECUTING RaiseAccess

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A])

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file], OUTPUT_COLS=null})

                    Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055, OUTPUT_COLS=null})

                      Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), OUTPUT_COLS=null})

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING CopyCriteria

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=null, IS_COPIED=true})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING CleanCriteria

             

             

            AFTER:

            Project(groups=[A], props={PROJECT_COLS=[convertUri(A.citta, '', '')], OUTPUT_COLS=null})

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=null, IS_COPIED=true})

                Source(groups=[f], props={NESTED_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), SYMBOL_MAP={f.file=SourceModel_1.getTextFiles.file}, OUTPUT_COLS=null})

                  Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file], OUTPUT_COLS=null})

                    Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055, OUTPUT_COLS=null})

                      Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), OUTPUT_COLS=null})

                Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}, OUTPUT_COLS=null})

             

             

             

             

            ============================================================================

            EXECUTING PlanJoins

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=null, IS_COPIED=true})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}, OUTPUT_COLS=null})

             

             

             

             

            ============================================================================

            EXECUTING PushSelectCriteria

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A])

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING RaiseAccess

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A])

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file], OUTPUT_COLS=null})

                    Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055, OUTPUT_COLS=null})

                      Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), OUTPUT_COLS=null})

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING PlanOuterJoins

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=null, IS_COPIED=true})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING ChooseJoinStrategy

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=null, IS_COPIED=true})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING ChooseDependent

            LOW [Relational Planner] parent join is CROSS - Rejecting dependent join Source(groups=[f], props={NESTED_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), SYMBOL_MAP={f.file=SourceModel_1.getTextFiles.file}, OUTPUT_COLS=null}

            LOW [Relational Planner] parent join is CROSS - Rejecting dependent join Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}, OUTPUT_COLS=null}

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=null, IS_COPIED=true})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING AssignOutputElements

             

             

            AFTER:

            Project(groups=[A], props={PROJECT_COLS=[convertUri(A.citta, '', '')], OUTPUT_COLS=[convertUri(A.citta, '', '')]})

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=[A.citta], IS_COPIED=true})

                Source(groups=[f], props={NESTED_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), SYMBOL_MAP={f.file=SourceModel_1.getTextFiles.file}, OUTPUT_COLS=[file]})

                  Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file], OUTPUT_COLS=[SourceModel_1.getTextFiles.file]})

                    Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055, OUTPUT_COLS=[SourceModel_1.getTextFiles.file, SourceModel_1.getTextFiles.filePath]})

                      Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), OUTPUT_COLS=[SourceModel_1.getTextFiles.file]})

                Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}, OUTPUT_COLS=[A.citta]})

             

             

             

             

            ============================================================================

            EXECUTING CalculateCost

             

             

            AFTER:

            Project(groups=[A], props={PROJECT_COLS=[convertUri(A.citta, '', '')], OUTPUT_COLS=[convertUri(A.citta, '', '')], EST_CARDINALITY=-1.0})

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_LOOP, JOIN_CRITERIA=[], OUTPUT_COLS=[A.citta], IS_COPIED=true, EST_CARDINALITY=-1.0})

                Source(groups=[f], props={NESTED_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), SYMBOL_MAP={f.file=SourceModel_1.getTextFiles.file}, OUTPUT_COLS=[file], EST_CARDINALITY=-1.0, EST_COL_STATS={file=[-1.0, -1.0]}})

                  Project(groups=[SourceModel_1.getTextFiles], props={PROJECT_COLS=[SourceModel_1.getTextFiles.file], OUTPUT_COLS=[SourceModel_1.getTextFiles.file], EST_CARDINALITY=-1.0})

                    Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055, OUTPUT_COLS=[SourceModel_1.getTextFiles.file, SourceModel_1.getTextFiles.filePath], EST_CARDINALITY=-1.0})

                      Source(groups=[SourceModel_1.getTextFiles], props={VIRTUAL_COMMAND=EXEC SourceModel_1.getTextFiles('csvprova.csv'), OUTPUT_COLS=[SourceModel_1.getTextFiles.file], EST_COL_STATS={SourceModel_1.getTextFiles.file=[-1.0, -1.0]}, EST_CARDINALITY=-1.0})

                Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}, OUTPUT_COLS=[A.citta], EST_COL_STATS={A.citta=[-1.0, -1.0]}, EST_CARDINALITY=-1.0})

             

             

             

             

            ============================================================================

            EXECUTING ImplementJoinStrategy

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_TABLE, JOIN_CRITERIA=[], OUTPUT_COLS=[A.citta], IS_COPIED=true, EST_CARDINALITY=-1.0, RIGHT_NESTED_REFERENCES={file=file}})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A], props={TABLE_FUNCTION=TEXTTABLE(file COLUMNS id_transazione string, cognome string, nome string, indirizzo string, citta string, stato string, regione string, iban string, iban2 string, data string, filiale string, cifra string, d_clienti string, d_filiali string, d_ip string, d_prodotti string DELIMITER '%' HEADER) AS A, CORRELATED_REFERENCES={file=file}, OUTPUT_COLS=[A.citta], EST_COL_STATS={A.citta=[-1.0, -1.0]}, EST_CARDINALITY=-1.0})

             

             

             

             

            ============================================================================

            EXECUTING MergeCriteria

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A])

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING PlanSorts

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A], props={JOIN_TYPE=CROSS JOIN, JOIN_STRATEGY=NESTED_TABLE, JOIN_CRITERIA=[], OUTPUT_COLS=[A.citta], IS_COPIED=true, EST_CARDINALITY=-1.0, RIGHT_NESTED_REFERENCES={file=file}})

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles])

                      Source(groups=[SourceModel_1.getTextFiles])

                Source(groups=[A])

             

             

             

             

            ============================================================================

            EXECUTING CollapseSource

             

             

            AFTER:

            Project(groups=[A])

              Join(groups=[f, A])

                Source(groups=[f])

                  Project(groups=[SourceModel_1.getTextFiles])

                    Access(groups=[SourceModel_1.getTextFiles], props={SOURCE_HINT=null, MODEL_ID=Schema name=SourceModel_1, nameInSource=null, uuid=mmuuid:5f82a4a1-d55c-4432-8baf-37ec61653055, OUTPUT_COLS=[SourceModel_1.getTextFiles.file, SourceModel_1.getTextFiles.filePath], EST_CARDINALITY=-1.0, ATOMIC_REQUEST=EXEC SourceModel_1.getTextFiles('csvprova.csv')})

                Source(groups=[A])

             

             

             

             

            ============================================================================

            CONVERTING PLAN TREE TO PROCESS TREE

             

             

            PROCESS PLAN =

            ProjectNode(0) output=[convertUri(A.citta, '', '')] [convertUri(A.citta, '', '')]

              JoinNode(1) [NESTED TABLE JOIN] [CROSS JOIN] output=[A.citta]

                ProjectNode(2) output=[file] [SourceModel_1.getTextFiles.file]

                  AccessNode(3) output=[SourceModel_1.getTextFiles.file, SourceModel_1.getTextFiles.filePath] EXEC SourceModel_1.getTextFiles('csvprova.csv')

                TextTableNode(4) output=[A.citta]

             

             

            ============================================================================

             

             

            ----------------------------------------------------------------------------

            OPTIMIZATION COMPLETE:

            PROCESSOR PLAN:

            ProjectNode(0) output=[convertUri(A.citta, '', '')] [convertUri(A.citta, '', '')]

              JoinNode(1) [NESTED TABLE JOIN] [CROSS JOIN] output=[A.citta]

                ProjectNode(2) output=[file] [SourceModel_1.getTextFiles.file]

                  AccessNode(3) output=[SourceModel_1.getTextFiles.file, SourceModel_1.getTextFiles.filePath] EXEC SourceModel_1.getTextFiles('csvprova.csv')

                TextTableNode(4) output=[A.citta]

             

             

            ============================================================================

             

             

            10:34:38,129 WARN  [org.teiid.PROCESSOR] (Worker0_QueryProcessorQueue51) GzUPLUyEV2u5 TEIID30020 Processing exception for request GzUPLUyEV2u5.0 'TEIID30328 Unable to evaluate convertUri(A.citta, '', ''): TEIID30384 Error while evaluating function tabella.convertUri'. Originally ExpressionEvaluationException 'com/mongodb/BasicDBObject' RestTest.java:111. Enable more detailed logging to see the entire stacktrace.

             

             

            ***************************

            It has the same behavior with anyone external jar library. If I use native java library, it's worked.

             

             

            Francesco

            • 3. Re: User Defined Functions - External jar
              Steven Hawkins Master

              Do you have a complete stack trace?  It looks like this could be a class not found exception.  That would imply that your vdb classpath or the external jar module needs to be expanded.