db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rick Hillegas (JIRA)" <j...@apache.org>
Subject [jira] [Created] (DERBY-5901) You can declare user-defined functions which shadow builtin functions by the same name.
Date Mon, 13 Aug 2012 14:34:38 GMT
Rick Hillegas created DERBY-5901:
------------------------------------

             Summary: You can declare user-defined functions which shadow builtin functions
by the same name.
                 Key: DERBY-5901
                 URL: https://issues.apache.org/jira/browse/DERBY-5901
             Project: Derby
          Issue Type: Bug
          Components: SQL
    Affects Versions: 10.10.0.0
            Reporter: Rick Hillegas


You can override a Derby builtin function by creating a function with the same name. This
can give rise to wrong results.

Consider the following user code:

public class FakeSin
{
    public  static  Double  sin( Double input ) { return new Double( 3.0 ); }
}

Now run the following script:

connect 'jdbc:derby:memory:db;create=true';

values sin( 0.5 );

create function sin( a double ) returns double language java parameter style java no sql external
name 'FakeSin.sin';

values sin( 0.5 );
values sin(  0.5 );

Note the following:

1) The first invocation of sin() returns the expected result.

2) You are allowed to create a user-defined function named "sin" which can shadow the builtin
function.

3) The second invocation of sin() returns the result of running the builtin function. This
is because the second invocation is character-for-character identical to the first, so Derby
just uses the previously prepared statement. 

4) But the third invocation of sin() returns the result of running the user-defined function.
Note that the third invocation has an extra space in it, which causes Derby to compile it
from scratch, picking up the user-defined function instead of the builtin one.


--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message