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

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

In the parsing phase, we do not yet know whether the sql function is defined as 
RETURN NULL ON NULL INPUT or as CALLED ON NULL INPUT and hence the optimization 
for CALLED ON NULL INPUT can't done in MethodCallNode.addParams(Vector). But 
during the bind phase, after all the parameters are bound 
(StaticMethodCallNode.bindExpression line number 170), we get information about 
the  underlying sql function from the system tables. At this point 
(StaticMethodCallNode.bindExpression line number 241), we can find out whether 
the function is defined as CALLED ON NULL INPUT and possibly can optimize the 
parameter code for CALLED ON NULL INPUT by going directly to java value rather 
than going JavaToSQLValueNode and then SLQToJavaValueNode on top of it. Let me 
know if anyone has any comments on this approach. If not, I will investigate in 
putting the shortcut code in for CALLED ON NULL INPUT.

> 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