[
https://issues.apache.org/jira/browse/DERBY-5531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13436064#comment-13436064
]
Mamta A. Satoor commented on DERBY-5531:
----------------------------------------
It looks like at bind time of insert node, we go through the individual columns
in the insert statement to determine if there is a need for normalization or
not. For some reason, for our insert staement in this jira, we conclude that we
do not need normalization and hence at execution time, the data type conversion
from SQLVarchar to CollatorSQLVarchar never happens and hence the assert
failure in OpenBTree.java. Here is the relevant code in
InsertNode.bindStatement()
/* Insert a NormalizeResultSetNode above the source if the
source
* and target column types and lengths do not match.
*/
if (! resultColumnList.columnTypesAndLengthsMatch(
resultSet.getResultColumns()))
{
resultSet =
(ResultSetNode) getNodeFactory().getNode(
C_NodeTypes.NORMALIZE_RESULT_SET_NODE, resultSet,
resultColumnList, null, Boolean.FALSE,
getContextManager());
}
> Assert failure when inserting NULL into indexed column with territory-based
> collation
> -------------------------------------------------------------------------------------
>
> Key: DERBY-5531
> URL: https://issues.apache.org/jira/browse/DERBY-5531
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.8.2.2
> Reporter: Knut Anders Hatlen
> Assignee: Mamta A. Satoor
> Labels: derby_triage10_9
>
> ij> connect
> 'jdbc:derby:colldb;territory=en;collation=TERRITORY_BASED;create=true';
> ij> create table t(x varchar(10) unique);
> 0 rows inserted/updated/deleted
> ij> insert into t values null;
> ERROR XJ001: Java exception: 'ASSERT FAILED type of inserted column[0] =
> org.apache.derby.iapi.types.SQLVarchartype of template column[0] =
> org.apache.derby.iapi.types.CollatorSQLVarchar:
> org.apache.derby.shared.common.sanity.AssertFailure'.
> java.sql.SQLException: Java exception: 'ASSERT FAILED type of inserted
> column[0] = org.apache.derby.iapi.types.SQLVarchartype of template column[0]
> = org.apache.derby.iapi.types.CollatorSQLVarchar:
> org.apache.derby.shared.common.sanity.AssertFailure'.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:98)
> at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:142)
> at org.apache.derby.impl.jdbc.Util.javaException(Util.java:299)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:436)
> at
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:353)
> at
> org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:2288)
> at
> org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:82)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1334)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:630)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.execute(EmbedStatement.java:559)
> at org.apache.derby.impl.tools.ij.ij.executeImmediate(ij.java:367)
> at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:527)
> at
> org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:369)
> at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:245)
> at org.apache.derby.impl.tools.ij.Main.go(Main.java:229)
> at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:184)
> at org.apache.derby.impl.tools.ij.Main.main(Main.java:75)
> at org.apache.derby.tools.ij.main(ij.java:59)
> at org.apache.derby.iapi.tools.run.main(run.java:53)
> Caused by: java.sql.SQLException: Java exception: 'ASSERT FAILED type of
> inserted column[0] = org.apache.derby.iapi.types.SQLVarchartype of template
> column[0] = org.apache.derby.iapi.types.CollatorSQLVarchar:
> org.apache.derby.shared.common.sanity.AssertFailure'.
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:42)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory40.java:122)
> at
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(SQLExceptionFactory40.java:71)
> ... 18 more
> Caused by: org.apache.derby.shared.common.sanity.AssertFailure: ASSERT FAILED
> type of inserted column[0] = org.apache.derby.iapi.types.SQLVarchartype of
> template column[0] = org.apache.derby.iapi.types.CollatorSQLVarchar
> 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:515)
> 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:1374)
> 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:440)
> at
> org.apache.derby.impl.sql.execute.IndexChanger.doInsert(IndexChanger.java:383)
> at
> org.apache.derby.impl.sql.execute.IndexChanger.insert(IndexChanger.java:590)
> at
> org.apache.derby.impl.sql.execute.IndexSetChanger.insert(IndexSetChanger.java:268)
> at
> org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(RowChangerImpl.java:453)
> at
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(InsertResultSet.java:999)
> at
> org.apache.derby.impl.sql.execute.InsertResultSet.open(InsertResultSet.java:519)
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(GenericPreparedStatement.java:443)
> at
> org.apache.derby.impl.sql.GenericPreparedStatement.execute(GenericPreparedStatement.java:324)
> at
> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(EmbedStatement.java:1242)
> ... 11 more
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira