Details
Description
Calling functions that return Blob/Clob results in NoSuchMethodException (See stackTrace below). It fails because DataValueFactory.getClobDataValue(Clob, StringDataValue) does not exist. However, getClobDataValue(String, StringDataValue) exists. I will attach program to repro this.
java.lang.NoSuchMethodException: org.apache.derby.iapi.types.DataValueFactory.getClobDataValue(java.sql.Clob, org.apache.derby.iapi.types.StringDataValue) at java.lang.Class.getDeclaredMethod(Class.java:1909)
at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(d_BCValidate.java:133)
at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(BCMethod.java:745)
at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(BaseTypeCompiler.java:135)
at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(ExpressionClassBuilder.java:918)
at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(JavaToSQLValueNode.java:179)
at org.apache.derby.impl.sql.compile.CastNode.generateExpression(CastNode.java:884)
at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(SQLToJavaValueNode.java:361)
at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(SQLToJavaValueNode.java:341)
at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(JavaToSQLValueNode.java:176)
at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(ResultColumn.java:884)
at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(ResultColumnList.java:1097)
at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1516)
at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1303)
at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(ScrollInsensitiveResultSetNode.java:110)
at org.apache.derby.impl.sql.compile.CursorNode.generate(CursorNode.java:565)
at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:333)
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:741)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:129)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(EmbedPreparedStatement20.java:83)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(EmbedPreparedStatement30.java:63)
at org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Driver30.java:93)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:742)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:586)
at lobtests.ClobFunction.main(ClobFunction.java:87)
Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.StringDataValue getClobDataValue(java.sql.Clob, org.apache.derby.iapi.types.StringDataValue) because java.lang.NoSuchMethodException: org.apache.derby.iapi.types.DataValueFactory.getClobDataValue(java.sql.Clob, org.apache.derby.iapi.types.StringDataValue)
java.sql.SQLException: Java exception: 'ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.StringDataValue getClobDataValue(java.sql.Clob, org.apache.derby.iapi.types.StringDataValue) because java.lang.NoSuchMethodException: org.apache.derby.iapi.types.DataValueFactory.getClobDataValue(java.sql.Clob, org.apache.derby.iapi.types.StringDataValue): org.apache.derby.shared.common.sanity.AssertFailure'.
org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Invalid method org.apache.derby.iapi.types.DataValueFactory >> org.apache.derby.iapi.types.StringDataValue getClobDataValue(java.sql.Clob, org.apache.derby.iapi.types.StringDataValue) because java.lang.NoSuchMethodException: org.apache.derby.iapi.types.DataValueFactory.getClobDataValue(java.sql.Clob, org.apache.derby.iapi.types.StringDataValue)
at org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:149)
at org.apache.derby.impl.services.bytecode.d_BCValidate.checkMethod(d_BCValidate.java:192)
at org.apache.derby.impl.services.bytecode.BCMethod.callMethod(BCMethod.java:745)
at org.apache.derby.impl.sql.compile.BaseTypeCompiler.generateDataValue(BaseTypeCompiler.java:135)
at org.apache.derby.impl.sql.compile.ExpressionClassBuilder.generateDataValue(ExpressionClassBuilder.java:918)
at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(JavaToSQLValueNode.java:179)
at org.apache.derby.impl.sql.compile.CastNode.generateExpression(CastNode.java:884)
at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateSQLValue(SQLToJavaValueNode.java:361)
at org.apache.derby.impl.sql.compile.SQLToJavaValueNode.generateExpression(SQLToJavaValueNode.java:341)
at org.apache.derby.impl.sql.compile.JavaToSQLValueNode.generateExpression(JavaToSQLValueNode.java:176)
at org.apache.derby.impl.sql.compile.ResultColumn.generateExpression(ResultColumn.java:884)
at org.apache.derby.impl.sql.compile.ResultColumnList.generateCore(ResultColumnList.java:1097)
at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generateMinion(ProjectRestrictNode.java:1516)
at org.apache.derby.impl.sql.compile.ProjectRestrictNode.generate(ProjectRestrictNode.java:1303)
at org.apache.derby.impl.sql.compile.ScrollInsensitiveResultSetNode.generate(ScrollInsensitiveResultSetNode.java:110)
at org.apache.derby.impl.sql.compile.CursorNode.generate(CursorNode.java:565)
at org.apache.derby.impl.sql.compile.StatementNode.generate(StatementNode.java:333)
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:741)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement.<init>(EmbedPreparedStatement.java:129)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement20.<init>(EmbedPreparedStatement20.java:83)
at org.apache.derby.impl.jdbc.EmbedPreparedStatement30.<init>(EmbedPreparedStatement30.java:63)
at org.apache.derby.jdbc.Driver30.newEmbedPreparedStatement(Driver30.java:93)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:742)
at org.apache.derby.impl.jdbc.EmbedConnection.prepareStatement(EmbedConnection.java:586)
at lobtests.ClobFunction.main(ClobFunction.java:87)
Attachments
Attachments
Issue Links
- is depended upon by
-
DERBY-1285 Finish JDBC3 Blob implementation
- Closed
- is duplicated by
-
DERBY-3744 User-coded functions can't return Blob or Clob because these raise connection-killing errors in the byte-code compiler
- Closed
- is related to
-
DERBY-3652 Derby does not follow the SQL Standard when trying to map SQL routines to Java methods.
- Closed