You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Dag H. Wanvik (JIRA)" <ji...@apache.org> on 2014/07/30 22:14:39 UTC

[jira] [Updated] (DERBY-6666) Deferred constraint validation fails with "dead statement" when query plan logging is enabled

     [ https://issues.apache.org/jira/browse/DERBY-6666?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dag H. Wanvik updated DERBY-6666:
---------------------------------

    Attachment: derby-6666.diff

Uploading a first patch that removes this issue by adding push and push of the statement context to the lcc before we execute the internal query to check for check constraint violation. We had neglected to do this, which caused a problem for the logging since the statement context should always be properly initialized during execution.

I'll add a regression test in the next version of the patch.

> Deferred constraint validation fails with "dead statement" when query plan logging is enabled
> ---------------------------------------------------------------------------------------------
>
>                 Key: DERBY-6666
>                 URL: https://issues.apache.org/jira/browse/DERBY-6666
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.11.0.0
>            Reporter: Knut Anders Hatlen
>         Attachments: derby-6666.diff
>
>
> Run the following script with the {{derby.language.logQueryPlan}} system property set to {{true}}:
> {code:sql}
> connect 'jdbc:derby:memory:db;create=true';
> create table t1(x int primary key);
> create table t2(y int, constraint c check(y > 0) initially deferred, constraint fk foreign key(y) references t1 initially deferred);
> autocommit off;
> insert into t1 values -1, 1;
> insert into t2 values 1;
> update t2 set y = -1;
> delete from t1 where x = -1;
> commit;
> {code}
> The commit statement will fail with the following error message: "ERROR 40XC0: Dead statement. This may be caused by catching a transaction severity error inside this statement."
> If you run the script without setting the {{derby.language.logQueryPlan}} system property, it will fail (correctly) with this error message: "ERROR 23514: The transaction was aborted because of a deferred constraint violation: Check constraint identified by 'C' defined on "APP"."T2" as '(y > 0)'."



--
This message was sent by Atlassian JIRA
(v6.2#6252)