A table created with 10.0.2.1 with constraints cannot be dropped with 10.5 due
to NullPointerException with insane build or SSERT FAILED Failed to find
sharable conglomerate descriptor for index conglomerate with sane build
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: DERBY-5249
URL: https://issues.apache.org/jira/browse/DERBY-5249
Project: Derby
Issue Type: Bug
Components: Store
Affects Versions: 10.5.3.0
Reporter: Kathey Marsden
In 10.0.2.1 there was some bug that caused a duplicate entry in
sys.sysconglomerates.
After running the attached repro_create.sql with 10.0.2.1, you will see two
rows returned instead of one with:
select c.constraintname, c.constraintid, cong.conglomerateid,
cong.conglomeratename from sys.sysconglomerates cong, sys.syskeys k,
sys.sysconstraints c where c.constraintname = 'PK_RS' and c.constraintid
=k.constraintid and k.conglomerateid = cong.conglomerateid ;
I am not sure what practical impact this has with 10.0 as you can still drop
the table s.rs with that version.
On connecting to the database with 10.5, either soft or hard upgrade with
10.5.3.2 - 1103924
DROP TABLE S.RS fails with:
Caused by: java.sql.SQLException: Java exception: 'ASSERT FAILED Failed to find
sharable conglomerate descriptor for index conglomerate # 785: org.apache.derby.
shared.common.sanity.AssertFailure'.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExc
eptionFactory.java:45)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransport
AcrossDRDA(SQLExceptionFactory40.java:119)
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLE
xceptionFactory40.java:70)
... 17 more
Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED Fa
iled to find sharable conglomerate descriptor for index conglomerate # 785
at org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(Sanit
yManager.java:162)
at org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(Sanit
yManager.java:147)
at org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor.describeS
haredConglomerate(ConglomerateDescriptor.java:638)
at org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor.drop(Cong
lomerateDescriptor.java:428)
at org.apache.derby.iapi.sql.dictionary.ConstraintDescriptor.drop(Constr
aintDescriptor.java:738)
at org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction.dropCo
nstraint(DDLSingleTableConstantAction.java:144)
at org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction.dropCo
nstraint(DDLSingleTableConstantAction.java:107)
at org.apache.derby.impl.sql.execute.DropTableConstantAction.dropAllCons
traintDescriptors(DropTableConstantAction.java:315)
at org.apache.derby.impl.sql.execute.DropTableConstantAction.executeCons
tantAction(DropTableConstantAction.java:222)
at org.apache.derby.impl.sql.execute.MiscResultSet.open(MiscResultSet.ja
va:61)
at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Generi
cPreparedStatement.java:416)
at org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPre
paredStatement.java:297)
at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedState
ment.java:1235)
... 10 more
and with an insane build with a NullPointerException:
java.lang.NullPointerException
at
org.apache.derby.iapi.sql.dictionary.ConglomerateDescriptor.drop(Unknown
Source)
at
org.apache.derby.iapi.sql.dictionary.ConstraintDescriptor.drop(Unknown
Source)
at
org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction.dropConst
raint(Unknown Source)
at
org.apache.derby.impl.sql.execute.DDLSingleTableConstantAction.dropConst
raint(Unknown Source)
at
org.apache.derby.impl.sql.execute.DropTableConstantAction.dropAllConstra
intDescriptors(Unknown Source)
at
org.apache.derby.impl.sql.execute.DropTableConstantAction.executeConstan
tAction(Unknown Source)
at org.apache.derby.impl.sql.execute.MiscResultSet.open(Unknown
Source)
at
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown
Source)
at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown
Source)
Still need to figure out the exact versions affected, when the dup row was
fixed, and when the drop stopped working.
To reproduce connect to a database with 10.0.2.1
(can be accessed at http://svn.apache.org/repos/asf/db/derby/jars/10.0.2.1)
run the attached script repro_create.sql;
connect with the latest on the trunk or 10.5 branch
DROP TABLE S.RS;
The table will not drop. The work around is to drop the table with the old
version 10.0.2.1
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira