Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 80027 invoked from network); 27 May 2008 18:08:58 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 27 May 2008 18:08:58 -0000 Received: (qmail 45750 invoked by uid 500); 27 May 2008 18:09:00 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 45721 invoked by uid 500); 27 May 2008 18:09:00 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 45712 invoked by uid 99); 27 May 2008 18:09:00 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 May 2008 11:09:00 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 27 May 2008 18:08:10 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 4A53F23889BA; Tue, 27 May 2008 11:08:26 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r660630 - in /db/derby/code/trunk/java: engine/org/apache/derby/iapi/services/loader/ testing/org/apache/derbyTesting/functionTests/tests/lang/ Date: Tue, 27 May 2008 18:08:23 -0000 To: derby-commits@db.apache.org From: rhillegas@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080527180826.4A53F23889BA@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: rhillegas Date: Tue May 27 11:08:17 2008 New Revision: 660630 URL: http://svn.apache.org/viewvc?rev=660630&view=rev Log: DERBY-3652: Don't match SQL NUMERIC to Java Object. Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/loader/ClassInspector.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignatures.java db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignaturesTest.java Modified: db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/loader/ClassInspector.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/loader/ClassInspector.java?rev=660630&r1=660629&r2=660630&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/loader/ClassInspector.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/iapi/services/loader/ClassInspector.java Tue May 27 11:08:17 2008 @@ -55,6 +55,7 @@ private static final String OBJECT_TYPE_NAME = "java.lang.Object"; private static final String STRING_TYPE_NAME = "java.lang.String"; + private static final String BIGDECIMAL_TYPE_NAME = "java.math.BigDecimal"; private final ClassFactory cf; @@ -688,7 +689,6 @@ continue; } - if (SanityManager.DEBUG) { if (SanityManager.DEBUG_ON("MethodResolutionInfo")) { SanityManager.DEBUG("MethodResolutionInfo", "MRI - Match found "); @@ -958,13 +958,25 @@ // // public static String f( Object a ) // + // Also don't allow the widening of BigDecimal to Object. Otherwise, the + // SQL signature + // + // f( a numeric( 7, 2 ) ) returns numeric( 7, 2 ) + // + // will incorrectly match the Java signature + // + // public static BigDecimal f( Object a ) + // + // // For a description of the ANSI signature matching rules, see // DERBY-3652. // if ( !( - STRING_TYPE_NAME.equals( fromClass.getName() ) && - OBJECT_TYPE_NAME.equals( toClass.getName() ) + ( + STRING_TYPE_NAME.equals( fromClass.getName() ) || + BIGDECIMAL_TYPE_NAME.equals( fromClass.getName() ) + ) && OBJECT_TYPE_NAME.equals( toClass.getName() ) ) && toClass.isAssignableFrom(fromClass) ) Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignatures.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignatures.java?rev=660630&r1=660629&r2=660630&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignatures.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignatures.java Tue May 27 11:08:17 2008 @@ -21,6 +21,7 @@ package org.apache.derbyTesting.functionTests.tests.lang; +import java.math.BigDecimal; /** *

@@ -61,6 +62,7 @@ public static short smallint_short_short( Long a ) { return (short) -1; } public static short smallint_short_short( Float a ) { return (short) -1; } public static short smallint_short_short( Double a ) { return (short) -1; } + public static short smallint_short_short( BigDecimal a ) { return (short) -1; } public static short smallint_short_short( String a ) { return (short) -1; } public static short smallint_short_short( Object a ) { return (short) -1; } @@ -75,6 +77,7 @@ public static short smallint_short_Integer( Long a ) { return (short) -1; } public static short smallint_short_Integer( Float a ) { return (short) -1; } public static short smallint_short_Integer( Double a ) { return (short) -1; } + public static short smallint_short_Integer( BigDecimal a ) { return (short) -1; } public static short smallint_short_Integer( String a ) { return (short) -1; } public static short smallint_short_Integer( Object a ) { return (short) -1; } @@ -89,6 +92,7 @@ public static Integer smallint_Integer_short( Long a ) { return new Integer( -1 ); } public static Integer smallint_Integer_short( Float a ) { return new Integer( -1 ); } public static Integer smallint_Integer_short( Double a ) { return new Integer( -1 ); } + public static Integer smallint_Integer_short( BigDecimal a ) { return new Integer( -1 ); } public static Integer smallint_Integer_short( String a ) { return new Integer( -1 ); } public static Integer smallint_Integer_short( Object a ) { return new Integer( -1 ); } @@ -103,48 +107,55 @@ public static Integer smallint_Integer_Integer( Long a ) { return new Integer( -1 ); } public static Integer smallint_Integer_Integer( Float a ) { return new Integer( -1 ); } public static Integer smallint_Integer_Integer( Double a ) { return new Integer( -1 ); } + public static Integer smallint_Integer_Integer( BigDecimal a ) { return new Integer( -1 ); } public static Integer smallint_Integer_Integer( String a ) { return new Integer( -1 ); } public static Integer smallint_Integer_Integer( Object a ) { return new Integer( -1 ); } // outside the spec. these should not resolve. - public static short smallint_bad_short_Short( Short a ) { return a.shortValue(); } - public static Short smallint_bad_Short_short( short a ) { return new Short( a ); } - public static Short smallint_bad_Short_Short( Short a ) { return a; } + public static short smallint_bad_short_Short( Short a ) { return (short) -1; } + public static Short smallint_bad_Short_short( short a ) { return new Short( (short) -1 ); } + public static Short smallint_bad_Short_Short( Short a ) { return new Short( (short) -1 ); } // bad return type - public static byte smallint_badreturn_byte_short( short a ) { return (byte) a; } + public static byte smallint_badreturn_byte_short( short a ) { return (byte) -1; } // illegal ambiguity - public static short smallint_amb_short_short( short a ) { return a; } - public static short smallint_amb_short_short( Integer a ) { return a.shortValue(); } - public static Integer smallint_amb_Integer_short( short a ) { return new Integer( a ); } - public static Integer smallint_amb_Integer_short( Integer a ) { return a; } - public static byte smallint_amb_byte_short( short a ) { return (byte) a; } - public static byte smallint_amb_byte_short( Integer a ) { return a.byteValue(); } + public static short smallint_amb_short_short( short a ) { return (short) -1; } + public static short smallint_amb_short_short( Integer a ) { return (short) -1; } + public static Integer smallint_amb_Integer_short( short a ) { return new Integer( -1 ); } + public static Integer smallint_amb_Integer_short( Integer a ) { return new Integer( -1 ); } + public static byte smallint_amb_byte_short( short a ) { return (byte) -1; } + public static byte smallint_amb_byte_short( Integer a ) { return (byte) -1; } // unresolvable - public static short smallint_unres_short( byte a ) { return (short) a; } - public static short smallint_unres_short( int a ) { return (short) a; } - public static short smallint_unres_short( long a ) { return (short) a; } - public static short smallint_unres_short( float a ) { return (short) a; } - public static short smallint_unres_short( double a ) { return (short) a; } - public static short smallint_unres_short( Byte a ) { return a.shortValue(); } - public static short smallint_unres_short( Short a ) { return a.shortValue(); } - public static short smallint_unres_short( Long a ) { return a.shortValue(); } - public static short smallint_unres_short( Float a ) { return a.shortValue(); } - public static short smallint_unres_short( Double a ) { return a.shortValue(); } - - public static Short smallint_unres_Short( byte a ) { return new Short( (short) a ); } - public static Short smallint_unres_Short( short a ) { return new Short( (short) a ); } - public static Short smallint_unres_Short( int a ) { return new Short( (short) a ); } - public static Short smallint_unres_Short( long a ) { return new Short( (short) a ); } - public static Short smallint_unres_Short( float a ) { return new Short( (short) a ); } - public static Short smallint_unres_Short( double a ) { return new Short( (short) a ); } - public static Short smallint_unres_Short( Byte a ) { return new Short( a.shortValue() ); } - public static Short smallint_unres_Short( Short a ) { return new Short( a.shortValue() ); } - public static Short smallint_unres_Short( Long a ) { return new Short( a.shortValue() ); } - public static Short smallint_unres_Short( Float a ) { return new Short( a.shortValue() ); } - public static Short smallint_unres_Short( Double a ) { return new Short( a.shortValue() ); } + public static short smallint_unres_short( byte a ) { return (short) -1; } + public static short smallint_unres_short( int a ) { return (short) -1; } + public static short smallint_unres_short( long a ) { return (short) -1; } + public static short smallint_unres_short( float a ) { return (short) -1; } + public static short smallint_unres_short( double a ) { return (short) -1; } + public static short smallint_unres_short( Byte a ) { return (short) -1; } + public static short smallint_unres_short( Short a ) { return (short) -1; } + public static short smallint_unres_short( Long a ) { return (short) -1; } + public static short smallint_unres_short( Float a ) { return (short) -1; } + public static short smallint_unres_short( Double a ) { return (short) -1; } + public static short smallint_unres_short( BigDecimal a ) { return (short) -1; } + public static short smallint_unres_short( String a ) { return (short) -1; } + public static short smallint_unres_short( Object a ) { return (short) -1; } + + public static Short smallint_unres_Short( byte a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( short a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( int a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( long a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( float a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( double a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( Byte a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( Short a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( Long a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( Float a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( Double a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( BigDecimal a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( String a ) { return new Short( (short) -1 ); } + public static Short smallint_unres_Short( Object a ) { return new Short( (short) -1 ); } @@ -164,6 +175,7 @@ public static int integer_int_int( Long a ) { return -1; } public static int integer_int_int( Float a ) { return -1; } public static int integer_int_int( Double a ) { return -1; } + public static int integer_int_int( BigDecimal a ) { return -1; } public static int integer_int_int( String a ) { return -1; } public static int integer_int_int( Object a ) { return -1; } @@ -178,6 +190,7 @@ public static int integer_int_Integer( Long a ) { return -1; } public static int integer_int_Integer( Float a ) { return -1; } public static int integer_int_Integer( Double a ) { return -1; } + public static int integer_int_Integer( BigDecimal a ) { return -1; } public static int integer_int_Integer( String a ) { return -1; } public static int integer_int_Integer( Object a ) { return -1; } @@ -192,6 +205,7 @@ public static Integer integer_Integer_int( Long a ) { return new Integer( -1 ); } public static Integer integer_Integer_int( Float a ) { return new Integer( -1 ); } public static Integer integer_Integer_int( Double a ) { return new Integer( -1 ); } + public static Integer integer_Integer_int( BigDecimal a ) { return new Integer( -1 ); } public static Integer integer_Integer_int( String a ) { return new Integer( -1 ); } public static Integer integer_Integer_int( Object a ) { return new Integer( -1 ); } @@ -206,42 +220,49 @@ public static Integer integer_Integer_Integer( Long a ) { return new Integer( -1 ); } public static Integer integer_Integer_Integer( Float a ) { return new Integer( -1 ); } public static Integer integer_Integer_Integer( Double a ) { return new Integer( -1 ); } + public static Integer integer_Integer_Integer( BigDecimal a ) { return new Integer( -1 ); } public static Integer integer_Integer_Integer( String a ) { return new Integer( -1 ); } public static Integer integer_Integer_Integer( Object a ) { return new Integer( -1 ); } // bad return type - public static byte integer_badreturn_byte_int( int a ) { return (byte) a; } + public static byte integer_badreturn_byte_int( int a ) { return (byte) -1; } // illegal ambiguity - public static int integer_amb_int_int( int a ) { return a; } - public static int integer_amb_int_int( Integer a ) { return a.intValue(); } - public static Integer integer_amb_Integer_int( int a ) { return new Integer( a ); } - public static Integer integer_amb_Integer_int( Integer a ) { return a; } - public static byte integer_amb_byte_int( int a ) { return (byte) a; } - public static byte integer_amb_byte_int( Integer a ) { return (byte) a.intValue(); } + public static int integer_amb_int_int( int a ) { return -1; } + public static int integer_amb_int_int( Integer a ) { return -1; } + public static Integer integer_amb_Integer_int( int a ) { return new Integer( -1 ); } + public static Integer integer_amb_Integer_int( Integer a ) { return new Integer( -1 ); } + public static byte integer_amb_byte_int( int a ) { return (byte) -1; } + public static byte integer_amb_byte_int( Integer a ) { return (byte) -1; } // unresolvable - public static int integer_unres_int( byte a ) { return (int) a; } - public static int integer_unres_int( short a ) { return (int) a; } - public static int integer_unres_int( long a ) { return (int) a; } - public static int integer_unres_int( float a ) { return (int) a; } - public static int integer_unres_int( double a ) { return (int) a; } - public static int integer_unres_int( Byte a ) { return a.intValue(); } - public static int integer_unres_int( Short a ) { return a.intValue(); } - public static int integer_unres_int( Long a ) { return a.intValue(); } - public static int integer_unres_int( Float a ) { return a.intValue(); } - public static int integer_unres_int( Double a ) { return a.intValue(); } - - public static Integer integer_unres_Integer( byte a ) { return new Integer( (int) a ); } - public static Integer integer_unres_Integer( short a ) { return new Integer( (int) a ); } - public static Integer integer_unres_Integer( long a ) { return new Integer( (int) a ); } - public static Integer integer_unres_Integer( float a ) { return new Integer( (int) a ); } - public static Integer integer_unres_Integer( double a ) { return new Integer( (int) a ); } - public static Integer integer_unres_Integer( Byte a ) { return new Integer( a.intValue() ); } - public static Integer integer_unres_Integer( Short a ) { return new Integer( a.intValue() ); } - public static Integer integer_unres_Integer( Long a ) { return new Integer( a.intValue() ); } - public static Integer integer_unres_Integer( Float a ) { return new Integer( a.intValue() ); } - public static Integer integer_unres_Integer( Double a ) { return new Integer( a.intValue() ); } + public static int integer_unres_int( byte a ) { return -1; } + public static int integer_unres_int( short a ) { return -1; } + public static int integer_unres_int( long a ) { return -1; } + public static int integer_unres_int( float a ) { return -1; } + public static int integer_unres_int( double a ) { return -1; } + public static int integer_unres_int( Byte a ) { return -1; } + public static int integer_unres_int( Short a ) { return -1; } + public static int integer_unres_int( Long a ) { return -1; } + public static int integer_unres_int( Float a ) { return -1; } + public static int integer_unres_int( Double a ) { return -1; } + public static int integer_unres_int( BigDecimal a ) { return -1; } + public static int integer_unres_int( String a ) { return -1; } + public static int integer_unres_int( Object a ) { return -1; } + + public static Integer integer_unres_Integer( byte a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( short a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( long a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( float a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( double a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( Byte a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( Short a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( Long a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( Float a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( Double a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( BigDecimal a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( String a ) { return new Integer( -1 ); } + public static Integer integer_unres_Integer( Object a ) { return new Integer( -1 ); } // // BIGINT @@ -259,6 +280,7 @@ public static long bigint_long_long( Integer a ) { return -1L; } public static long bigint_long_long( Float a ) { return -1L; } public static long bigint_long_long( Double a ) { return -1L; } + public static long bigint_long_long( BigDecimal a ) { return -1L; } public static long bigint_long_long( String a ) { return -1L; } public static long bigint_long_long( Object a ) { return -1L; } @@ -273,6 +295,7 @@ public static long bigint_long_Long( Integer a ) { return -1L; } public static long bigint_long_Long( Float a ) { return -1L; } public static long bigint_long_Long( Double a ) { return -1L; } + public static long bigint_long_Long( BigDecimal a ) { return -1L; } public static long bigint_long_Long( String a ) { return -1L; } public static long bigint_long_Long( Object a ) { return -1L; } @@ -287,6 +310,7 @@ public static Long bigint_Long_long( Integer a ) { return new Long( -1L ); } public static Long bigint_Long_long( Float a ) { return new Long( -1L ); } public static Long bigint_Long_long( Double a ) { return new Long( -1L ); } + public static Long bigint_Long_long( BigDecimal a ) { return new Long( -1L ); } public static Long bigint_Long_long( String a ) { return new Long( -1L ); } public static Long bigint_Long_long( Object a ) { return new Long( -1L ); } @@ -301,42 +325,49 @@ public static Long bigint_Long_Long( Integer a ) { return new Long( -1L ); } public static Long bigint_Long_Long( Float a ) { return new Long( -1L ); } public static Long bigint_Long_Long( Double a ) { return new Long( -1L ); } + public static Long bigint_Long_Long( BigDecimal a ) { return new Long( -1L ); } public static Long bigint_Long_Long( String a ) { return new Long( -1L ); } public static Long bigint_Long_Long( Object a ) { return new Long( -1L ); } // bad return type - public static byte bigint_badreturn_byte_long( long a ) { return (byte) a; } + public static byte bigint_badreturn_byte_long( long a ) { return (byte) -1; } // illegal ambiguity - public static long bigint_amb_long_long( long a ) { return a; } - public static long bigint_amb_long_long( Long a ) { return a.longValue(); } - public static Long bigint_amb_Long_long( long a ) { return new Long( a ); } - public static Long bigint_amb_Long_long( Long a ) { return a; } - public static byte bigint_amb_byte_long( long a ) { return (byte) a; } - public static byte bigint_amb_byte_long( Long a ) { return a.byteValue(); } + public static long bigint_amb_long_long( long a ) { return -1L; } + public static long bigint_amb_long_long( Long a ) { return -1L; } + public static Long bigint_amb_Long_long( long a ) { return new Long( -1L ); } + public static Long bigint_amb_Long_long( Long a ) { return new Long( -1L ); } + public static byte bigint_amb_byte_long( long a ) { return (byte) -1; } + public static byte bigint_amb_byte_long( Long a ) { return (byte) -1; } // unresolvable - public static long bigint_unres_long( byte a ) { return (long) a; } - public static long bigint_unres_long( short a ) { return (long) a; } - public static long bigint_unres_long( int a ) { return (long) a; } - public static long bigint_unres_long( float a ) { return (long) a; } - public static long bigint_unres_long( double a ) { return (long) a; } - public static long bigint_unres_long( Byte a ) { return a.longValue(); } - public static long bigint_unres_long( Short a ) { return a.longValue(); } - public static long bigint_unres_long( Integer a ) { return a.longValue(); } - public static long bigint_unres_long( Float a ) { return a.longValue(); } - public static long bigint_unres_long( Double a ) { return a.longValue(); } - - public static Long bigint_unres_Long( byte a ) { return new Long( (long) a ); } - public static Long bigint_unres_Long( short a ) { return new Long( (long) a ); } - public static Long bigint_unres_Long( int a ) { return new Long( (long) a ); } - public static Long bigint_unres_Long( float a ) { return new Long( (long) a ); } - public static Long bigint_unres_Long( double a ) { return new Long( (long) a ); } - public static Long bigint_unres_Long( Byte a ) { return new Long( a.longValue() ); } - public static Long bigint_unres_Long( Short a ) { return new Long( a.longValue() ); } - public static Long bigint_unres_Long( Integer a ) { return new Long( a.longValue() ); } - public static Long bigint_unres_Long( Float a ) { return new Long( a.longValue() ); } - public static Long bigint_unres_Long( Double a ) { return new Long( a.longValue() ); } + public static long bigint_unres_long( byte a ) { return -1L; } + public static long bigint_unres_long( short a ) { return -1L; } + public static long bigint_unres_long( int a ) { return -1L; } + public static long bigint_unres_long( float a ) { return -1L; } + public static long bigint_unres_long( double a ) { return -1L; } + public static long bigint_unres_long( Byte a ) { return -1L; } + public static long bigint_unres_long( Short a ) { return -1L; } + public static long bigint_unres_long( Integer a ) { return -1L; } + public static long bigint_unres_long( Float a ) { return -1L; } + public static long bigint_unres_long( Double a ) { return -1L; } + public static long bigint_unres_long( BigDecimal a ) { return -1L; } + public static long bigint_unres_long( String a ) { return -1L; } + public static long bigint_unres_long( Object a ) { return -1L; } + + public static Long bigint_unres_Long( byte a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( short a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( int a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( float a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( double a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( Byte a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( Short a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( Integer a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( Float a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( Double a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( BigDecimal a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( String a ) { return new Long( -1L ); } + public static Long bigint_unres_Long( Object a ) { return new Long( -1L ); } // // REAL @@ -354,6 +385,7 @@ public static float real_float_float( Integer a ) { return -1.0F; } public static float real_float_float( Long a ) { return -1.0F; } public static float real_float_float( Double a ) { return -1.0F; } + public static float real_float_float( BigDecimal a ) { return -1.0F; } public static float real_float_float( String a ) { return -1.0F; } public static float real_float_float( Object a ) { return -1.0F; } @@ -368,6 +400,7 @@ public static float real_float_Float( Integer a ) { return -1.0F; } public static float real_float_Float( Long a ) { return -1.0F; } public static float real_float_Float( Double a ) { return -1.0F; } + public static float real_float_Float( BigDecimal a ) { return -1.0F; } public static float real_float_Float( String a ) { return -1.0F; } public static float real_float_Float( Object a ) { return -1.0F; } @@ -382,6 +415,7 @@ public static Float real_Float_float( Integer a ) { return new Float( -1.0F ); } public static Float real_Float_float( Long a ) { return new Float( -1.0F ); } public static Float real_Float_float( Double a ) { return new Float( -1.0F ); } + public static Float real_Float_float( BigDecimal a ) { return new Float( -1.0F ); } public static Float real_Float_float( String a ) { return new Float( -1.0F ); } public static Float real_Float_float( Object a ) { return new Float( -1.0F ); } @@ -396,42 +430,49 @@ public static Float real_Float_Float( Integer a ) { return new Float( -1.0F ); } public static Float real_Float_Float( Long a ) { return new Float( -1.0F ); } public static Float real_Float_Float( Double a ) { return new Float( -1.0F ); } + public static Float real_Float_Float( BigDecimal a ) { return new Float( -1.0F ); } public static Float real_Float_Float( String a ) { return new Float( -1.0F ); } public static Float real_Float_Float( Object a ) { return new Float( -1.0F ); } // bad return type - public static byte real_badreturn_byte_float( float a ) { return (byte) a; } + public static byte real_badreturn_byte_float( float a ) { return (byte) -1; } // illegal ambiguity - public static float real_amb_float_float( float a ) { return a; } - public static float real_amb_float_float( Float a ) { return a.floatValue(); } - public static Float real_amb_Float_float( float a ) { return new Float( a ); } - public static Float real_amb_Float_float( Float a ) { return a; } - public static byte real_amb_byte_float( float a ) { return (byte) a; } - public static byte real_amb_byte_float( Float a ) { return a.byteValue(); } + public static float real_amb_float_float( float a ) { return -1.0F; } + public static float real_amb_float_float( Float a ) { return -1.0F; } + public static Float real_amb_Float_float( float a ) { return new Float( -1.0F ); } + public static Float real_amb_Float_float( Float a ) { return new Float( -1.0F ); } + public static byte real_amb_byte_float( float a ) { return (byte) -1; } + public static byte real_amb_byte_float( Float a ) { return (byte) -1; } // unresolvable - public static float real_unres_float( byte a ) { return (float) a; } - public static float real_unres_float( short a ) { return (float) a; } - public static float real_unres_float( int a ) { return (float) a; } - public static float real_unres_float( long a ) { return (float) a; } - public static float real_unres_float( double a ) { return (float) a; } - public static float real_unres_float( Byte a ) { return a.floatValue(); } - public static float real_unres_float( Short a ) { return a.floatValue(); } - public static float real_unres_float( Integer a ) { return a.floatValue(); } - public static float real_unres_float( Long a ) { return a.floatValue(); } - public static float real_unres_float( Double a ) { return a.floatValue(); } - - public static Float real_unres_Float( byte a ) { return new Float( (float) a ); } - public static Float real_unres_Float( short a ) { return new Float( (float) a ); } - public static Float real_unres_Float( int a ) { return new Float( (float) a ); } - public static Float real_unres_Float( long a ) { return new Float( (float) a ); } - public static Float real_unres_Float( double a ) { return new Float( (float) a ); } - public static Float real_unres_Float( Byte a ) { return new Float( a.floatValue() ); } - public static Float real_unres_Float( Short a ) { return new Float( a.floatValue() ); } - public static Float real_unres_Float( Integer a ) { return new Float( a.floatValue() ); } - public static Float real_unres_Float( Long a ) { return new Float( a.floatValue() ); } - public static Float real_unres_Float( Double a ) { return new Float( a.floatValue() ); } + public static float real_unres_float( byte a ) { return -1.0F; } + public static float real_unres_float( short a ) { return -1.0F; } + public static float real_unres_float( int a ) { return -1.0F; } + public static float real_unres_float( long a ) { return -1.0F; } + public static float real_unres_float( double a ) { return -1.0F; } + public static float real_unres_float( Byte a ) { return -1.0F; } + public static float real_unres_float( Short a ) { return -1.0F; } + public static float real_unres_float( Integer a ) { return -1.0F; } + public static float real_unres_float( Long a ) { return -1.0F; } + public static float real_unres_float( Double a ) { return -1.0F; } + public static float real_unres_float( BigDecimal a ) { return -1.0F; } + public static float real_unres_float( String a ) { return -1.0F; } + public static float real_unres_float( Object a ) { return -1.0F; } + + public static Float real_unres_Float( byte a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( short a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( int a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( long a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( double a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( Byte a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( Short a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( Integer a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( Long a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( Double a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( BigDecimal a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( String a ) { return new Float( -1.0F ); } + public static Float real_unres_Float( Object a ) { return new Float( -1.0F ); } // // DOUBLE @@ -449,6 +490,7 @@ public static double double_double_double( Integer a ) { return -1.0; } public static double double_double_double( Long a ) { return -1.0; } public static double double_double_double( Float a ) { return -1.0; } + public static double double_double_double( BigDecimal a ) { return -1.0; } public static double double_double_double( String a ) { return -1.0; } public static double double_double_double( Object a ) { return -1.0; } @@ -463,6 +505,7 @@ public static double double_double_Double( Integer a ) { return -1.0; } public static double double_double_Double( Long a ) { return -1.0; } public static double double_double_Double( Float a ) { return -1.0; } + public static double double_double_Double( BigDecimal a ) { return -1.0; } public static double double_double_Double( String a ) { return -1.0; } public static double double_double_Double( Object a ) { return -1.0; } @@ -477,6 +520,7 @@ public static Double double_Double_double( Integer a ) { return new Double( -1.0 ); } public static Double double_Double_double( Long a ) { return new Double( -1.0 ); } public static Double double_Double_double( Float a ) { return new Double( -1.0 ); } + public static Double double_Double_double( BigDecimal a ) { return new Double( -1.0 ); } public static Double double_Double_double( String a ) { return new Double( -1.0 ); } public static Double double_Double_double( Object a ) { return new Double( -1.0 ); } @@ -491,43 +535,71 @@ public static Double double_Double_Double( Integer a ) { return new Double( -1.0 ); } public static Double double_Double_Double( Long a ) { return new Double( -1.0 ); } public static Double double_Double_Double( Float a ) { return new Double( -1.0 ); } + public static Double double_Double_Double( BigDecimal a ) { return new Double( -1.0 ); } public static Double double_Double_Double( String a ) { return new Double( -1.0 ); } public static Double double_Double_Double( Object a ) { return new Double( -1.0 ); } // bad return type - public static byte double_badreturn_byte_double( double a ) { return (byte) a; } + public static byte double_badreturn_byte_double( double a ) { return (byte) -1; } // illegal ambiguity - public static double double_amb_double_double( double a ) { return a; } - public static double double_amb_double_double( Double a ) { return a.doubleValue(); } - public static Double double_amb_Double_double( double a ) { return new Double( a ); } - public static Double double_amb_Double_double( Double a ) { return a; } - public static byte double_amb_byte_double( double a ) { return (byte) a; } - public static byte double_amb_byte_double( Double a ) { return a.byteValue(); } + public static double double_amb_double_double( double a ) { return -1.0; } + public static double double_amb_double_double( Double a ) { return -1.0; } + public static Double double_amb_Double_double( double a ) { return new Double( -1.0 ); } + public static Double double_amb_Double_double( Double a ) { return new Double( -1.0 ); } + public static byte double_amb_byte_double( double a ) { return (byte) -1; } + public static byte double_amb_byte_double( Double a ) { return (byte) -1; } // unresolvable - public static double double_unres_double( byte a ) { return (double) a; } - public static double double_unres_double( short a ) { return (double) a; } - public static double double_unres_double( int a ) { return (double) a; } - public static double double_unres_double( long a ) { return (double) a; } - public static double double_unres_double( float a ) { return (double) a; } - public static double double_unres_double( Byte a ) { return a.doubleValue(); } - public static double double_unres_double( Short a ) { return a.doubleValue(); } - public static double double_unres_double( Integer a ) { return a.doubleValue(); } - public static double double_unres_double( Long a ) { return a.doubleValue(); } - public static double double_unres_double( Float a ) { return a.doubleValue(); } - - public static Double double_unres_Double( byte a ) { return new Double( (double) a ); } - public static Double double_unres_Double( short a ) { return new Double( (double) a ); } - public static Double double_unres_Double( int a ) { return new Double( (double) a ); } - public static Double double_unres_Double( long a ) { return new Double( (double) a ); } - public static Double double_unres_Double( float a ) { return new Double( (double) a ); } - public static Double double_unres_Double( Byte a ) { return new Double( a.doubleValue() ); } - public static Double double_unres_Double( Short a ) { return new Double( a.doubleValue() ); } - public static Double double_unres_Double( Integer a ) { return new Double( a.doubleValue() ); } - public static Double double_unres_Double( Long a ) { return new Double( a.doubleValue() ); } - public static Double double_unres_Double( Float a ) { return new Double( a.doubleValue() ); } + public static double double_unres_double( byte a ) { return -1.0; } + public static double double_unres_double( short a ) { return -1.0; } + public static double double_unres_double( int a ) { return -1.0; } + public static double double_unres_double( long a ) { return -1.0; } + public static double double_unres_double( float a ) { return -1.0; } + public static double double_unres_double( Byte a ) { return -1.0; } + public static double double_unres_double( Short a ) { return -1.0; } + public static double double_unres_double( Integer a ) { return -1.0; } + public static double double_unres_double( Long a ) { return -1.0; } + public static double double_unres_double( Float a ) { return -1.0; } + public static double double_unres_double( BigDecimal a ) { return -1.0; } + public static double double_unres_double( String a ) { return -1.0; } + public static double double_unres_double( Object a ) { return -1.0; } + public static Double double_unres_Double( byte a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( short a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( int a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( long a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( float a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( Byte a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( Short a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( Integer a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( Long a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( Float a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( BigDecimal a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( String a ) { return new Double( -1.0 ); } + public static Double double_unres_Double( Object a ) { return new Double( -1.0 ); } + + // + // NUMERIC + // + + // legal resolutions + public static BigDecimal numeric_BigDecimal_BigDecimal( BigDecimal a ) { return a; } + public static BigDecimal numeric_BigDecimal_BigDecimal( byte a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( int a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( short a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( long a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( float a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( double a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( Byte a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( Short a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( Integer a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( Long a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( Float a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( Double a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( String a ) { return new BigDecimal( -1.0 ); } + public static BigDecimal numeric_BigDecimal_BigDecimal( Object a ) { return new BigDecimal( -1.0 ); } + // // VARCHAR // @@ -548,4 +620,6 @@ public static String varchar_String_String( Double a ) { return "-1"; } public static String varchar_String_String( Object a ) { return "-1"; } + + } Modified: db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignaturesTest.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignaturesTest.java?rev=660630&r1=660629&r2=660630&view=diff ============================================================================== --- db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignaturesTest.java (original) +++ db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/AnsiSignaturesTest.java Tue May 27 11:08:17 2008 @@ -225,13 +225,20 @@ ( "double_Double_Double", "double", new String[] { "double" }, "3.0", "3.0" ); } + public void test_numeric_BigDecimal_BigDecimal() + throws Exception + { + declareAndRunFunction + ( "numeric_BigDecimal_BigDecimal", "numeric( 7, 2 )", new String[] { "numeric( 7, 2 )" }, "12345.67", "12345.67" ); + } + public void test_varchar_String_String() throws Exception { declareAndRunFunction ( "varchar_String_String", "varchar( 10 )", new String[] { "varchar( 10 )" }, "'3.0'", "3.0" ); } - + /////////////////////////////////////////////////////////////////////////////////// // // SHOULD NOT RESOLVE