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 2010/07/13 21:07:52 UTC

[jira] Closed: (DERBY-4499) Compiler error when preparing a procedure call with an output parameter of user defined type.

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

Rick Hillegas closed DERBY-4499.
--------------------------------


> Compiler error when preparing a procedure call with an output parameter of user defined type.
> ---------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4499
>                 URL: https://issues.apache.org/jira/browse/DERBY-4499
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>            Reporter: Rick Hillegas
>            Assignee: Rick Hillegas
>         Attachments: derby-4499-01-aa-outputParameters.diff
>
>
> The byte-code compiler complains about a missing setValue() overload. When this is fixed, it would be good to make sure that output parameters of UDT type work for the network client too.
> When compiling the following CALL statement
>     call changeCurrencyCode( ?, ? )
> given the following procedure declaration
>    create procedure changeCurrencyCode
>    ( in newCurrencyCode char( 3 ), inout oldPrice Price )
>    language java parameter style java no sql
>    external name 'org.apache.derbyTesting.functionTests.tests.lang.UDTTest.changeCurrencyCode'
> I see this stack trace:
> java.lang.NoSuchMethodException: org.apache.derby.iapi.types.DataValueDescriptor.setValue(org.apache.derbyTesting.functionTests.tests.lang.Price)
> 	at java.lang.Class.getDeclaredMethod(Class.java:1909)
> 	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(d_BCValidate.java:132)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(BCMethod.java:745)
> 	at org.apache.derby.impl.sql.compile.StaticMethodCallNode.generateExpression(StaticMethodCallNode.java:1197)
> 	at org.apache.derby.impl.sql.compile.JavaValueNode.generate(JavaValueNode.java:253)
> 	at org.apache.derby.impl.sql.compile.CallStatementNode.generate(CallStatementNode.java:225)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:347)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:469)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:90)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:828)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:129)
> 	at org.apache.derby.impl.jdbc.EmbedCallableStatement.<init>(EmbedCallableStatement.java:69)
> 	at org.apache.derby.impl.jdbc.EmbedCallableStatement20.<init>(EmbedCallableStatement20.java:85)
> 	at org.apache.derby.impl.jdbc.EmbedCallableStatement30.<init>(EmbedCallableStatement30.java:61)
> 	at org.apache.derby.jdbc.Driver30.newEmbedCallableStatement(Driver30.java:122)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.prepareCall(EmbedConnection.java:1699)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.prepareCall(EmbedConnection.java:1648)
> 	at MyDerbyClient.prepareCall(MyDerbyClient.java:940)
> 	at MyDerbyClient.execute(MyDerbyClient.java:161)
> 	at MyDerbyClient.main(MyDerbyClient.java:90)
> Invalid method org.apache.derby.iapi.types.DataValueDescriptor >> void setValue(org.apache.derbyTesting.functionTests.tests.lang.Price) because java.lang.NoSuchMethodException: org.apache.derby.iapi.types.DataValueDescriptor.setValue(org.apache.derbyTesting.functionTests.tests.lang.Price)
> Exception in thread "main" java.sql.SQLException: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueDescriptor >> void setValue(org.apache.derbyTesting.functionTests.tests.lang.Price) because java.lang.NoSuchMethodException: org.apache.derby.iapi.types.DataValueDescriptor.setValue(org.apache.derbyTesting.functionTests.tests.lang.Price): org.apache.derby.shared.common.sanity.AssertFailure'.
> 	at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
> 	at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:142)
> 	at org.apache.derby.impl.jdbc.Util.javaException(Util.java:299)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2269)
> 	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:147)
> 	at org.apache.derby.impl.jdbc.EmbedCallableStatement.<init>(EmbedCallableStatement.java:69)
> 	at org.apache.derby.impl.jdbc.EmbedCallableStatement20.<init>(EmbedCallableStatement20.java:85)
> 	at org.apache.derby.impl.jdbc.EmbedCallableStatement30.<init>(EmbedCallableStatement30.java:61)
> 	at org.apache.derby.jdbc.Driver30.newEmbedCallableStatement(Driver30.java:122)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.prepareCall(EmbedConnection.java:1699)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.prepareCall(EmbedConnection.java:1648)
> 	at MyDerbyClient.prepareCall(MyDerbyClient.java:940)
> 	at MyDerbyClient.execute(MyDerbyClient.java:161)
> 	at MyDerbyClient.main(MyDerbyClient.java:90)
> Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueDescriptor >> void setValue(org.apache.derbyTesting.functionTests.tests.lang.Price) because java.lang.NoSuchMethodException: org.apache.derby.iapi.types.DataValueDescriptor.setValue(org.apache.derbyTesting.functionTests.tests.lang.Price)
> 	at org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:162)
> 	at org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:147)
> 	at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(d_BCValidate.java:191)
> 	at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(BCMethod.java:745)
> 	at org.apache.derby.impl.sql.compile.StaticMethodCallNode.generateExpression(StaticMethodCallNode.java:1197)
> 	at org.apache.derby.impl.sql.compile.JavaValueNode.generate(JavaValueNode.java:253)
> 	at org.apache.derby.impl.sql.compile.CallStatementNode.generate(CallStatementNode.java:225)
> 	at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:347)
> 	at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:469)
> 	at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:90)
> 	at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:828)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:129)
> 	... 9 more

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