db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DERBY-6006) NullPointerException in INSERT INTO ... SELECT FROM ... ORDER BY
Date Tue, 04 Dec 2012 14:36:58 GMT

    [ https://issues.apache.org/jira/browse/DERBY-6006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13509768#comment-13509768
] 

Knut Anders Hatlen commented on DERBY-6006:
-------------------------------------------

The insert statement fails because it gets confused as to how many columns the nested select
returns. Since the order by column is not in the select list, it gets added to the result
columns of the underlying select. It should normally be removed before the insert sees it.
However, since the select list contains an INT, and the target type in the table is DOUBLE,
a NormalizeResultSetNode is added on top of the SelectNode. NormalizeResultSetNode.init()
has code to remove columns added for GROUP BY, but not for ORDER BY. I think it should work
if NRSN.init() also removed ORDER BY columns.
                
> NullPointerException in INSERT INTO ... SELECT FROM ... ORDER BY
> ----------------------------------------------------------------
>
>                 Key: DERBY-6006
>                 URL: https://issues.apache.org/jira/browse/DERBY-6006
>             Project: Derby
>          Issue Type: Bug
>          Components: Store
>    Affects Versions: 10.6.2.1, 10.7.1.1, 10.9.1.0, 10.8.3.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>
> A NullPointerException was reported by Harm-Jan Zwinderman on derby-user:
> http://mail-archives.apache.org/mod_mbox/db-derby-user/201211.mbox/%3C50B66527.5040906%40gmail.com%3E
> I've managed to reproduce it on 10.9.1.0 like this:
> ij version 10.9
> ij> connect 'jdbc:derby:memory:db;create=true';
> ij> create table t(x double);
> 0 rows inserted/updated/deleted
> ij> insert into t values (0);
> 1 row inserted/updated/deleted
> ij> prepare ps as 'insert into t select 1 from t order by x';
> ij> execute ps;
> 1 row inserted/updated/deleted
> ij> execute ps;
> 2 rows inserted/updated/deleted
> ij> execute ps;
> 4 rows inserted/updated/deleted
> ij> execute ps;
> ERROR XJ001: Java exception: ': java.lang.NullPointerException'.
> Full stack trace:
> java.lang.NullPointerException
> 	at org.apache.derby.impl.store.access.conglomerate.ConglomerateUtil.createFormatIds(Unknown
Source)
> 	at org.apache.derby.impl.store.access.heap.Heap.create(Unknown Source)
> 	at org.apache.derby.impl.store.access.heap.HeapConglomerateFactory.createConglomerate(Unknown
Source)
> 	at org.apache.derby.impl.store.access.RAMTransaction.createConglomerate(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.TemporaryRowHolderImpl.insert(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown Source)
> 	at org.apache.derby.impl.sql.execute.InsertResultSet.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.EmbedPreparedStatement.executeStatement(Unknown Source)
> 	at org.apache.derby.impl.jdbc.EmbedPreparedStatement.execute(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.ExecuteStatement(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.ij.ijStatement(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.go(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Unknown Source)
> 	at org.apache.derby.impl.tools.ij.Main.main(Unknown Source)
> 	at org.apache.derby.tools.ij.main(Unknown Source)
> 	at org.apache.derby.iapi.tools.run.main(Unknown Source)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message