[ 
https://issues.apache.org/jira/browse/TRAFODION-995?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14714215#comment-14714215
 ] 

Suresh Subbiah commented on TRAFODION-995:
------------------------------------------

Verified on the v0330 build installed on a workstation. This problem is now 
fixed with a proper 4479 error returned:

>>create schema mytest;

--- SQL operation complete.
>>set schema mytest;

--- SQL operation complete.
>>
>>create library qa_udf_lib file 
>>'/designs/seaquest/wtsai/udf_bugs/udf_bug_LP1420530/myudf.so';

--- SQL operation complete.
>>
>>create function ENCRYPT_I_MVF
+>(INVAL int)
+>returns (OUTVAL1 int, OUTVAL2 int)
+>language c
+>parameter style sql
+>external name 'encrypt_i_mvf'
+>library qa_udf_lib
+>deterministic
+>state area size 1024
+>allow any parallelism
+>no sql;

--- SQL operation complete.
>>
>>create function ENCRYPT_DATE_MVF
+>(INVAL date)
+>returns (OUTVAL1 date, OUTVAL2 date)
+>language c
+>parameter style sql
+>external name 'encrypt_date_mvf'
+>library qa_udf_lib
+>deterministic
+>state area size 1024
+>allow any parallelism
+>no sql;

--- SQL operation complete.
>>
>>
>>create table myonerowtable (a int, b int);

--- SQL operation complete.
>>insert into myonerowtable values (6,6);

--- 1 row(s) inserted.
>>
>>create table mydatetimetable (a int not null not droppable primary key, 
>>c_date date);

--- SQL operation complete.
>>insert into mydatetimetable values(1, date '1999-01-01');

--- 1 row(s) inserted.
>>
>>select encrypt_i_mvf(a) from myonerowtable;

OUTVAL1 OUTVAL2
----------- -----------

          6 6

--- 1 row(s) selected.
>>select encrypt_i_mvf(a)-encrypt_i_mvf(a) from myonerowtable;

*** ERROR[4479] Function - accepts only 2 operand(s), 4 were provided due to a 
multi-output Function or Subquery.

*** ERROR[8822] The statement was not prepared.

>>
>>select encrypt_date_mvf(c_date) from mydatetimetable;

OUTVAL1 OUTVAL2
---------- ----------

1999-01-01 1999-01-01

--- 1 row(s) selected.
>>select ADD_MONTHS(encrypt_date_mvf(c_date), 1, 0) from mydatetimetable;

*** ERROR[4479] Function + accepts only 2 operand(s), 3 were provided due to a 
multi-output Function or Subquery.

*** ERROR[8822] The statement was not prepared.

>>
>>drop function ENCRYPT_I_MVF;

--- SQL operation complete.
>>drop function ENCRYPT_DATE_MVF;

--- SQL operation complete.
>>drop library qa_udf_lib cascade;

--- SQL operation complete.
>>drop schema mytest cascade;

--- SQL operation complete.

Changed in trafodion:
status: Fix Committed → Fix Released


> LP Bug: 1420530 - UDF: Arithmetic operations on multi-value UDFs return 
> internal assertions
> -------------------------------------------------------------------------------------------
>
>                 Key: TRAFODION-995
>                 URL: https://issues.apache.org/jira/browse/TRAFODION-995
>             Project: Apache Trafodion
>          Issue Type: Bug
>          Components: sql-exe
>            Reporter: Weishiun Tsai
>            Assignee: Suresh Subbiah
>             Fix For: 1.1 (pre-incubation)
>
>
> Most arithmetic operations on multi-value UDFs are not allowed.  But instead 
> of returning a proper error, they return internal assertions in 
> ../common/BaseTypes.cpp at line 118 right now.
> As shown in the 2 examples bellow, ENCRYPT_I_MVF() returns 2 integer outputs, 
> and ENCRYPT_DATE_MVF() returns 2 DATE outputs.  A ‘-‘ operation on 
> ENCRYPT_I_MVF() and an ADD_MONTHS() operation on ENCRYPT_DATE_MVF() both 
> return such internal assertions.  This is seen on the v0210 build installed 
> on a workstation.
> To reproduce this problem:
> (1) Download the attached tar file and untar it to get the 4 files in there. 
> Put the 4 files in any directory <mydir>
> (2) Run build.sh from <mydir> to build the UDF so file.
> (3) Change the line ‘create library qa_udf_lib file '<mydir>/myudf.so'; in 
> mytest.sql and fill in <mydir>
> (4) From sqlci, obey mytest.sql
> ---------------------------------------------------
> Here is the execution output:
> >>obey mytest.sql;
> >>create schema mytest;
> --- SQL operation complete.
> >>set schema mytest;
> --- SQL operation complete.
> >>
> >>create library qa_udf_lib file '<mydir>/myudf.so';
> --- SQL operation complete.
> >>
> >>create function ENCRYPT_I_MVF
> +>(INVAL int)
> +>returns (OUTVAL1 int, OUTVAL2 int)
> +>language c
> +>parameter style sql
> +>external name 'encrypt_i_mvf'
> +>library qa_udf_lib
> +>deterministic
> +>state area size 1024
> +>allow any parallelism
> +>no sql;
> --- SQL operation complete.
> >>
> >>create function ENCRYPT_DATE_MVF
> +>(INVAL date)
> +>returns (OUTVAL1 date, OUTVAL2 date)
> +>language c
> +>parameter style sql
> +>external name 'encrypt_date_mvf'
> +>library qa_udf_lib
> +>deterministic
> +>state area size 1024
> +>allow any parallelism
> +>no sql;
> --- SQL operation complete.
> >>
> >>
> >>create table myonerowtable (a int, b int);
> --- SQL operation complete.
> >>insert into myonerowtable values (6,6);
> --- 1 row(s) inserted.
> >>
> >>create table mydatetimetable (a int not null not droppable primary key, 
> >>c_date date);
> --- SQL operation complete.
> >>insert into mydatetimetable values(1, date '1999-01-01');
> --- 1 row(s) inserted.
> >>
> >>select encrypt_i_mvf(a) from myonerowtable;
> OUTVAL1      OUTVAL2
> -----------  -----------
>           6            6
> --- 1 row(s) selected.
> >>select encrypt_i_mvf(a)-encrypt_i_mvf(a) from myonerowtable;
> *** ERROR[2006] Internal error: assertion failure () in file 
> ../common/BaseTypes.cpp at line 118.
> *** ERROR[8822] The statement was not prepared.
> >>
> >>select encrypt_date_mvf(c_date) from mydatetimetable;
> OUTVAL1     OUTVAL2
> ----------  ----------
> 1999-01-01  1999-01-01
> --- 1 row(s) selected.
> >>select ADD_MONTHS(encrypt_date_mvf(c_date), 1, 0) from mydatetimetable;
> *** ERROR[2006] Internal error: assertion failure () in file 
> ../common/BaseTypes.cpp at line 118.
> *** ERROR[8822] The statement was not prepared.
> >>
> >>drop function ENCRYPT_I_MVF;
> --- SQL operation complete.
> >>drop function ENCRYPT_DATE_MVF;
> --- SQL operation complete.
> >>drop library qa_udf_lib cascade;
> --- SQL operation complete.
> >>drop schema mytest cascade;
> --- SQL operation complete.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to