Knut's suggestions seems good. Also whatever we decide it would be nice to get this right in the 10.4 release to avoid any upgrade issues with
changing the format in the future.

/mikem

Knut Anders Hatlen (JIRA) wrote:
     [ 
https://issues.apache.org/jira/browse/DERBY-3616?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Knut Anders Hatlen updated DERBY-3616:
--------------------------------------

    Attachment: enc.diff

I think the patch works, but I don't think we need to write our own code to 
perform encoding/decoding. Instead, we could use the constructor and getBytes() 
method that take the encoding parameter, and specify a well-known 8-bit 
encoding (for instance ISO-8859-1). See the attached patch for an example (this 
patch makes TableFunctionTest pass, but a real patch should probably create 
friendly helper methods around new String() and getBytes()). Another benefit 
with this approach, is that we waste less space (one byte maps to one char, 
whereas derby-3616-01-improvedEncoding.diff maps one byte to two chars).

TableFunctionTest fails under Ubuntu 7.10
-----------------------------------------

                Key: DERBY-3616
                URL: https://issues.apache.org/jira/browse/DERBY-3616
            Project: Derby
         Issue Type: Bug
         Components: Regression Test Failure
   Affects Versions: 10.5.0.0
        Environment: Operating System: Ubuntu 7.10
JVMs tested: 1.4 and 1.6
           Reporter: Tiago R. Espinha
           Priority: Minor
        Attachments: derby-3616-01-improvedEncoding.diff, enc.diff


When running the test 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest, it fails 
with the output shown below. This test blocks the proper execution of 
suites.All and it was tested under Ubuntu 7.10 (also tested on Windows Vista 
and it doesn't throw an error there).
There were 2 errors:
1) 
noSpecialCollation(org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest)java.sql.SQLException:
 The exception 'java.lang.ClassNotFoundException: ERROR XBM0U: No class was 
registered for identifier 495.' was thrown while evaluating an expression.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
        at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:223)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:398)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
        at 
org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2125)
        at 
org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:4320)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:463)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.next(EmbedResultSet.java:367)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1935)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1776)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1762)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.simpleVTIResults(TableFunctionTest.java:1079)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.tableFunctionTest(TableFunctionTest.java:920)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.noSpecialCollation(TableFunctionTest.java:897)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at 
org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:103)
Caused by: java.sql.SQLException: Java exception: 'ERROR XBM0U: No class was 
registered for identifier 495.: java.lang.ClassNotFoundException'.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
        at org.apache.derby.impl.jdbc.Util.javaException(Util.java:244)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
        ... 29 more
Caused by: java.lang.ClassNotFoundException: ERROR XBM0U: No class was 
registered for identifier 495.
        at 
org.apache.derby.iapi.services.io.FormatIdInputStream.readObject(FormatIdInputStream.java:129)
        at 
org.apache.derby.catalog.types.TypeDescriptorImpl.readExternal(TypeDescriptorImpl.java:491)
        at 
org.apache.derby.iapi.services.io.FormatIdInputStream.readObject(FormatIdInputStream.java:126)
        at 
org.apache.derby.impl.sql.execute.VTIResultSet.thawReturnType(VTIResultSet.java:696)
        at 
org.apache.derby.impl.sql.execute.VTIResultSet.getReturnColumnTypes(VTIResultSet.java:670)
        at 
org.apache.derby.impl.sql.execute.VTIResultSet.populateFromResultSet(VTIResultSet.java:559)
        at 
org.apache.derby.impl.sql.execute.VTIResultSet.getNextRowCore(VTIResultSet.java:347)
        at 
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(BasicNoPutResultSetImpl.java:460)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:423)
        ... 23 more
2) 
specialCollation(org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest)java.sql.SQLException:
 The exception 'java.lang.ClassNotFoundException: ERROR XBM0U: No class was 
registered for identifier 495.' was thrown while evaluating an expression.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
        at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:223)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:398)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
        at 
org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2125)
        at 
org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:4320)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:463)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.next(EmbedResultSet.java:367)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1935)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1776)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.assertResults(TableFunctionTest.java:1762)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.simpleVTIResults(TableFunctionTest.java:1079)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.tableFunctionTest(TableFunctionTest.java:920)
        at 
org.apache.derbyTesting.functionTests.tests.lang.TableFunctionTest.specialCollation(TableFunctionTest.java:907)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at 
org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:103)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
        at junit.extensions.TestSetup.run(TestSetup.java:23)
        at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
        at junit.extensions.TestSetup.run(TestSetup.java:23)
        at 
org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
        at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22)
        at junit.extensions.TestSetup$1.protect(TestSetup.java:19)
        at junit.extensions.TestSetup.run(TestSetup.java:23)
Caused by: java.sql.SQLException: Java exception: 'ERROR XBM0U: No class was 
registered for identifier 495.: java.lang.ClassNotFoundException'.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
        at org.apache.derby.impl.jdbc.Util.javaException(Util.java:244)
        at 
org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
        ... 45 more
Caused by: java.lang.ClassNotFoundException: ERROR XBM0U: No class was 
registered for identifier 495.
        at 
org.apache.derby.iapi.services.io.FormatIdInputStream.readObject(FormatIdInputStream.java:129)
        at 
org.apache.derby.catalog.types.TypeDescriptorImpl.readExternal(TypeDescriptorImpl.java:491)
        at 
org.apache.derby.iapi.services.io.FormatIdInputStream.readObject(FormatIdInputStream.java:126)
        at 
org.apache.derby.impl.sql.execute.VTIResultSet.thawReturnType(VTIResultSet.java:696)
        at 
org.apache.derby.impl.sql.execute.VTIResultSet.getReturnColumnTypes(VTIResultSet.java:670)
        at 
org.apache.derby.impl.sql.execute.VTIResultSet.populateFromResultSet(VTIResultSet.java:559)
        at 
org.apache.derby.impl.sql.execute.VTIResultSet.getNextRowCore(VTIResultSet.java:347)
        at 
org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(BasicNoPutResultSetImpl.java:460)
        at 
org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:423)
        ... 39 more
FAILURES!!!
Tests run: 2,  Failures: 0,  Errors: 2


Reply via email to