[
https://issues.apache.org/jira/browse/DERBY-4449?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12875011#action_12875011
]
Knut Anders Hatlen commented on DERBY-4449:
-------------------------------------------
Here's the failing code:
// Get ColumnDescriptor by name or by position?
ColumnDescriptor cd;
if (tcl == null)
{
cd = ttd.getColumnDescriptor(index + 1);
}
else
{
ResultColumn trc = (ResultColumn)
tcl.elementAt(index);
cd =
ttd.getColumnDescriptor(trc.getName());
}
// Too many RCs if no ColumnDescriptor
if (cd == null)
{
throw
StandardException.newException(SQLState.LANG_TOO_MANY_RESULT_COLUMNS,
ttd.getQualifiedName());
}
The call to tcl.elementAt(index) is the one that raises the AIOOBE. Note that
the code expects that there may be too many columns, and then
getColumnDescriptor() should return null. But in the case where we have a
target column list, we fail before we get to the point where
getColumnDescriptor() is called.
I think it would be sufficient to check that the index is within range before
calling elementAt() and set cd to null if it's not.
> ArrayIndexOutOfBoundsException when inserting DEFAULT into unspecified column
> -----------------------------------------------------------------------------
>
> Key: DERBY-4449
> URL: https://issues.apache.org/jira/browse/DERBY-4449
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.5.3.0, 10.6.1.0
> Reporter: Knut Anders Hatlen
> Assignee: Knut Anders Hatlen
>
> When inserting rows into a table, with just a subset of the table's columns
> in the target column list, an ArrayIndexOutOfBoundsException is raised if the
> table constructor contains the same number of columns as the target table,
> and the extra columns are specified as DEFAULT:
> ij> create table t (a int, b int);
> 0 rows inserted/updated/deleted
> ij> insert into t(a) values (1,default);
> ERROR XJ001: Java exception: '1 >= 1:
> java.lang.ArrayIndexOutOfBoundsException'.
> The insert statement should have failed with this error:
> ERROR 42802: The number of values assigned is not the same as the number of
> specified or implied columns.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.