[ 
https://issues.apache.org/jira/browse/DERBY-3625?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mike Matrigali updated DERBY-3625:
----------------------------------


I think i understand what is going on, and the previous test description 
probably does not cause this
bug.  Not sure what right fix is yet.

I went back to the original page dumps, and think I know the problem.  Compress 
is using the old length
to find a suitable page, but it turns out the length of the row is actually 
variable because the record id is
changing.  In this case the soruce page record id is 40 and the next record id 
on the dest page is 69.

For complete doc on record format see javadoc in StoredPage at top - search for 
Record & Field Format.
but short answer is that records include a record header (StoredRecordHeader) 
and 
StoredRecordHeader writes out the record id using a Compressed Int (see 
CompressedNumber) and
the break down for size for the compressed number is:

    /**
        Write a compressed integer only supporting signed values.
        Formats are (with x representing value bits):
        <PRE>
        1 Byte - 00xxxxxx                              Represents the value <= 
63 (0x3f)
        2 Byte - 01xxxxxx xxxxxxxx                     Represents the value > 
63 && <= 16383 (0x3fff)
        4 byte - 1xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx   Represents the value > 
16383 && <= MAX_INT
        </PRE>


        @exception IOException value is negative or an exception was thrown by a
 method on out.
    */

> XSDA3 error in concateTests in lang.LangHarnessJavaTest 
> --------------------------------------------------------
>
>                 Key: DERBY-3625
>                 URL: https://issues.apache.org/jira/browse/DERBY-3625
>             Project: Derby
>          Issue Type: Bug
>          Components: Regression Test Failure
>    Affects Versions: 10.4.1.3
>         Environment: iseries, ibm1.5.:
> java version "1.5.0"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05)
> Classic VM (build 1.5, build JDK-1.5, native threads, jitc_de)
>            Reporter: Myrna van Lunteren
>         Attachments: derby_log_wdebug.zip, derby_log_wdebug2.zip, 
> derbylog.zip, wombat.zip
>
>
> I saw this test fail once with a similar error to DERBY-3180 and DERBY-3381.
> Unfortunately, possibly because it's an old harness test, the db and 
> derby.log were not saved in the 'fail' directory.
> All I have is the stack trace from the output:
> 1) 
> concateTests(org.apache.derbyTesting.functionTests.tests.lang.LangHarnessJavaTest)java.sql.SQLException:
>  Limitation: Record cannot be updated or inserted due to lack of space on the 
> page. Use the parameters derby.storage.pageSize and/or 
> derby.storage.pageReservedSpace to work around this limitation.
>       at java.lang.Throwable.<init>(Throwable.java:196)
>       at java.lang.Exception.<init>(Exception.java:41)
>       at java.sql.SQLException.<init>(SQLException.java:40)
>       at org.apache.derby.impl.jdbc.EmbedSQLException.<init>(Unknown Source)
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
>       at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedCallableStatement.executeStatement(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown 
> Source)
>       at 
> org.apache.derbyTesting.junit.CleanDatabaseTestSetup.compressObjects(CleanDatabaseTestSetup.java:267)
>       at 
> org.apache.derbyTesting.junit.CleanDatabaseTestSetup.cleanDatabase(CleanDatabaseTestSetup.java:166)
>       at 
> org.apache.derbyTesting.junit.CleanDatabaseTestSetup.setUp(CleanDatabaseTestSetup.java:109)
>       at junit.extensions.TestSetup$1.protect(TestSetup.java:18)
>       at junit.extensions.TestSetup.run(TestSetup.java:23)
>       at 
> org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57)
> Caused by: ERROR XSDA3: Limitation: Record cannot be updated or inserted due 
> to lack of space on the page. Use the parameters derby.storage.pageSize 
> and/or derby.storage.pageReservedSpace to work around this limitation.
>       at java.lang.Throwable.<init>(Throwable.java:196)
>       at java.lang.Exception.<init>(Exception.java:41)
>       at org.apache.derby.iapi.error.StandardException.<init>(Unknown Source)
>       at org.apache.derby.iapi.error.StandardException.<init>(Unknown Source)
>       at org.apache.derby.iapi.error.StandardException.newException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.store.raw.data.CopyRowsOperation.writeOptionalDataToBuffer(Unknown
>  Source)
>       at 
> org.apache.derby.impl.store.raw.data.CopyRowsOperation.<init>(Unknown Source)
>       at 
> org.apache.derby.impl.store.raw.data.LoggableActions.actionCopyRows(Unknown 
> Source)
>       at org.apache.derby.impl.store.raw.data.BasePage.copyInto(Unknown 
> Source)
>       at org.apache.derby.impl.store.raw.data.BasePage.copyAndPurge(Unknown 
> Source)
>       at 
> org.apache.derby.impl.store.raw.data.StoredPage.moveRecordForCompressAtSlot(Unknown
>  Source)
>       at 
> org.apache.derby.impl.store.access.heap.HeapCompressScan.fetchRowsForCompress(Unknown
>  Source)
>       at 
> org.apache.derby.impl.store.access.heap.HeapCompressScan.fetchNextGroup(Unknown
>  Source)
>       at org.apache.derby.iapi.db.OnlineCompress.defragmentRows(Unknown 
> Source)
>       at org.apache.derby.iapi.db.OnlineCompress.compressTable(Unknown Source)
>       at 
> org.apache.derby.catalog.SystemProcedures.SYSCS_INPLACE_COMPRESS_TABLE(Unknown
>  Source)
>       at 
> org.apache.derby.exe.ac4388a4aax0119x3203xfc8fx0000783ef2472.g0(Unknown 
> Source)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.execute.CallStatementResultSet.open(Unknown Source)
>       at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
> Source)
>       ... 24 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to