db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mamta A. Satoor (JIRA)" <derby-...@db.apache.org>
Subject [jira] Commented: (DERBY-479) Passing the return of a RETURN NULL ON NULL INPUT function to another function call throws linkage error.
Date Wed, 08 Feb 2006 10:17:00 GMT
    [ http://issues.apache.org/jira/browse/DERBY-479?page=comments#action_12365538 ] 

Mamta A. Satoor commented on DERBY-479:
---------------------------------------

I spent some time on this bug and was able to reproduce it without casting and multiple functions.
The following simpler test case will run into similar linkage error as the one reported in
the bug
CREATE FUNCTION RN_abs(A int) RETURNS int
EXTERNAL NAME 'java.lang.Math.abs(int)'
RETURNS NULL ON NULL INPUT
LANGUAGE JAVA PARAMETER STYLE JAVA;
VALUES ( RN_abS(RN_abs(90)));

The function is defined such that if the argument to it is null, it should simply return null
w/o invoking the function. But, in order to return null, the function's return type can't
be primitive (it is int in this example). To get around this, the generator generates the
output of the RN_abs function as java.lang.Integer. But since in the given example, (RN_abs(90))
is input to another function which is expecting to get a primitive data type of int, and not
java.lang.Integer, Derby raises an error for type mismatch because (RN_abs(90)) is going to
return java.lang.Integer and not int. 

I will continue to look into this, but does this explanation trigger a thought process in
anyone's mind? 


> Passing the return of  a RETURN NULL ON NULL INPUT function to another function call
throws linkage error.
> ----------------------------------------------------------------------------------------------------------
>
>          Key: DERBY-479
>          URL: http://issues.apache.org/jira/browse/DERBY-479
>      Project: Derby
>         Type: Bug
>   Components: SQL
>     Versions: 10.2.0.0
>     Reporter: Daniel John Debrunner

>
> Error in ij (RN_RADIANS is a function declared as returns null on null input)
> ij> VALUES CAST( CALL_COS(RN_RADIANS(90.0)) AS DECIMAL(3,2));
> ERROR XBCM1: Java linkage error thrown during load of generated class org.apache.derby.exe.ace5214067x0105x5e41x7a46xffff855452e375.
> ERROR XJ001: Java exception: '(class: org/apache/derby/exe/ace5214067x0105x5e41x
> 7a46xffff855452e375, method: e0 signature: ()Ljava/lang/Object;) Expecting to find double
on stack: java.lang.VerifyError'.
> extract from derby.log
> 2005-07-28 16:23:43.836 GMT Thread[main,5,main] Wrote class org.apache.derby.exe
> .ace5214067x0105x5e41x7a46xffff855452e375 to file C:\_work\svn_pb\trunk\systest\
> out\functions\ace5214067x0105x5e41x7a46xffff855452e375.class. Please provide sup
> port with the file and the following exception information: java.lang.VerifyErro
> r: (class: org/apache/derby/exe/ace5214067x0105x5e41x7a46xffff855452e375, method
> : e0 signature: ()Ljava/lang/Object;) Expecting to find double on stack
> I will add a test case to lang/functions.sql commented with this bug number. Test cases
> that fail will be commented out.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


Mime
View raw message