db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James F. Adams (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-3119) Derby does not resolve functions to methods with Integer return type.
Date Sat, 27 Oct 2007 05:21:50 GMT

     [ https://issues.apache.org/jira/browse/DERBY-3119?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

James F. Adams updated DERBY-3119:
----------------------------------

    Attachment: derby-3119-1_diff.txt

Attached is a patch proposal that I believe corrects the problem.

The resolveMethodCall  method of MethodCallNode has been modified to properly validate return
types SMALLINT, INTEGER, BIGINT, REAL, and DOUBLE.  These types are object mappable to Integer,
Integer, Long, Float, and Double as well as simply mappable to short, int, long, float, and
double.

In addition I added tests to RoutineTest.

Ran Derbyall and suites.All with no new errors.

> Derby does not resolve functions to methods with Integer return type.
> ---------------------------------------------------------------------
>
>                 Key: DERBY-3119
>                 URL: https://issues.apache.org/jira/browse/DERBY-3119
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.1.1.0, 10.1.2.1, 10.1.3.1, 10.2.1.6, 10.2.2.0, 10.3.1.4
>            Reporter: Rick Hillegas
>            Assignee: James F. Adams
>         Attachments: derby-3119-1_diff.txt
>
>
> Derby can bind a function invocation to a method which returns int but not to a method
which returns Integer. I think that both of these resolutions should succeed given the rules
in the SQL Standard, part 13, section 8.6, syntax rule 5, case a, item ii. Here is some code
which shows this problem. First a class to declare the methods:
> public class zz
> {
>     public  static  int returnsInt()
>     {
>         return 1;
>     }
>     
>     public  static  Integer returnsInteger()
>     {
>         return new Integer( 2 );
>     }
>     
> }
> The following ij script shows that the int-returning method is resolved but not the Integer-returning
method:
> ij version 10.4
> ij> connect 'jdbc:derby:derby10.4;create=true';
> WARNING 01J01: Database 'derby10.4' not created, connection made to existing database
instead.
> ij> drop function returnsInt;
> 0 rows inserted/updated/deleted
> ij> drop function returnsInteger;
> 0 rows inserted/updated/deleted
> ij> create function returnsInt()
> returns int
> language java
> parameter style java
> no sql
> external name 'zz.returnsInt'
> ;
> 0 rows inserted/updated/deleted
> ij> create function returnsInteger()
> returns int
> language java
> parameter style java
> no sql
> external name 'zz.returnsInteger'
> ;
> 0 rows inserted/updated/deleted
> ij> values ( returnsInt() );
> 1          
> -----------
> 1          
> 1 row selected
> ij> values ( returnsInteger() );
> ERROR 42X50: No method was found that matched the method call int zz.returnsInteger(),
tried all combinations of object and primitive types and any possible type conversion for
any  parameters the method call may have. The method might exist but it is not public and/or
static, or the parameter types are not method invocation convertible.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message