[
https://issues.apache.org/jira/browse/DERBY-3343?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12561990#action_12561990
]
Knut Anders Hatlen commented on DERBY-3343:
-------------------------------------------
The comment in ResultColumn.getOrderableVariantType() says "note that there is
no expression associated with an autoincrement column in an insert statement."
As noted by Dyre, this statement is false, as values(default) will cause a
non-null expression also when the column is auto-generated. I therefore think
d3343.diff is a correct fix (it should also update the incorrect comment). The
tests (derbyall + suites.All) ran cleanly.
As to the predicates that are false, I think they could be explained. The
default node is replaced with a placeholder node for the auto-generated value
during the bind phase, so it is correct that isDefaultColumn() returns false.
isAutoincrement() seems to be used for columns that reference an auto-increment
column in a table in a select statement, whereas values(default) doesn't
actually reference a column in a table. isGenerated() seems to be used for a
different kind of generated columns than isAutoincrementGenerated() (aggregated
columns and internal helpers like row location columns).
> Subsequent calls to PreparedStatement cause
> SQLIntegrityConstraintViolationException on column that is "Generated always"
> --------------------------------------------------------------------------------------------------------------------------
>
> Key: DERBY-3343
> URL: https://issues.apache.org/jira/browse/DERBY-3343
> Project: Derby
> Issue Type: Bug
> Components: SQL
> Affects Versions: 10.3.2.1
> Environment: gentoo linux amd64
> Reporter: William Becker
> Assignee: Dyre Tjeldvoll
> Attachments: d3343.diff, defaults.sql
>
>
> The following series of statements fails:
> j> connect 'jdbc:derby:test;create=true';
> ij> create table t (id int primary key generated always as identity);
> 0 rows inserted/updated/deleted
> ij> prepare p as 'insert into t(id) values (default)';
> ij> execute p;
> 1 row inserted/updated/deleted
> ij> execute p;
> ERROR 23505: The statement was aborted because it would have caused a
> duplicate key value in a unique or primary key constraint or unique index
> identified by 'SQL080123140906700' defined on 'T'.
> There is a more detailed discussion about it here:
> http://www.nabble.com/Generate-Always-and-SQLIntegrityConstraintViolationException-td15012038.html#a15018054
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.