You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Myrna van Lunteren (JIRA)" <ji...@apache.org> on 2007/11/06 23:24:50 UTC

[jira] Updated: (DERBY-3180) error XSDA3 when test is executing SYSCS_INPLACE_COMPRESS_TABLE in specific situation

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

Myrna van Lunteren updated DERBY-3180:
--------------------------------------

    Attachment: derby.log
                DatabaseMetaDataTest.java

> error XSDA3 when test is executing SYSCS_INPLACE_COMPRESS_TABLE in specific situation
> -------------------------------------------------------------------------------------
>
>                 Key: DERBY-3180
>                 URL: https://issues.apache.org/jira/browse/DERBY-3180
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.4.0.0
>            Reporter: Myrna van Lunteren
>         Attachments: DatabaseMetaDataTest.java, derby.log
>
>
> While attempting to add testing for getBestRowIdentifier from tests jdbcapi/bestrowidentifier.sql and jdbcapi.metadata.java to jdbcapi.DatabaseMetaDataTest, I ran into an occurrence of 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 - but only on running the test a second time without removing wombat.
> I've tried various approaches in an attempt to narrowing down and make a better repro, but was not successful. 
> I tried saving the database after running the first time, then executing call SYSCS_UTIL.SYSCS_INPLACE_COMPRESS_TABLE('SYS', 'SYSDEPENDS', 1, 1, 1) on the database using ij; I tried to change the test to use embeddedSuite instead of defaultSuite, I tried to removing all other tests than the one I added, but nothing repro-ed the issue. I also found that by removing the last table I added to the test fixture into a separate test fixture,  the problem went away. That is what is currently checked in...
> So, I'll attach the DatabaseMetaDataTest.java that reproduced the problem as well as derby.log when the error occurs.
> The online/inplace compress that is being executed (multiple times) is done in the CleanDatabaseSetup.java, and it's on SYS.SYSDEPENDS.
> This is the stack trace I get when running the test a second time:
> 1) DatabaseMetaDataTest:embeddedjava.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 org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
> 	at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:202)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:391)
> 	at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
> 	at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:1574)
> 	at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1315)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(EmbedPreparedStatement.java:1650)
> 	at org.apache.derby.impl.jdbc.EmbedCallableStatement.executeStatement(EmbedCallableStatement.java:116)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(EmbedPreparedStatement.java:1305)
> 	at org.apache.derbyTesting.junit.CleanDatabaseTestSetup.compressObjects(CleanDatabaseTestSetup.java:232)
> 	at org.apache.derbyTesting.junit.CleanDatabaseTestSetup.cleanDatabase(CleanDatabaseTestSetup.java:130)
> 	at org.apache.derbyTesting.junit.CleanDatabaseTestSetup.setUp(CleanDatabaseTestSetup.java:73)
> 	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 org.apache.derby.iapi.error.StandardException.newException(StandardException.java:280)
> 	at org.apache.derby.impl.store.raw.data.CopyRowsOperation.writeOptionalDataToBuffer(CopyRowsOperation.java:287)
> 	at org.apache.derby.impl.store.raw.data.CopyRowsOperation.<init>(CopyRowsOperation.java:98)
> 	at org.apache.derby.impl.store.raw.data.LoggableActions.actionCopyRows(LoggableActions.java:159)
> 	at org.apache.derby.impl.store.raw.data.BasePage.copyInto(BasePage.java:2045)
> 	at org.apache.derby.impl.store.raw.data.BasePage.copyAndPurge(BasePage.java:1300)
> 	at org.apache.derby.impl.store.raw.data.StoredPage.moveRecordForCompressAtSlot(StoredPage.java:6920)
> 	at org.apache.derby.impl.store.access.heap.HeapCompressScan.fetchRowsForCompress(HeapCompressScan.java:230)
> 	at org.apache.derby.impl.store.access.heap.HeapCompressScan.fetchNextGroup(HeapCompressScan.java:85)
> 	at org.apache.derby.iapi.db.OnlineCompress.defragmentRows(OnlineCompress.java:375)
> 	at org.apache.derby.iapi.db.OnlineCompress.compressTable(OnlineCompress.java:219)
> 	at org.apache.derby.catalog.SystemProcedures.SYSCS_INPLACE_COMPRESS_TABLE(SystemProcedures.java:942)
> 	at org.apache.derby.exe.ac601a400fx0116x16f0x0fb7x0000701082432.g0(Unknown Source)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:85)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:58)
> 	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:60)
> 	at org.apache.derby.impl.services.reflect.ReflectMethod.invoke(ReflectMethod.java:46)
> 	at org.apache.derby.impl.sql.execute.CallStatementResultSet.open(CallStatementResultSet.java:57)
> 	at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:370)
> 	at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1225)
> 	... 17 more

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