db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Knut Anders Hatlen (JIRA)" <j...@apache.org>
Subject [jira] Updated: (DERBY-4355) Implement CROSS JOIN
Date Tue, 08 Sep 2009 14:50:57 GMT

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

Knut Anders Hatlen updated DERBY-4355:

    Attachment: cross_v2.diff

Attaching cross_v2.diff with updates to make it apply after DERBY-4369. It also adds a test
cases to JoinTest. I'm assuming that the underlying join machinery is tested by the existing
tests, so the new test cases focus on checking that the syntax is accepted. They do check
that the results are correct, but they don't do all sorts of combinations with different data
types, nullability, indexes and so on.

One problem that I found, was that this query is not accepted (it's commented out in the test
for now):

  select * from t1 a inner join t2 b cross join t2 c on 1=1

This results in an SQLSyntaxErrorException: A join specification is not allowed with the 'CROSS
JOIN' clause.

It works if parentheses are added, like this:

  select * from t1 a inner join (t2 b cross join t2 c) on 1=1

However, I do believe that it should be accepted without parentheses too. The problem is that
the patch adds CROSS JOIN in the parser's qualifiedJoin rule, where an ON clause right after
any kind of join will be consumed. The parser therefore incorrectly believes that the ON clause
is part of the cross join and raises an error. Splitting out a separate rule for cross join
(which is also how it is defined in the SQL standard) will prevent the ON clause from being
seen when parsing the the cross join, and it will be seen as part of the inner join instead.
I will post an updated patch with this issue fixed.

> Implement CROSS JOIN
> --------------------
>                 Key: DERBY-4355
>                 URL: https://issues.apache.org/jira/browse/DERBY-4355
>             Project: Derby
>          Issue Type: Improvement
>          Components: SQL
>         Environment: any
>            Reporter: Bernt M. Johnsen
>            Assignee: Knut Anders Hatlen
>         Attachments: cross.diff, cross_v2.diff
> Implement the CROSS JOIN syntax
> SELECT * from t1 CROSS JOIN t2;
> as an alternative syntax to
> SELECT * FROM t1, t2; 
> This should be pretty straight forward and ease the migration of SQL code to Derby.

This message is automatically generated by JIRA.
You can reply to this email to add a comment to the issue online.

View raw message