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

Bryan Pendleton commented on DERBY-3175:
----------------------------------------

Resetting the next-value counter is occurring in the makeRow() code that I 
quoted in my earlier comment. Pay particular attention to these lines:

                        row.setColumn(SYSCOLUMNS_AUTOINCREMENTVALUE,
                                                  new SQLLongint(autoincStart));
                        row.setColumn(SYSCOLUMNS_AUTOINCREMENTSTART,
                                                  new SQLLongint(autoincStart));

Note that 'autoincStart' is used for *both* the 'start' column of SYSCOLUMNS 
and the 'value' column.

Also, note that when we build a ColumnDescriptor from a SYSCOLUMNS row, in 
buildDescriptor(),
we intentionally omit the AUTOINCREMENTVALUE from the ColumnDescriptor object:

/* 7th column is AUTOINCREMENTVALUE, not cached in descriptor (long) */

So we don't even have the previous counter value available at the time that we 
make the new row.

More study is needed.

> NullPointerException on INSERT after ALTER TABLE ... DROP COLUMN
> ----------------------------------------------------------------
>
>                 Key: DERBY-3175
>                 URL: https://issues.apache.org/jira/browse/DERBY-3175
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.3.1.4, 10.4.0.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Bryan Pendleton
>         Attachments: bug.sql, d3175_codeChangeOnly.diff, 
> fixWith3177Case.diff, fixWithTest.diff
>
>
> ij version 10.3
> ij> connect 'jdbc:derby:bugdb;create=true';
> ij> create table t (
>        x varchar(12),
>        y varchar(12),
>        id int primary key generated by default as identity
> );
> 0 rows inserted/updated/deleted
> ij> alter table t drop column y;
> 0 rows inserted/updated/deleted
> ij> insert into t(x) values 'a';
> ERROR XJ001: Java exception: ': java.lang.NullPointerException'.
> java.sql.SQLException: Java exception: ': java.lang.NullPointerException'.
>         at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.Util.javaException(Unknown Source)
>         at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
> Source)
>         at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown 
> Source)
>         at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
>         at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
>         at org.apache.derby.impl.tools.ij.ij.executeImmediate(Unknown Source)
>         at org.apache.derby.impl.tools.ij.utilMain.doCatch(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.Main14.main(Unknown Source)
>         at org.apache.derby.tools.ij.main(Unknown Source)
>         at org.apache.derby.iapi.tools.run.main(Unknown Source)
> Caused by: java.sql.SQLException: Java exception: ': 
> java.lang.NullPointerException'.
>         at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
>         at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>  Source)
>         ... 18 more
> Caused by: java.lang.NullPointerException
>         at 
> org.apache.derby.impl.sql.compile.ResultColumn.columnTypeAndLengthMatch(Unknown
>  Source)
>         at 
> org.apache.derby.impl.sql.compile.ResultColumnList.columnTypesAndLengthsMatch(Unknown
>  Source)
>         at org.apache.derby.impl.sql.compile.InsertNode.bindStatement(Unknown 
> Source)
>         at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown 
> Source)
>         at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
>         at 
> org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown
>  Source)
>         ... 11 more

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

Reply via email to