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 "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2014/04/16 12:28:14 UTC

[jira] [Updated] (DERBY-6543) Syntax error when reference to transition variable has whitespace around it

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

Knut Anders Hatlen updated DERBY-6543:
--------------------------------------

    Attachment: d6543-1a.diff

The attached patch, d6543-1a.diff, fixes the problem and adds a regression test case for it.

The patch changes how we calculate the next offset (the start variable). Instead of basing the calculation on the offset of the token before the period sign and adding the length of the period token and the column name token, it now uses the offset of the column name token directly. This simplifies the calculation, and removes the source of confusion (the length of the period token) from equation.

TriggerTest passed with the patch. I'm running the rest of the regression tests now.

> Syntax error when reference to transition variable has whitespace around it
> ---------------------------------------------------------------------------
>
>                 Key: DERBY-6543
>                 URL: https://issues.apache.org/jira/browse/DERBY-6543
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.10.2.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: d6543-1a.diff
>
>
> If a trigger action references a transition variable and has whitespace around the period sign that separates the transition variable name from the column name, it fails with a syntax error.
> For example:
> {noformat}
> ij> create table t1(x int);
> 0 rows inserted/updated/deleted
> ij> create table t2(x int);
> 0 rows inserted/updated/deleted
> ij> --fails
> create trigger tr1 after insert on t1 referencing new as new
> for each row insert into t1 select x from t2 where x = new . x;
> ERROR 42X01: Syntax error: Encountered "x" at line 1, column 150.
> Issue the 'help' command for general information on IJ command syntax.
> Any unrecognized commands are treated as potential SQL commands and executed directly.
> Consult your DBMS server reference documentation for details of the SQL syntax supported by your server.
> ij> --succeeds
> create trigger tr2 after insert on t1 referencing new as new
> for each row insert into t1 select x from t2 where x = new.x;
> 0 rows inserted/updated/deleted
> {noformat}
> The only difference between the failing trigger definition and the successful one, is that the former says "new . x" and the latter "new.x".
> Both should succeed.



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