You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Rick Hillegas (JIRA)" <ji...@apache.org> on 2008/05/28 23:58:45 UTC

[jira] Created: (DERBY-3697) Compiler exception when invoking a routine with NUMERIC argument on J2ME

Compiler exception when invoking a routine with  NUMERIC argument on J2ME
-------------------------------------------------------------------------

                 Key: DERBY-3697
                 URL: https://issues.apache.org/jira/browse/DERBY-3697
             Project: Derby
          Issue Type: Bug
          Components: SQL
    Affects Versions: 10.4.1.3
         Environment: Operating system = Ubuntu 7.10
VM = phoneme_advanced_mr2-b34
            Reporter: Rick Hillegas
         Attachments: AnsiSignatures.java

Derby raises an error during byte-code generation when asked to invoke a routine declared to have a NUMERIC argument and to be bound to a method with a BigDecimal argument. According to the ANSI standard (see DERBY-3652), SQL NUMERIC is supposed to map to Java BigDecimal. This is the experiment I ran:

1) I built the 10.4 source, including the AnsiSignatures class (I will attach this).

2) I ran a script which declared a function with a NUMERIC argument bound to a method in AnsiSignatures which has a BigDecimal argument.

3) When I invoked the function, the byte-code generator raised an exception.

I am not sure what we want to happen here. The BigDecimal class does exist in Foundation Profile 1.1.2. For small device platforms which support FP 1.1.2, it seems reasonable that NUMERIC should map to BigDecimal as the ANSI spec requires. For small device platforms which don't have a BigDecimal class, I don't know what we should do. In any event, the current behavior seems wrong. Here's what I see:

ij> create function "numeric_BigDecimal_BigDecimal"
(
	a_0 numeric
)
returns numeric
language java
parameter style java
no sql
external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.numeric_BigDecimal_BigDecimal'
;
0 rows inserted/updated/deleted
ij> values ( "numeric_BigDecimal_BigDecimal"( 12345.67 ) );
java.lang.NoSuchMethodException: getDecimalDataValue
	at java.lang.Class.getMethod0(Native Method)
	at java.lang.Class.getDeclaredMethod(Unknown Source)
	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(Unknown Source)
	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(Unknown Source)
	at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(Unknown Source)
	at org.apache.derby.impl.sql.compile.NumericTypeCompiler.generateDataValue(Unknown Source)
	at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(Unknown Source)
	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
	at org.apache.derby.impl.sql.compile.CastNode.generateExpression(Unknown Source)
	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(Unknown Source)
	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(Unknown Source)
	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
	at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(Unknown Source)
	at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(Unknown Source)
	at org.apache.derby.impl.sql.compile.ResultColumnList.generate(Unknown Source)
	at org.apache.derby.impl.sql.compile.RowResultSetNode.generate(Unknown Source)
	at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(Unknown Source)
	at org.apache.derby.impl.sql.compile.CursorNode.generate(Unknown Source)
	at org.apache.derby.impl.sql.compile.StatementNode.generate(Unknown Source)
	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
	at org.apache.derby.tools.ij.main(Unknown Source)
	at sun.misc.CVM.runMain(Unknown Source)
Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue
ERROR XJ001: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue: org.apache.derby.shared.common.sanity.AssertFailure'.

Here is the output of sysinfo on this platform:

------------------ Java Information ------------------
Java Version:    phoneme_advanced_mr2-b34
Java Vendor:     Sun Microsystems Inc.
Java home:       /mnt/hgfs/mac_users/rh161140/sw/phoneME/phoneme_advanced_mr2
Java classpath:  /mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes:/mnt/hgfs/mac_users/rh161140/src:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/empty.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/felix.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/geronimo-spec-servlet-2.4-rc4.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/jakarta-oro-2.0.8.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/javacc.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/junit.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xercesImpl.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xml-apis.jar
OS name:         Linux
OS architecture: x86
OS version:      2.6.22-14-generic
Java user name:  rhillegas
Java user home:  /home/rhillegas
Java user dir:   /home/rhillegas/zz
java.specification.name: Personal Basis Profile Specification
java.specification.version: 1.1
--------- Derby Information --------
JRE - JDBC: J2ME - JDBC for CDC/FP 1.1
[/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes] 10.4.1.3 - (648232:652095)
------------------------------------------------------
----------------- Locale Information -----------------
------------------------------------------------------

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


[jira] Updated: (DERBY-3697) Compiler exception when invoking a routine with NUMERIC argument on J2ME

Posted by "Knut Anders Hatlen (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-3697?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Knut Anders Hatlen updated DERBY-3697:
--------------------------------------

    Issue & fix info: [Repro attached]
             Urgency: Normal

Triaged for 10.5.2.

> Compiler exception when invoking a routine with  NUMERIC argument on J2ME
> -------------------------------------------------------------------------
>
>                 Key: DERBY-3697
>                 URL: https://issues.apache.org/jira/browse/DERBY-3697
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.4.1.3
>         Environment: Operating system = Ubuntu 7.10
> VM = phoneme_advanced_mr2-b34
>            Reporter: Rick Hillegas
>         Attachments: AnsiSignatures.java
>
>
> Derby raises an error during byte-code generation when asked to invoke a routine declared to have a NUMERIC argument and to be bound to a method with a BigDecimal argument. According to the ANSI standard (see DERBY-3652), SQL NUMERIC is supposed to map to Java BigDecimal. This is the experiment I ran:
> 1) I built the 10.4 source, including the AnsiSignatures class (I will attach this).
> 2) I ran a script which declared a function with a NUMERIC argument bound to a method in AnsiSignatures which has a BigDecimal argument.
> 3) When I invoked the function, the byte-code generator raised an exception.
> I am not sure what we want to happen here. The BigDecimal class does exist in Foundation Profile 1.1.2. For small device platforms which support FP 1.1.2, it seems reasonable that NUMERIC should map to BigDecimal as the ANSI spec requires. For small device platforms which don't have a BigDecimal class, I don't know what we should do. In any event, the current behavior seems wrong. Here's what I see:
> ij> create function "numeric_BigDecimal_BigDecimal"
> (
> 	a_0 numeric
> )
> returns numeric
> language java
> parameter style java
> no sql
> external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.numeric_BigDecimal_BigDecimal'
> ;
> 0 rows inserted/updated/deleted
> ij> values ( "numeric_BigDecimal_BigDecimal"( 12345.67 ) );
> java.lang.NoSuchMethodException: getDecimalDataValue
> 	at java.lang.Class.getMethod0(Native Method)
> 	at java.lang.Class.getDeclaredMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.NumericTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CastNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.RowResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CursorNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> 	at sun.misc.CVM.runMain(Unknown Source)
> Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue
> ERROR XJ001: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue: org.apache.derby.shared.common.sanity.AssertFailure'.
> Here is the output of sysinfo on this platform:
> ------------------ Java Information ------------------
> Java Version:    phoneme_advanced_mr2-b34
> Java Vendor:     Sun Microsystems Inc.
> Java home:       /mnt/hgfs/mac_users/rh161140/sw/phoneME/phoneme_advanced_mr2
> Java classpath:  /mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes:/mnt/hgfs/mac_users/rh161140/src:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/empty.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/felix.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/geronimo-spec-servlet-2.4-rc4.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/jakarta-oro-2.0.8.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/javacc.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/junit.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xercesImpl.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xml-apis.jar
> OS name:         Linux
> OS architecture: x86
> OS version:      2.6.22-14-generic
> Java user name:  rhillegas
> Java user home:  /home/rhillegas
> Java user dir:   /home/rhillegas/zz
> java.specification.name: Personal Basis Profile Specification
> java.specification.version: 1.1
> --------- Derby Information --------
> JRE - JDBC: J2ME - JDBC for CDC/FP 1.1
> [/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes] 10.4.1.3 - (648232:652095)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> ------------------------------------------------------

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


[jira] Commented: (DERBY-3697) Compiler exception when invoking a routine with NUMERIC argument on J2ME

Posted by "Myrna van Lunteren (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-3697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12600849#action_12600849 ] 

Myrna van Lunteren commented on DERBY-3697:
-------------------------------------------

My 2 cents: I think we decided we'd support J2ME 1.1 as of  derby 10.4 and thus the BigDecimal class.
However, that doesn't mean we can use BigDecimal references everywhere, I think JSR169 still doesn't support calls like ResultSet.getBigDecimal().


> Compiler exception when invoking a routine with  NUMERIC argument on J2ME
> -------------------------------------------------------------------------
>
>                 Key: DERBY-3697
>                 URL: https://issues.apache.org/jira/browse/DERBY-3697
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.4.1.3
>         Environment: Operating system = Ubuntu 7.10
> VM = phoneme_advanced_mr2-b34
>            Reporter: Rick Hillegas
>         Attachments: AnsiSignatures.java
>
>
> Derby raises an error during byte-code generation when asked to invoke a routine declared to have a NUMERIC argument and to be bound to a method with a BigDecimal argument. According to the ANSI standard (see DERBY-3652), SQL NUMERIC is supposed to map to Java BigDecimal. This is the experiment I ran:
> 1) I built the 10.4 source, including the AnsiSignatures class (I will attach this).
> 2) I ran a script which declared a function with a NUMERIC argument bound to a method in AnsiSignatures which has a BigDecimal argument.
> 3) When I invoked the function, the byte-code generator raised an exception.
> I am not sure what we want to happen here. The BigDecimal class does exist in Foundation Profile 1.1.2. For small device platforms which support FP 1.1.2, it seems reasonable that NUMERIC should map to BigDecimal as the ANSI spec requires. For small device platforms which don't have a BigDecimal class, I don't know what we should do. In any event, the current behavior seems wrong. Here's what I see:
> ij> create function "numeric_BigDecimal_BigDecimal"
> (
> 	a_0 numeric
> )
> returns numeric
> language java
> parameter style java
> no sql
> external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.numeric_BigDecimal_BigDecimal'
> ;
> 0 rows inserted/updated/deleted
> ij> values ( "numeric_BigDecimal_BigDecimal"( 12345.67 ) );
> java.lang.NoSuchMethodException: getDecimalDataValue
> 	at java.lang.Class.getMethod0(Native Method)
> 	at java.lang.Class.getDeclaredMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.NumericTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CastNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.RowResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CursorNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> 	at sun.misc.CVM.runMain(Unknown Source)
> Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue
> ERROR XJ001: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue: org.apache.derby.shared.common.sanity.AssertFailure'.
> Here is the output of sysinfo on this platform:
> ------------------ Java Information ------------------
> Java Version:    phoneme_advanced_mr2-b34
> Java Vendor:     Sun Microsystems Inc.
> Java home:       /mnt/hgfs/mac_users/rh161140/sw/phoneME/phoneme_advanced_mr2
> Java classpath:  /mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes:/mnt/hgfs/mac_users/rh161140/src:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/empty.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/felix.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/geronimo-spec-servlet-2.4-rc4.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/jakarta-oro-2.0.8.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/javacc.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/junit.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xercesImpl.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xml-apis.jar
> OS name:         Linux
> OS architecture: x86
> OS version:      2.6.22-14-generic
> Java user name:  rhillegas
> Java user home:  /home/rhillegas
> Java user dir:   /home/rhillegas/zz
> java.specification.name: Personal Basis Profile Specification
> java.specification.version: 1.1
> --------- Derby Information --------
> JRE - JDBC: J2ME - JDBC for CDC/FP 1.1
> [/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes] 10.4.1.3 - (648232:652095)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> ------------------------------------------------------

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


[jira] Commented: (DERBY-3697) Compiler exception when invoking a routine with NUMERIC argument on J2ME

Posted by "Rick Hillegas (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-3697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12600861#action_12600861 ] 

Rick Hillegas commented on DERBY-3697:
--------------------------------------

Thanks, Myrna. I take your comment as a vote for the following:

When matching SQL routines to Java methods on Java ME platforms, SQL NUMERIC should map to Java BigDecimal per the ANSI standard, just as happens on J2SE platforms.

> Compiler exception when invoking a routine with  NUMERIC argument on J2ME
> -------------------------------------------------------------------------
>
>                 Key: DERBY-3697
>                 URL: https://issues.apache.org/jira/browse/DERBY-3697
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.4.1.3
>         Environment: Operating system = Ubuntu 7.10
> VM = phoneme_advanced_mr2-b34
>            Reporter: Rick Hillegas
>         Attachments: AnsiSignatures.java
>
>
> Derby raises an error during byte-code generation when asked to invoke a routine declared to have a NUMERIC argument and to be bound to a method with a BigDecimal argument. According to the ANSI standard (see DERBY-3652), SQL NUMERIC is supposed to map to Java BigDecimal. This is the experiment I ran:
> 1) I built the 10.4 source, including the AnsiSignatures class (I will attach this).
> 2) I ran a script which declared a function with a NUMERIC argument bound to a method in AnsiSignatures which has a BigDecimal argument.
> 3) When I invoked the function, the byte-code generator raised an exception.
> I am not sure what we want to happen here. The BigDecimal class does exist in Foundation Profile 1.1.2. For small device platforms which support FP 1.1.2, it seems reasonable that NUMERIC should map to BigDecimal as the ANSI spec requires. For small device platforms which don't have a BigDecimal class, I don't know what we should do. In any event, the current behavior seems wrong. Here's what I see:
> ij> create function "numeric_BigDecimal_BigDecimal"
> (
> 	a_0 numeric
> )
> returns numeric
> language java
> parameter style java
> no sql
> external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.numeric_BigDecimal_BigDecimal'
> ;
> 0 rows inserted/updated/deleted
> ij> values ( "numeric_BigDecimal_BigDecimal"( 12345.67 ) );
> java.lang.NoSuchMethodException: getDecimalDataValue
> 	at java.lang.Class.getMethod0(Native Method)
> 	at java.lang.Class.getDeclaredMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.NumericTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CastNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.RowResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CursorNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> 	at sun.misc.CVM.runMain(Unknown Source)
> Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue
> ERROR XJ001: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue: org.apache.derby.shared.common.sanity.AssertFailure'.
> Here is the output of sysinfo on this platform:
> ------------------ Java Information ------------------
> Java Version:    phoneme_advanced_mr2-b34
> Java Vendor:     Sun Microsystems Inc.
> Java home:       /mnt/hgfs/mac_users/rh161140/sw/phoneME/phoneme_advanced_mr2
> Java classpath:  /mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes:/mnt/hgfs/mac_users/rh161140/src:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/empty.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/felix.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/geronimo-spec-servlet-2.4-rc4.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/jakarta-oro-2.0.8.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/javacc.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/junit.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xercesImpl.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xml-apis.jar
> OS name:         Linux
> OS architecture: x86
> OS version:      2.6.22-14-generic
> Java user name:  rhillegas
> Java user home:  /home/rhillegas
> Java user dir:   /home/rhillegas/zz
> java.specification.name: Personal Basis Profile Specification
> java.specification.version: 1.1
> --------- Derby Information --------
> JRE - JDBC: J2ME - JDBC for CDC/FP 1.1
> [/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes] 10.4.1.3 - (648232:652095)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> ------------------------------------------------------

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


[jira] Commented: (DERBY-3697) Compiler exception when invoking a routine with NUMERIC argument on J2ME

Posted by "Myrna van Lunteren (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-3697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12600867#action_12600867 ] 

Myrna van Lunteren commented on DERBY-3697:
-------------------------------------------

Assuming it can be done without using JDBC set/get methods for BigDecimal, I think that's right.
But, because of DERBY-2210, which mentions DECIMAL (which I think in derby is a synonym to NUMERIC?), I think there is a challenge to do this.


> Compiler exception when invoking a routine with  NUMERIC argument on J2ME
> -------------------------------------------------------------------------
>
>                 Key: DERBY-3697
>                 URL: https://issues.apache.org/jira/browse/DERBY-3697
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.4.1.3
>         Environment: Operating system = Ubuntu 7.10
> VM = phoneme_advanced_mr2-b34
>            Reporter: Rick Hillegas
>         Attachments: AnsiSignatures.java
>
>
> Derby raises an error during byte-code generation when asked to invoke a routine declared to have a NUMERIC argument and to be bound to a method with a BigDecimal argument. According to the ANSI standard (see DERBY-3652), SQL NUMERIC is supposed to map to Java BigDecimal. This is the experiment I ran:
> 1) I built the 10.4 source, including the AnsiSignatures class (I will attach this).
> 2) I ran a script which declared a function with a NUMERIC argument bound to a method in AnsiSignatures which has a BigDecimal argument.
> 3) When I invoked the function, the byte-code generator raised an exception.
> I am not sure what we want to happen here. The BigDecimal class does exist in Foundation Profile 1.1.2. For small device platforms which support FP 1.1.2, it seems reasonable that NUMERIC should map to BigDecimal as the ANSI spec requires. For small device platforms which don't have a BigDecimal class, I don't know what we should do. In any event, the current behavior seems wrong. Here's what I see:
> ij> create function "numeric_BigDecimal_BigDecimal"
> (
> 	a_0 numeric
> )
> returns numeric
> language java
> parameter style java
> no sql
> external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.numeric_BigDecimal_BigDecimal'
> ;
> 0 rows inserted/updated/deleted
> ij> values ( "numeric_BigDecimal_BigDecimal"( 12345.67 ) );
> java.lang.NoSuchMethodException: getDecimalDataValue
> 	at java.lang.Class.getMethod0(Native Method)
> 	at java.lang.Class.getDeclaredMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.NumericTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CastNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.RowResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CursorNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> 	at sun.misc.CVM.runMain(Unknown Source)
> Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue
> ERROR XJ001: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue: org.apache.derby.shared.common.sanity.AssertFailure'.
> Here is the output of sysinfo on this platform:
> ------------------ Java Information ------------------
> Java Version:    phoneme_advanced_mr2-b34
> Java Vendor:     Sun Microsystems Inc.
> Java home:       /mnt/hgfs/mac_users/rh161140/sw/phoneME/phoneme_advanced_mr2
> Java classpath:  /mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes:/mnt/hgfs/mac_users/rh161140/src:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/empty.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/felix.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/geronimo-spec-servlet-2.4-rc4.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/jakarta-oro-2.0.8.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/javacc.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/junit.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xercesImpl.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xml-apis.jar
> OS name:         Linux
> OS architecture: x86
> OS version:      2.6.22-14-generic
> Java user name:  rhillegas
> Java user home:  /home/rhillegas
> Java user dir:   /home/rhillegas/zz
> java.specification.name: Personal Basis Profile Specification
> java.specification.version: 1.1
> --------- Derby Information --------
> JRE - JDBC: J2ME - JDBC for CDC/FP 1.1
> [/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes] 10.4.1.3 - (648232:652095)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> ------------------------------------------------------

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


[jira] Issue Comment Edited: (DERBY-3697) Compiler exception when invoking a routine with NUMERIC argument on J2ME

Posted by "Myrna van Lunteren (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-3697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12600849#action_12600849 ] 

myrna edited comment on DERBY-3697 at 5/29/08 10:47 AM:
---------------------------------------------------------------------

My 2 cents: I think we decided we'd support J2ME -  Foundation 1.1 as of  derby 10.4 and thus the BigDecimal class.
However, that doesn't mean we can use BigDecimal references everywhere, I think JSR169 still doesn't support calls like ResultSet.getBigDecimal().


      was (Author: myrna):
    My 2 cents: I think we decided we'd support J2ME 1.1 as of  derby 10.4 and thus the BigDecimal class.
However, that doesn't mean we can use BigDecimal references everywhere, I think JSR169 still doesn't support calls like ResultSet.getBigDecimal().

  
> Compiler exception when invoking a routine with  NUMERIC argument on J2ME
> -------------------------------------------------------------------------
>
>                 Key: DERBY-3697
>                 URL: https://issues.apache.org/jira/browse/DERBY-3697
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.4.1.3
>         Environment: Operating system = Ubuntu 7.10
> VM = phoneme_advanced_mr2-b34
>            Reporter: Rick Hillegas
>         Attachments: AnsiSignatures.java
>
>
> Derby raises an error during byte-code generation when asked to invoke a routine declared to have a NUMERIC argument and to be bound to a method with a BigDecimal argument. According to the ANSI standard (see DERBY-3652), SQL NUMERIC is supposed to map to Java BigDecimal. This is the experiment I ran:
> 1) I built the 10.4 source, including the AnsiSignatures class (I will attach this).
> 2) I ran a script which declared a function with a NUMERIC argument bound to a method in AnsiSignatures which has a BigDecimal argument.
> 3) When I invoked the function, the byte-code generator raised an exception.
> I am not sure what we want to happen here. The BigDecimal class does exist in Foundation Profile 1.1.2. For small device platforms which support FP 1.1.2, it seems reasonable that NUMERIC should map to BigDecimal as the ANSI spec requires. For small device platforms which don't have a BigDecimal class, I don't know what we should do. In any event, the current behavior seems wrong. Here's what I see:
> ij> create function "numeric_BigDecimal_BigDecimal"
> (
> 	a_0 numeric
> )
> returns numeric
> language java
> parameter style java
> no sql
> external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.numeric_BigDecimal_BigDecimal'
> ;
> 0 rows inserted/updated/deleted
> ij> values ( "numeric_BigDecimal_BigDecimal"( 12345.67 ) );
> java.lang.NoSuchMethodException: getDecimalDataValue
> 	at java.lang.Class.getMethod0(Native Method)
> 	at java.lang.Class.getDeclaredMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.NumericTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CastNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.RowResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CursorNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> 	at sun.misc.CVM.runMain(Unknown Source)
> Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue
> ERROR XJ001: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue: org.apache.derby.shared.common.sanity.AssertFailure'.
> Here is the output of sysinfo on this platform:
> ------------------ Java Information ------------------
> Java Version:    phoneme_advanced_mr2-b34
> Java Vendor:     Sun Microsystems Inc.
> Java home:       /mnt/hgfs/mac_users/rh161140/sw/phoneME/phoneme_advanced_mr2
> Java classpath:  /mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes:/mnt/hgfs/mac_users/rh161140/src:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/empty.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/felix.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/geronimo-spec-servlet-2.4-rc4.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/jakarta-oro-2.0.8.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/javacc.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/junit.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xercesImpl.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xml-apis.jar
> OS name:         Linux
> OS architecture: x86
> OS version:      2.6.22-14-generic
> Java user name:  rhillegas
> Java user home:  /home/rhillegas
> Java user dir:   /home/rhillegas/zz
> java.specification.name: Personal Basis Profile Specification
> java.specification.version: 1.1
> --------- Derby Information --------
> JRE - JDBC: J2ME - JDBC for CDC/FP 1.1
> [/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes] 10.4.1.3 - (648232:652095)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> ------------------------------------------------------

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


[jira] Updated: (DERBY-3697) Compiler exception when invoking a routine with NUMERIC argument on J2ME

Posted by "Rick Hillegas (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-3697?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rick Hillegas updated DERBY-3697:
---------------------------------

    Attachment: AnsiSignatures.java

> Compiler exception when invoking a routine with  NUMERIC argument on J2ME
> -------------------------------------------------------------------------
>
>                 Key: DERBY-3697
>                 URL: https://issues.apache.org/jira/browse/DERBY-3697
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.4.1.3
>         Environment: Operating system = Ubuntu 7.10
> VM = phoneme_advanced_mr2-b34
>            Reporter: Rick Hillegas
>         Attachments: AnsiSignatures.java
>
>
> Derby raises an error during byte-code generation when asked to invoke a routine declared to have a NUMERIC argument and to be bound to a method with a BigDecimal argument. According to the ANSI standard (see DERBY-3652), SQL NUMERIC is supposed to map to Java BigDecimal. This is the experiment I ran:
> 1) I built the 10.4 source, including the AnsiSignatures class (I will attach this).
> 2) I ran a script which declared a function with a NUMERIC argument bound to a method in AnsiSignatures which has a BigDecimal argument.
> 3) When I invoked the function, the byte-code generator raised an exception.
> I am not sure what we want to happen here. The BigDecimal class does exist in Foundation Profile 1.1.2. For small device platforms which support FP 1.1.2, it seems reasonable that NUMERIC should map to BigDecimal as the ANSI spec requires. For small device platforms which don't have a BigDecimal class, I don't know what we should do. In any event, the current behavior seems wrong. Here's what I see:
> ij> create function "numeric_BigDecimal_BigDecimal"
> (
> 	a_0 numeric
> )
> returns numeric
> language java
> parameter style java
> no sql
> external name 'org.apache.derbyTesting.functionTests.tests.lang.AnsiSignatures.numeric_BigDecimal_BigDecimal'
> ;
> 0 rows inserted/updated/deleted
> ij> values ( "numeric_BigDecimal_BigDecimal"( 12345.67 ) );
> java.lang.NoSuchMethodException: getDecimalDataValue
> 	at java.lang.Class.getMethod0(Native Method)
> 	at java.lang.Class.getDeclaredMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(Unknown Source)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.NumericTypeCompiler.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CastNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ResultColumnList.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.RowResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.CursorNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.doCatch(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> 	at sun.misc.CVM.runMain(Unknown Source)
> Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue
> ERROR XJ001: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.NumberDataValue getDecimalDataValue(java.math.BigDecimal, org.apache.derby.iapi.types.NumberDataValue) because java.lang.NoSuchMethodException: getDecimalDataValue: org.apache.derby.shared.common.sanity.AssertFailure'.
> Here is the output of sysinfo on this platform:
> ------------------ Java Information ------------------
> Java Version:    phoneme_advanced_mr2-b34
> Java Vendor:     Sun Microsystems Inc.
> Java home:       /mnt/hgfs/mac_users/rh161140/sw/phoneME/phoneme_advanced_mr2
> Java classpath:  /mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes:/mnt/hgfs/mac_users/rh161140/src:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/empty.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/felix.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/geronimo-spec-servlet-2.4-rc4.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/jakarta-oro-2.0.8.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/javacc.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/junit.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xercesImpl.jar:/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/tools/java/xml-apis.jar
> OS name:         Linux
> OS architecture: x86
> OS version:      2.6.22-14-generic
> Java user name:  rhillegas
> Java user home:  /home/rhillegas
> Java user dir:   /home/rhillegas/zz
> java.specification.name: Personal Basis Profile Specification
> java.specification.version: 1.1
> --------- Derby Information --------
> JRE - JDBC: J2ME - JDBC for CDC/FP 1.1
> [/mnt/hgfs/mac_users/rh161140/derby/dummy/trunk/classes] 10.4.1.3 - (648232:652095)
> ------------------------------------------------------
> ----------------- Locale Information -----------------
> ------------------------------------------------------

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