[ http://issues.apache.org/jira/browse/DERBY-1483?page=all ]
Rick Hillegas updated DERBY-1483:
---------------------------------
Component: Documentation
Assigning this to Documentation component.
> Java Function defined with a BIGINT parameter invokes the method with a
> signature of method(long) rather than method(Long)
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-1483
> URL: http://issues.apache.org/jira/browse/DERBY-1483
> Project: Derby
> Type: Bug
> Components: Documentation
> Versions: 10.1.2.1
> Reporter: Stan Bradbury
> Priority: Minor
>
> Calling a function passing BIGINT to a method accepting Long fails with the
> message:
> ERROR 42X50: No method was found that matched the method call
> derbyJavaUtils.bigintToHexString(long), 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.
> The method needs to accept the primative type: long to work. BIGINT as
> docuemented as having a compile time type of java.lang.Long - this is why I
> expected the example method to work: see the Reference manual:
> http://db.apache.org/derby/docs/10.1/ref/rrefsqlj30435.html.
>
> Example: define the function bigintToHexString to accept a BIGINT parameter
> (see below) and reference the corresponding java method bigintToHexString
> (shown below) that accepts a Long. Add the jarfile with the class to the DB,
> setup the database classpath and invoke with the query shown.
> >>> Java Class:
> import java.sql.*;
> public class derbyJavaUtils
> {
> // bigintToHexString
> public static String bigintToHexString(Long myBigint)
> {
> return myBigint.toHexString(myBigint.longValue());
> }
> // bigintToHexString2 - this will work if used for the function
> public static String bigintToHexString2(long myBigint)
> {
> Long myLong = null;
> return myLong.toHexString(myBigint);
> }
> }
> >> COMPILE IT AND JAR IT : jar -cvf derbyJavaUtils.jar DerbyJavaUtils.class
> >> Setup the function as follows in a database:
> .. CALL sqlj.install_jar( 'derbyJavaUtils.jar','APP.derbyJavaUtils',0);
> .. CALL SYSCS_UTIL.SYSCS_SET_DATABASE_PROPERTY('derby.database.classpath',
> 'APP.derbyJavaUtils');
> .. CREATE FUNCTION app.bigintToHexString(hexString bigint)
> RETURNS VARCHAR(16)
> PARAMETER STYLE JAVA NO SQL
> LANGUAGE JAVA
> EXTERNAL NAME 'derbyJavaUtils.bigintToHexString'
> === One possible test query:
> select 'C' || bigintToHexString2(CONGLOMERATENUMBER) || '.dat', TABLENAME,
> ISINDEX
> from SYS.SYSCONGLOMERATES a, SYS.SYSTABLES b
> where a.TABLEID = b.TABLEID
> As mention in the code comments the method: bigintToHexString2 - will work
> if used for the function
--
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