db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-3697) Compiler exception when invoking a routine with NUMERIC argument on J2ME
Date Sat, 01 Jun 2013 11:24:20 GMT

    [ https://issues.apache.org/jira/browse/DERBY-3697?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13672056#comment-13672056
] 

Knut Anders Hatlen commented on DERBY-3697:
-------------------------------------------

Now that Java ME support has been removed from trunk, I don't expect this bug will be fixed.
Rick, would you be OK with closing it as Won't Fix?
                
> 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
>              Labels: derby_triage10_5_2
>         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.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message