[
https://issues.apache.org/jira/browse/DERBY-2201?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12671219#action_12671219
]
Kristian Waagan commented on DERBY-2201:
----------------------------------------
I had a very quick look at the patch, and have one initial comment. However, I
plan to take a better look next week.
My comment is regarding the Clob part of the patch;
o Do you have to push the Clob into SQLVarchar and SQLChar?
o How many methods do you have to override in SQLClob if you make the
java.sql.Clob part of the SQLClob state?
Answering these questions may involve some work, but I thought I'd ask them now
anyway :)
My motivation from asking is the assumption that only SQLClob will be
instantiated with a java.sql.Clob as the source. If that is not the case, maybe
SQLChar and SQLVarchar should have special methods that materialize the source,
which should be acceptable due to their limited maximum size.
There is already some Clob specific code in SQLChar, but they were introduced
to avoid making the state in SQLChar directly available to its subclasses.
> Calling functions that return Blob/Clob does not work.
> ------------------------------------------------------
>
> Key: DERBY-2201
> URL: https://issues.apache.org/jira/browse/DERBY-2201
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.3.1.4
> Environment: Derby, head of trunk. Sun JVM 5. Solaris 10 (x86).
> Reporter: Øystein Grøvlen
> Priority: Minor
> Attachments: ClobFunction.java, derby-2201-02-aa-wrapUserLob.diff,
> derby-2201-aa-01-crudeDog.diff, 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)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.