From the documentation it is clear that there is no current support for blob/clob as parameters. I always assumed that extended to return value
also.  It is sort of unclear from the documentation.

Anyone know if current code was meant to support blob/clob as return value?

Øystein Grøvlen (JIRA) wrote:
     [ http://issues.apache.org/jira/browse/DERBY-2201?page=all ]

Øystein Grøvlen updated DERBY-2201:
-----------------------------------

    Attachment: getClobDataValue.diff

I tried defining getBlobDataValue/getClobDataValue that takes a Blob/Clob 
parameter instead of a String (see attached getClobDataValue.diff), but then 
the repro fails because getObject is not implemented for SQLBlob/SQLClob:

java.sql.SQLException: An attempt was made to get a data value of type 
'java.lang.Object' from a data value of type 'CLOB'.
ERROR 22005: An attempt was made to get a data value of type 'java.lang.Object' 
from a data value of type 'CLOB'.
        at 
org.apache.derby.iapi.error.StandardException.newException(StandardException.java:316)
        at 
org.apache.derby.iapi.types.DataType.dataTypeConversion(DataType.java:1038)
        at org.apache.derby.iapi.types.SQLClob.getObject(SQLClob.java:141)
        at 
org.apache.derby.exe.ac07170079x010fxc918x10adx0000001741881.e1(Unknown Source)
        at 
org.apache.derby.impl.services.reflect.DirectCall.invoke(ReflectGeneratedClass.java:141)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.doProjection(ProjectRestrictResultSet.java:488)
        at 
org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(ProjectRestrictResultSet.java:292)
        at 
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(BasicNoPutResultSetImpl.java:475)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:440)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.next(EmbedResultSet.java:384)
        at lobtests.ClobFunction.main(ClobFunction.java:89)





Calling functions that return Blob/Clob does not work.
------------------------------------------------------

               Key: DERBY-2201
               URL: http://issues.apache.org/jira/browse/DERBY-2201
           Project: Derby
        Issue Type: Bug
        Components: SQL
  Affects Versions: 10.3.0.0
       Environment: Derby, head of trunk. Sun JVM 5. Solaris 10 (x86).
          Reporter: Øystein Grøvlen
          Priority: Minor
       Attachments: ClobFunction.java, getClobDataValue.diff


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)



Reply via email to