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

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

    Attachment: Derby479LinkageErrorReturnNullIfNulldiff021606.txt

I have attached a patch (Derby479LinkageErrorReturnNullIfNulldiff021606.txt) 
which solves the problem by leaving SQLToJavaValueNode wrapper on top of 
JavaToSQLValueNode in case of a SQL function defined as RETURN NULL ON NULL 
INPUT. This is because, such a function requires access to both SQL domain 
value and Java domain value. This is not required for SQL function defined as 
CALLED ON NULL INPUT and hence we will continue to do the optimization for such 
functions by removing the wrapper classes SQLToJavaValueNode
and JavaToSQLValueNode and going directly to java domain value. This happens in 
StaticMethodCallNode.bindExpression()

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\engine\org\apache\derby\impl\sql\compile\StaticMethodCallNode.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, 
> Derby479LinkageErrorReturnNullIfNulldiff021606.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