Issue Details (XML | Word | Printable)

Key: DERBY-3360
Type: Bug Bug
Status: Resolved Resolved
Resolution: Fixed
Priority: Major Major
Assignee: Kathey Marsden
Reporter: James Alan Shepherd
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Derby

Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)

Created: 29/Jan/08 11:18 AM   Updated: 30/Jun/09 04:02 PM
Return to search
Component/s: SQL
Affects Version/s: 10.3.2.1, 10.3.3.0
Fix Version/s: 10.3.3.1, 10.4.2.0, 10.5.1.1

Time Tracking:
Not Specified

File Attachments:
  Size
GZip Archive Licensed for inclusion in ASF works DERBY-3360-cast.tar.gz 2008-02-27 10:18 AM James Alan Shepherd 8 kB
Text File Licensed for inclusion in ASF works derby-3360_diff.txt 2008-07-24 11:58 PM Kathey Marsden 7 kB
Text File Licensed for inclusion in ASF works derby-3360_preview_diff.txt 2008-07-23 07:43 PM Kathey Marsden 1 kB
Environment:
Derby 10.3 Branch [10.3.2.2 - (616244M)] and 10.3.2.1
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-b05, mixed mode)

Issue & fix info: High Value Fix
Resolution Date: 25/Jul/08 10:05 PM


 Description  « Hide
Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)


True, but I believe, not a helpful observation :-)

FN_MATCHES(A.f, C.d) returns short/SMALLINT

related to DERBY-3310 ? But this is on the 10.3 branch [10.3.2.2 - (616244M)]


DEBUG 68421 [Main] (Template.java:69) - SQL: SELECT A.a, D.b, B.c, C.d FROM C JOIN A ON C.e = 'I' AND A.f IS NOT NULL AND A.g = C.g AND FN_MATCHES(A.f, C.d) <> 1 JOIN B ON B.h = A.g JOIN D ON D.h = URID.h
java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)
        at java.lang.Class.getConstructor0(Class.java:2706)
        at java.lang.Class.getConstructor(Class.java:1657)
        at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(d_BCValidate.java:115)
        at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(BCMethod.java:745)
        at org.apache.derby.impl.services.bytecode.BCMethod.pushNewComplete(BCMethod.java:779)
        at org.apache.derby.impl.sql.compile.StaticMethodCallNode.generateExpression(StaticMethodCallNode.java:995)
        at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(JavaToSQLValueNode.java:167)
        at org.apache.derby.impl.sql.compile.BinaryOperatorNode.generateExpression(BinaryOperatorNode.java:599)
        at org.apache.derby.impl.sql.compile.BinaryLogicalOperatorNode.generateExpression(BinaryLogicalOperatorNode.java:157)
        at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1484)
        at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1302)
        at org.apache.derby.impl.sql.compile.JoinNode.getJoinArguments(JoinNode.java:1579)
        at org.apache.derby.impl.sql.compile.JoinNode.generateCore(JoinNode.java:1555)
        at org.apache.derby.impl.sql.compile.JoinNode.generate(JoinNode.java:1479)
        at org.apache.derby.impl.sql.compile.JoinNode.getJoinArguments(JoinNode.java:1577)
        at org.apache.derby.impl.sql.compile.JoinNode.generateCore(JoinNode.java:1555)
        at org.apache.derby.impl.sql.compile.JoinNode.generate(JoinNode.java:1479)
        at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1440)
        at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1302)
        at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(ScrollInsensitiveResultSetNode.java:109)
        at org.apache.derby.impl.sql.compile.CursorNode.generate(CursorNode.java:564)
        at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:347)
        at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:447)
        at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:88)
        at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:746)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:129)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(EmbedPreparedStatement20.java:82)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(EmbedPreparedStatement30.java:63)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(EmbedPreparedStatement40.java:40)
        at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Driver40.java:105)
        at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:923)
        at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:751)

       [..]
        at org.apache.derby.exe.ac12564092x0117xc525x43e4xffffbce342b018.g0(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(ReflectMethod.java:46)
        at org.apache.derby.impl.sql.execute.CallStatementResultSet.open(CallStatementResultSet.java:74)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:173)
        at org.apache.derby.impl.sql.execute.StatementTriggerExecutor.fireTrigger(StatementTriggerExecutor.java:80)
        at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:278)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1163)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:497)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:173)
        at org.apache.derby.impl.sql.execute.StatementTriggerExecutor.fireTrigger(StatementTriggerExecutor.java:80)
        at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:278)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1163)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:497)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1203)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1652)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:299)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:745)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:538)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:739)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:797)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:801)
        at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:218)
        
Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)

DEBUG 70472 [Main] (Template.java:120) - java.sql.SQLException: Java exception: 'ASSERT FAILED Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short): org.apache.derby.shared.common.sanity.AssertFailure'.
ERROR 70500 [Main] (TransactionTemplate.java:163) - Application exception overridden by rollback exception
org.springframework.jdbc.UncategorizedSQLException: PreparedStatementCallback; uncategorized SQLException for SQL [ <Statement that fires trigger removed> ]; SQL state [XJ001]; error code [0]; Java exception: ': java.lang.NullPointerException'.; nested exception is java.sql.SQLException: Java exception: ': java.lang.NullPointerException'.
Caused by:
java.sql.SQLException: Java exception: ': java.lang.NullPointerException'.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:95)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:88)
        at org.apache.derby.impl.jdbc.Util.javaException(Util.java:245)
        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:1573)
        at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1294)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1652)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:299)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:745)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:538)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:739)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:797)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:801)
        at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:218)
Caused by: java.sql.SQLException: Java exception: ': java.lang.NullPointerException'.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:135)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:70)
        ... 29 more
Caused by: java.lang.NullPointerException
        at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:217)
        at org.apache.derby.impl.sql.execute.StatementTriggerExecutor.fireTrigger(StatementTriggerExecutor.java:80)
        at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:278)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1163)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:497)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:173)
        at org.apache.derby.impl.sql.execute.StatementTriggerExecutor.fireTrigger(StatementTriggerExecutor.java:80)
        at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:278)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1163)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:497)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1203)
        ... 22 more
FATAL 70508 [Main] (Start.java:153) - Start FAILED
org.springframework.transaction.TransactionSystemException: Could not roll back JDBC transaction; nested exception is java.sql.SQLNonTransientConnectionException: No current connection.
Caused by:
java.sql.SQLNonTransientConnectionException: No current connection.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:76)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:88)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:104)
        at org.apache.derby.impl.jdbc.Util.noCurrentConnection(Util.java:208)
        at org.apache.derby.impl.jdbc.EmbedConnection.checkIfClosed(EmbedConnection.java:1548)
        at org.apache.derby.impl.jdbc.EmbedConnection.setupContextStack(EmbedConnection.java:1759)
        at org.apache.derby.impl.jdbc.EmbedConnection.rollback(EmbedConnection.java:1142)
        at org.apache.commons.dbcp.DelegatingConnection.rollback(DelegatingConnection.java:265)
        at org.apache.commons.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.rollback(PoolingDataSource.java:288)
        at org.springframework.jdbc.datasource.DataSourceTransactionManager.doRollback(DataSourceTransactionManager.java:259)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionManager.java:742)
        at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.java:719)
        at org.springframework.transaction.support.TransactionTemplate.rollbackOnException(TransactionTemplate.java:160)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:138)
 Caused by: java.sql.SQLException: No current connection.
        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:135)
        at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:70)
        ... 21 more


derby.log

org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)
        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:190)
        at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(BCMethod.java:745)
        at org.apache.derby.impl.services.bytecode.BCMethod.pushNewComplete(BCMethod.java:779)
        at org.apache.derby.impl.sql.compile.StaticMethodCallNode.generateExpression(StaticMethodCallNode.java:995)
        at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(JavaToSQLValueNode.java:167)
        at org.apache.derby.impl.sql.compile.BinaryOperatorNode.generateExpression(BinaryOperatorNode.java:599)
        at org.apache.derby.impl.sql.compile.BinaryLogicalOperatorNode.generateExpression(BinaryLogicalOperatorNode.java:157)
        at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1484)
        at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1302)
        at org.apache.derby.impl.sql.compile.JoinNode.getJoinArguments(JoinNode.java:1579)
        at org.apache.derby.impl.sql.compile.JoinNode.generateCore(JoinNode.java:1555)
        at org.apache.derby.impl.sql.compile.JoinNode.generate(JoinNode.java:1479)
        at org.apache.derby.impl.sql.compile.JoinNode.getJoinArguments(JoinNode.java:1577)
        at org.apache.derby.impl.sql.compile.JoinNode.generateCore(JoinNode.java:1555)
        at org.apache.derby.impl.sql.compile.JoinNode.generate(JoinNode.java:1479)
        at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1440)
        at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1302)
        at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(ScrollInsensitiveResultSetNode.java:109)
        at org.apache.derby.impl.sql.compile.CursorNode.generate(CursorNode.java:564)
        at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:347)
        at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:447)
        at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:88)
        at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:746)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:129)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(EmbedPreparedStatement20.java:82)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(EmbedPreparedStatement30.java:63)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement40.<init>(EmbedPreparedStatement40.java:40)
        at org.apache.derby.jdbc.Driver40.newEmbedPreparedStatement(Driver40.java:105)
        at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:923)
        at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:751)
[our trigger stored proc java code]
        at org.apache.derby.exe.ac12564092x0117xc525x43e4xffffbce342b018.g0(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(ReflectMethod.java:46)
        at org.apache.derby.impl.sql.execute.CallStatementResultSet.open(CallStatementResultSet.java:74)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:173)
        at org.apache.derby.impl.sql.execute.StatementTriggerExecutor.fireTrigger(StatementTriggerExecutor.java:80)
        at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:278)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1163)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:497)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:173)
        at org.apache.derby.impl.sql.execute.StatementTriggerExecutor.fireTrigger(StatementTriggerExecutor.java:80)
        at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:278)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1163)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:497)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1203)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1652)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:299)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:745)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:538)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:739)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:797)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:801)
        at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:218)
 
Cleanup action completed
2008-01-29 10:44:58.980 GMT Thread[Main,5,main] Cleanup action starting
java.lang.NullPointerException
        at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:217)
        at org.apache.derby.impl.sql.execute.StatementTriggerExecutor.fireTrigger(StatementTriggerExecutor.java:80)
        at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:278)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1163)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:497)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.sql.execute.GenericTriggerExecutor.executeSPS(GenericTriggerExecutor.java:173)
        at org.apache.derby.impl.sql.execute.StatementTriggerExecutor.fireTrigger(StatementTriggerExecutor.java:80)
        at org.apache.derby.impl.sql.execute.TriggerEventActivator.notifyEvent(TriggerEventActivator.java:278)
        at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:1163)
        at org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:497)
        at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1203)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1652)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:299)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:745)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:538)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:739)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:797)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:801)
        at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:218)

2008-01-29 10:44:58.987 GMT Thread[Main,5,main] Equally severe exception raised during cleanup (ignored) null
java.lang.NullPointerException
        at org.apache.derby.impl.sql.compile.CompilerContextImpl.initRequiredPriv(CompilerContextImpl.java:698)
        at org.apache.derby.impl.sql.compile.CompilerContextImpl.resetContext(CompilerContextImpl.java:158)
        at org.apache.derby.impl.sql.compile.CompilerContextImpl.cleanupOnError(CompilerContextImpl.java:107)
        at org.apache.derby.iapi.services.context.ContextManager.cleanupOnError(ContextManager.java:327)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.cleanupOnError(TransactionResourceImpl.java:419)
        at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:337)
        at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:1573)
        at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1294)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1652)
        at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(EmbedPreparedStatement.java:299)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:101)
        at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:745)
        at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:538)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:739)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:797)
        at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:801)
        at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:218)
 
Cleanup action completed



 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
James Alan Shepherd added a comment - 29/Jan/08 02:27 PM - edited
More info,

CAST(FN_MATCHES(..) AS INTEGER) avoids the bug.

10.3.1.4 (sane) shows this behaviour too


James Alan Shepherd added a comment - 29/Jan/08 06:37 PM
10.3.2.1 (sane) shows the behaviour.

Now, here's the rub:

10.3.2.1 (insane) runs more of the SQL script, but fails with seemingly the same stack trace, the top of which from derby.log is:

java.lang.NullPointerException
        at org.apache.derby.impl.sql.compile.ResultColumn.columnTypeAndLengthMatch(Unknown Source)
        at org.apache.derby.impl.sql.compile.ResultColumnList.columnTypesAndLengthsMatch(Unknown Source)
        at org.apache.derby.impl.sql.compile.ResultSetNode.columnTypesAndLengthsMatch(Unknown Source)
        at org.apache.derby.impl.sql.compile.UnionNode.addNewNodes(Unknown Source)
        at org.apache.derby.impl.sql.compile.UnionNode.modifyAccessPaths(Unknown Source)
        at org.apache.derby.impl.sql.compile.SingleChildResultSetNode.modifyAccessPaths(Unknown Source)
        at org.apache.derby.impl.sql.compile.DMLStatementNode.optimizeStatement(Unknown Source)
        at org.apache.derby.impl.sql.compile.DMLModStatementNode.optimizeStatement(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.executeBatchElement(Unknown Source)
        at org.apache.derby.impl.jdbc.EmbedStatement.executeBatch(Unknown Source)

This second failure point is like

INSERT INTO t1 (c1)
SELECT c1 FROM t2
UNION
SELECT c1FROM t3.

The crucial point is that the UNION has a SMALLINT column in it. If I re-write as:

INSERT INTO t1 (c1)
SELECT CAST(V.c1 AS SMALLINT)
FROM (
SELECT c1 FROM t2
UNION
SELECT c1FROM t3
) AS V

no NPE!!!!


James Alan Shepherd made changes - 29/Jan/08 06:39 PM
Field Original Value New Value
Environment Derby 10.3 Branch [10.3.2.2 - (616244M)]
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-b05, mixed mode)
Derby 10.3 Branch [10.3.2.2 - (616244M)] and 10.3.2.1
java version "1.6.0_03"
Java(TM) SE Runtime Environment (build 1.6.0_03-b05)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_03-b05, mixed mode)
Affects Version/s 10.3.2.1 [ 12312876 ]
Dyre Tjeldvoll added a comment - 26/Feb/08 11:01 AM
This issue seems to use either 'existing application impact' or 'release note needed' incorrectly, according to the description at

http://db.apache.org/derby/DerbyBugGuidelines.html#Set+appropriate+special+%22flags%22

I plan to remove the flags shortly unless there are additional comments.

James Alan Shepherd added a comment - 26/Feb/08 11:57 AM
I am unable to use Derby in my application because of this issue.

I am using Postgres for the time being.

If this is fixed then I can continue debugging (DERBY-3221) and hopefully support Derby again.

Is this not what the flag is for?

This issue may be a duplicate of DERBY-3310


Dyre Tjeldvoll added a comment - 26/Feb/08 12:24 PM - edited
To quote from the link I mentioned:

"Existing Application impact: an existing application can be impacted by the solution to this issue."

Note that is the SOLUTION that will impact an existing application, NOT the bug.

The typical example would be if Derby incorrectly allowed something which either JDBC or SQL forbids. The solution is to forbid that something and throw an exception. But that could cause existing applications, that inadvertently had come to rely on the incorrect behavior, to break.

I can't really see anyone depending on the incorrect behavior caused by DERBY-3360, so that is why I want to remove the flag.

It seems like DERBY-3221 has been closed? I believe DERBY-3310 is being worked on, but it seems to be a more fundamental problem than I first thought...


James Alan Shepherd added a comment - 26/Feb/08 01:14 PM
My apologies.

My use was because the SOLUTION would enable me to return to using Derby in my EXISTING application.

I can understand if you do not feel that this is within the scope of the flag.

DERBY-3221 has been closed, but I do not believe it is in any released version yet?

"I can't really see anyone depending on the incorrect behavior caused by DERBY-3360, so that is why I want to remove the flag. "

If the meaning of the flag is that SOLUTION (as a verb) of this bug may change the behaviour of EXISTING applications DEPENDING ON THE CURRENT BEHAVIOUR of the bug reported, then I do not read this from the definition, and I would suggest it be made clearer.

James Alan Shepherd made changes - 26/Feb/08 01:15 PM
Derby Info [Existing Application Impact]
Kathey Marsden added a comment - 26/Feb/08 03:24 PM
James, can you attach a reproducible test case to this issue? The description does not seem to have the function definition and schema.

James Alan Shepherd added a comment - 27/Feb/08 10:18 AM
Test case attached

Running against 10.3.2.1 sane:

ij version 10.3
CONNECTION0* - jdbc:derby:testcase
* = current connection
ij> CREATE FUNCTION FN_SMALLINT(i INT) RETURNS SMALLINT PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'Functions.smallint' RETURNS NULL ON NULL INPUT;
0 rows inserted/updated/deleted
ij> CREATE TABLE test (a INT);
0 rows inserted/updated/deleted
ij> INSERT INTO test VALUES (1),(2),(3),(4),(5);
5 rows inserted/updated/deleted
ij> SELECT a FROM test WHERE FN_SMALLINT(a) <> 1;
java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)
at java.lang.Class.getConstructor0(Class.java:2706)
at java.lang.Class.getConstructor(Class.java:1657)
at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(d_BCValidate.java:116)
at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(BCMethod.java:745)
at org.apache.derby.impl.services.bytecode.BCMethod.pushNewComplete(BCMethod.java:779)
at org.apache.derby.impl.sql.compile.StaticMethodCallNode.generateExpression(StaticMethodCallNode.java:995)
at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(JavaToSQLValueNode.java:167)
at org.apache.derby.impl.sql.compile.BinaryOperatorNode.generateExpression(BinaryOperatorNode.java:599)
at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1484)
at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1302)
at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1351)
at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1302)
at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(ScrollInsensitiveResultSetNode.java:109)
at org.apache.derby.impl.sql.compile.CursorNode.generate(CursorNode.java:564)
at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:347)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(GenericStatement.java:447)
at org.apache.derby.impl.sql.GenericStatement.prepare(GenericStatement.java:88)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(GenericLanguageConnectionContext.java:746)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:579)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:528)
at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:330)
at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:522)
at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:364)
at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:262)
at org.apache.derby.impl.tools.ij.Main.go(Main.java:215)
at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:181)
at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:56)
at org.apache.derby.tools.ij.main(ij.java:71)
Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)
ERROR XJ001: Java exception: 'ASSERT FAILED Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short): org.apache.derby.shared.common.sanity.AssertFailure'.

James Alan Shepherd made changes - 27/Feb/08 10:18 AM
Attachment DERBY-3360-cast.tar.gz [ 12376613 ]
Rick Hillegas added a comment - 10/Jun/08 08:29 PM
For the record, implicit casting seems to be done when both operands are columns from the same table. The following works:

ij> create table test2( a int, b smallint );
0 rows inserted/updated/deleted
ij> insert into test2( a, b ) values ( 1, 1 ), ( 2, 3 );
2 rows inserted/updated/deleted
ij> select * from test2 where a <> b;
A |B
------------------
2 |3

1 row selected

Kathey Marsden added a comment - 22/Jul/08 11:27 PM
Putting this as SQL component for now. It wasn't showing up on the bug reports because there was no component.

Kathey Marsden made changes - 22/Jul/08 11:27 PM
Component/s SQL [ 11408 ]
Derby Categories [High Value Fix]
Kathey Marsden added a comment - 23/Jul/08 04:23 PM
If I define the function without the "RETURNS NULL ON NULL INPUT" it works ok. e.g.

CREATE FUNCTION FN_SMALLINT(i INT) RETURNS SMALLINT PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'Functions.smallint';

instead of

CREATE FUNCTION FN_SMALLINT(i INT) RETURNS SMALLINT PARAMETER STYLE JAVA NO SQL LANGUAGE JAVA EXTERNAL NAME 'Functions.smallint' RETURNS NULL ON NULL INPUT;

Kathey Marsden added a comment - 23/Jul/08 07:43 PM
Attached is my first shot at fixing this issue. It is not for commit as no tests have been written or run. I just verified that it resolves the repro. I'm just posting to make sure I am on the right track.

Functions returning SMALLINT are a special case. The function definition returns short but the actual java return type if RETURN NULL ON NULL INPUT is java.lang.Integer. I think this is because getObject on a SMALLINT column returns an Integer according to the JDBC spec. I am assuming this java return type is right.

Since the java return type is Integer we need to upcast the short to an int before calling mbnc.pushNewComplete(1); for this case.

I'd appreciate if someone could validate this approach. I will work to turn it into a full patch with tests. It seems we don't have much in the way of testing for RETURN NULL ON NULL INPUT, so I will add tests for the other types too.




Kathey Marsden made changes - 23/Jul/08 07:43 PM
Attachment derby-3360_preview_diff.txt [ 12386752 ]
Kathey Marsden made changes - 23/Jul/08 07:43 PM
Assignee Kathey Marsden [ kmarsden ]
Kathey Marsden added a comment - 24/Jul/08 11:58 PM
Attached is a patch for this issue. The code change is the same as I proposed earlier. Please review.

Kathey Marsden made changes - 24/Jul/08 11:58 PM
Attachment derby-3360_diff.txt [ 12386842 ]
Knut Anders Hatlen added a comment - 25/Jul/08 12:22 PM
Looks like a reasonable fix to me. +1 to commit.

Repository Revision Date User Message
ASF #679815 Fri Jul 25 14:27:52 UTC 2008 kmarsden DERBY-3360 Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)
Files Changed
MODIFY /db/derby/code/trunk/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RoutineTest.java
MODIFY /db/derby/code/trunk/java/engine/org/apache/derby/impl/sql/compile/StaticMethodCallNode.java

Repository Revision Date User Message
ASF #679904 Fri Jul 25 22:03:37 UTC 2008 kmarsden DERBY-3360 Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)
Files Changed
MODIFY /db/derby/code/branches/10.4/java/engine/org/apache/derby/impl/sql/compile/StaticMethodCallNode.java
MODIFY /db/derby/code/branches/10.4/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RoutineTest.java

Repository Revision Date User Message
ASF #679905 Fri Jul 25 22:04:21 UTC 2008 kmarsden DERBY-3360 Invalid method java.lang.Integer >> void <init>(short) because java.lang.NoSuchMethodException: java.lang.Integer.<init>(short)
Files Changed
MODIFY /db/derby/code/branches/10.3/java/engine/org/apache/derby/impl/sql/compile/StaticMethodCallNode.java
MODIFY /db/derby/code/branches/10.3/java/testing/org/apache/derbyTesting/functionTests/tests/lang/RoutineTest.java

Kathey Marsden added a comment - 25/Jul/08 10:05 PM
Ported fix to 10.4 and 10.3 branches. Please verify the fix and close the issue.

Thanks
Kathey

Kathey Marsden made changes - 25/Jul/08 10:05 PM
Resolution Fixed [ 1 ]
Fix Version/s 10.5.0.0 [ 12313010 ]
Fix Version/s 10.4.1.4 [ 12313112 ]
Fix Version/s 10.3.3.1 [ 12313143 ]
Status Open [ 1 ] Resolved [ 5 ]
Rick Hillegas made changes - 04/Aug/08 08:24 PM
Fix Version/s 10.3.3.1 [ 12313143 ]
Fix Version/s 10.4.2.0 [ 12313345 ]
Fix Version/s 10.4.1.4 [ 12313112 ]
Kathey Marsden made changes - 08/Jan/09 09:50 PM
Fix Version/s 10.3.3.1 [ 12313143 ]
Myrna van Lunteren made changes - 04/May/09 06:22 PM
Fix Version/s 10.5.0.0 [ 12313010 ]
Fix Version/s 10.5.1.1 [ 12313771 ]
Dag H. Wanvik made changes - 30/Jun/09 04:02 PM
Issue & fix info [High Value Fix]