Thanks, Army. I don't seem to be able to access JIRA right now so I'm responding on-list. This wouldn't happen to be a small-device platform, would it? The handling of DECIMAL on the small device platform is different. The test may need some special logic so that it calls the correct method for the small device environment. Off the top of my head, I don't understand how my recent changes would have destabilized this test case. I recommend logging this as a new JIRA.

Thanks,
-Rick

A B (JIRA) wrote:
[ https://issues.apache.org/jira/browse/DERBY-3341?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12578083#action_12578083 ]
A B commented on DERBY-3341:
----------------------------

I saw two failures when running suites.All with weme6.1 last night, both in 
TableTestFunction with similar diffs.  Ex:

noSpecialCollation(o.a.dTesting.functionTests.tests.lang.TableFunctionTest)java.sql.SQLException:
 An attempt was made to get a data value of type 'java.lang.Object' from a data 
value of type 'DECIMAL'.
 at o.a.d.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
 at o.a.d.impl.jdbc.Util.generateCsSQLException(Unknown Source)
 at o.a.d.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
 at o.a.d.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
 at o.a.d.impl.jdbc.EmbedConnection.handleException(Unknown Source)
 at o.a.d.impl.jdbc.ConnectionChild.handleException(Unknown Source)
 at o.a.d.impl.jdbc.EmbedResultSet.closeOnTransactionError(Unknown Source)
 at o.a.d.impl.jdbc.EmbedResultSet.movePosition(Unknown Source)
 at o.a.d.impl.jdbc.EmbedResultSet.next(Unknown Source)
 at 
o.a.dTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1935)
 at 
o.a.dTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1776)
 at 
o.a.dTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1762)
 at 
o.a.dTesting.functionTests.tests.lang.TableFunctionTest.allLegalDatatypesVTIResults(TableFunctionTest.java:1178)
 at 
o.a.dTesting.functionTests.tests.lang.TableFunctionTest.tableFunctionTest(TableFunctionTest.java:921)
 at 
o.a.dTesting.functionTests.tests.lang.TableFunctionTest.noSpecialCollation(TableFunctionTest.java:897)
 at java.lang.reflect.AccessibleObject.invokeV(AccessibleObject.java:205)
 at o.a.dTesting.junit.BaseTestCase.runBare(BaseTestCase.java:101)
Caused by: ERROR 22005: An attempt was made to get a data value of type 
'java.lang.Object' from a data value of type 'DECIMAL'.
 at o.a.d.iapi.error.StandardException.newException(Unknown Source)
 at o.a.d.iapi.types.DataType.dataTypeConversion(Unknown Source)
 at o.a.d.iapi.types.DataType.getObject(Unknown Source)
 at o.a.d.impl.sql.execute.VTIResultSet.cast(Unknown Source)
 at o.a.d.impl.sql.execute.VTIResultSet.populateFromResultSet(Unknown Source)
 at o.a.d.impl.sql.execute.VTIResultSet.getNextRowCore(Unknown Source)
 at o.a.d.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(Unknown Source)

The other failure was the "specialCollation()" fixture.

I'm guessing you're not running tests with weme6.1, but any chance you might be 
able identify the cause?  Or should I file a separate issue?

TABLE FUNCTION returning CHAR values does not return a correct value if the 
Java ResultSet class returns a value less than the length of the defined CHAR.
----------------------------------------------------------------------------------------------------------------------------------------------------------

                Key: DERBY-3341
                URL: https://issues.apache.org/jira/browse/DERBY-3341
            Project: Derby
         Issue Type: Bug
         Components: SQL
           Reporter: Daniel John Debrunner
            Fix For: 10.4.0.0

        Attachments: derby-3341-01-coerce.diff, 
derby-3341-01-da-coerceWithTests.diff, derby-3341-02-aa-refGuide.diff, 
derby_3341_test.txt, rrefcreatefunctionstatement.html


Defining a column in the returned type as CHAR(10) requires that the returned 
value be of length 10 characters.
Defining a table function with a return type of:
   returns TABLE  column0 char( 10 ), column1 char( 10 ))
seems to just return whatever the Java ResultSet implementation handed it.
My guess this is true for all variable length types, no casting of the value 
occurs when it is returned to the SQL domain.
Java single value functions and procedure out parameters do perform any 
required casting to ensure the value is of the declared type.


Reply via email to