[ http://issues.apache.org/jira/browse/DERBY-479?page=all ]

Mamta A. Satoor updated DERBY-479:
----------------------------------

    Attachment: Derby479LinkageErrorReturnNullIfNulldiff021406.txt

The reason for this exception lies in the parsing phase where 
MethodCallNode.addParams(Vector) tries to do some optimization. Rather than 
putting SQLToJavaValueNode on top of JavaToSQLValueNode, it directly gets the 
JavaValueNode. The comment for this shortcircuit in 
MethodCallNode.addParams(Vector) says "In general, we want to avoid converting 
the same value back and forth between the SQL and Java domains," But going 
directly to java domain value causes type mismatch for a SQL function defined 
with return null on null input and when that SQL function is used as an 
argument to another SQL function. In order to generate the correct code for 
such a SQL function, we need access to both SQL domain value and Java domain 
value. In my patch, I have removed the optimization code from 
MethodCallNode.addParams(Vector) so that now, we do create a SQLToJavaValueNode 
on top of JavaToSQLValueNode. This change fixes the problem. I have attached 
the patch for it to JIRA. Please send any comments you might have after the 
review.

I have run derbyall suite on Windows XP with Sun jdk14 and there were no 
problems. 

svn stat
M      java\engine\org\apache\derby\impl\sql\compile\ActivationClassBuilder.java
M      java\engine\org\apache\derby\impl\sql\compile\MethodCallNode.java
M      java\engine\org\apache\derby\impl\sql\compile\CursorNode.java
M      
java\testing\org\apache\derbyTesting\functionTests\tests\lang\functions.sql
M      java\testing\org\apache\derbyTesting\functionTests\master\functions.out

> 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
>     Assignee: Mamta A. Satoor
>  Attachments: Derby479LinkageErrorReturnNullIfNulldiff021306.txt, 
> Derby479LinkageErrorReturnNullIfNulldiff021406.txt
>
> 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

Reply via email to