[
https://issues.apache.org/jira/browse/DERBY-6890?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Andrei Koiro updated DERBY-6890:
--------------------------------
Description:
After issue https://issues.apache.org/jira/browse/DERBY-3888 was fixed, we want
to use the 'GENERATED BY DEFAULT' feature
for our tables. To do it we use this sql to alter our pk columns:
ALTER TABLE MODULE ADD COLUMN ID_TEMP BIGINT GENERATED BY DEFAULT AS
IDENTITY
UPDATE MODULE SET ID_TEMP = ID
'ALTER TABLE MODULE ALTER COLUMN ID_TEMP NOT NULL;\n' +
'ALTER TABLE MODULE DROP ID;\n' +
'RENAME COLUMN MODULE.ID_TEMP TO ID;\n' +
we are trying to migrate to derby 10.12.1.1 and want to use 'GENERATED BY
DEFAULT AS IDENTITY'.
we altered our pk columns, and added 'GENERATED BY DEFAULT AS IDENTITY'. After
that when I try to insert in my table any record, I get this exception:
Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED
type of inserted column[0] = org.apache.derby.iapi.types.CollatorSQLVarchartype
of template column[0] = org.apache.derby.iapi.types.SQLVarchar
at
org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:162)
at
org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:147)
at
org.apache.derby.impl.store.access.btree.OpenBTree.isIndexableRowConsistent(OpenBTree.java:519)
at
org.apache.derby.impl.store.access.btree.BTreeController.doIns(BTreeController.java:679)
at
org.apache.derby.impl.store.access.btree.BTreeController.insert(BTreeController.java:1372)
at
org.apache.derby.impl.store.access.btree.index.B2IController.insert(B2IController.java:210)
at
org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(IndexChanger.java:565)
at
org.apache.derby.impl.sql.execute.IndexChanger.doInsert(IndexChanger.java:393)
at
org.apache.derby.impl.sql.execute.IndexChanger.insert(IndexChanger.java:713)
at
org.apache.derby.impl.sql.execute.IndexSetChanger.insert(IndexSetChanger.java:268)
at
org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(RowChangerImpl.java:458)
at
org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:881)
at
org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:452)
at
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:473)
at
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:352)
at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1340)
... 30 more
I attached Test.groovy class which shows this issue.
I found this workaround:
we need drop indexes and create them again.
was:
we are trying to migrate to derby 10.12.1.1 and want to use 'GENERATED BY
DEFAULT AS IDENTITY'.
we altered our pk columns, and added 'GENERATED BY DEFAULT AS IDENTITY'. After
that when I try to insert in my table any record, I get this exception:
Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED
type of inserted column[0] = org.apache.derby.iapi.types.CollatorSQLVarchartype
of template column[0] = org.apache.derby.iapi.types.SQLVarchar
at
org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:162)
at
org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:147)
at
org.apache.derby.impl.store.access.btree.OpenBTree.isIndexableRowConsistent(OpenBTree.java:519)
at
org.apache.derby.impl.store.access.btree.BTreeController.doIns(BTreeController.java:679)
at
org.apache.derby.impl.store.access.btree.BTreeController.insert(BTreeController.java:1372)
at
org.apache.derby.impl.store.access.btree.index.B2IController.insert(B2IController.java:210)
at
org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(IndexChanger.java:565)
at
org.apache.derby.impl.sql.execute.IndexChanger.doInsert(IndexChanger.java:393)
at
org.apache.derby.impl.sql.execute.IndexChanger.insert(IndexChanger.java:713)
at
org.apache.derby.impl.sql.execute.IndexSetChanger.insert(IndexSetChanger.java:268)
at
org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(RowChangerImpl.java:458)
at
org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:881)
at
org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:452)
at
org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:473)
at
org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:352)
at
org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1340)
... 30 more
I attached Test.groovy class which shows this issue.
I found this workaround:
we need drop indexes and create them again.
> after alter
> ------------
>
> Key: DERBY-6890
> URL: https://issues.apache.org/jira/browse/DERBY-6890
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.12.1.1
> Environment: Mac OS X 10.11.5
> JDK: Oracle 1.8.0_92
> Reporter: Andrei Koiro
> Attachments: Test.groovy
>
>
> After issue https://issues.apache.org/jira/browse/DERBY-3888 was fixed, we
> want to use the 'GENERATED BY DEFAULT' feature
> for our tables. To do it we use this sql to alter our pk columns:
> ALTER TABLE MODULE ADD COLUMN ID_TEMP BIGINT GENERATED BY DEFAULT AS
> IDENTITY
> UPDATE MODULE SET ID_TEMP = ID
> 'ALTER TABLE MODULE ALTER COLUMN ID_TEMP NOT NULL;\n' +
> 'ALTER TABLE MODULE DROP ID;\n' +
> 'RENAME COLUMN MODULE.ID_TEMP TO ID;\n' +
> we are trying to migrate to derby 10.12.1.1 and want to use 'GENERATED BY
> DEFAULT AS IDENTITY'.
> we altered our pk columns, and added 'GENERATED BY DEFAULT AS IDENTITY'.
> After that when I try to insert in my table any record, I get this exception:
> Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED
> type of inserted column[0] =
> org.apache.derby.iapi.types.CollatorSQLVarchartype of template column[0] =
> org.apache.derby.iapi.types.SQLVarchar
> at
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:162)
> at
> org.apache.derby.shared.common.sanity.SanityManager.THROWASSERT(SanityManager.java:147)
> at
> org.apache.derby.impl.store.access.btree.OpenBTree.isIndexableRowConsistent(OpenBTree.java:519)
> at
> org.apache.derby.impl.store.access.btree.BTreeController.doIns(BTreeController.java:679)
> at
> org.apache.derby.impl.store.access.btree.BTreeController.insert(BTreeController.java:1372)
> at
> org.apache.derby.impl.store.access.btree.index.B2IController.insert(B2IController.java:210)
> at
> org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(IndexChanger.java:565)
> at
> org.apache.derby.impl.sql.execute.IndexChanger.doInsert(IndexChanger.java:393)
> at
> org.apache.derby.impl.sql.execute.IndexChanger.insert(IndexChanger.java:713)
> at
> org.apache.derby.impl.sql.execute.IndexSetChanger.insert(IndexSetChanger.java:268)
> at
> org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(RowChangerImpl.java:458)
> at
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:881)
> at
> org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:452)
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:473)
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:352)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1340)
> ... 30 more
> I attached Test.groovy class which shows this issue.
> I found this workaround:
> we need drop indexes and create them again.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)