[ 
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)

Reply via email to