db-derby-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "C.S. Nirmal J. Fernando (JIRA)" <j...@apache.org>
Subject [jira] Commented: (DERBY-4371) Non-selected columns for SELECT DISTINCT allowed in ORDER BY clause if ordered by expression
Date Thu, 29 Apr 2010 01:00:49 GMT

    [ https://issues.apache.org/jira/browse/DERBY-4371?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12862039#action_12862039
] 

C.S. Nirmal J. Fernando commented on DERBY-4371:
------------------------------------------------

Hi Bryan,

As I understood after going through DERBY-2351, we must allow queries like:

select distinct i from t order by i*2

          should be allow as this functionality may have been using by Derby users, in there
applications. Derby allows this is because i is there in the distinct even though i*2 is not
there.

So, if we follow this rule it implies that:
 select distinct * from t order by i*2
       is also allow.

To check whether a column reference in a distinct is contained in this order by column I have
to perform a check for each operand in both ways (j*2 and 2*j).

I have attached a patch proposal. Your reviews are highly appreciated.

Note: This patch is not tend to handle queries like below:
select distinct i from t order by random()
select distinct i from t order by j*2*3;

Thanks.

> Non-selected columns for SELECT DISTINCT allowed in ORDER BY clause if ordered by expression
> --------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4371
>                 URL: https://issues.apache.org/jira/browse/DERBY-4371
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.5.1.1
>            Reporter: Bernt M. Johnsen
>            Assignee: C.S. Nirmal J. Fernando
>            Priority: Critical
>         Attachments: DERBY-4371-2.diff, DERBY-4371-3.diff, DERBY-4371.diff
>
>
> How to repeat:
> ij> create table t (i integer, j integer);;
> 0 rows inserted/updated/deleted
> ij> insert into t values (1,2),(1,3);
> 2 rows inserted/updated/deleted
> ij> select distinct i from t order by j;
> ERROR 42879: The ORDER BY clause may not contain column 'J', since the query specifies
DISTINCT and that column does not appear in the query result.
> ij> select distinct i from t order by j*2;
> I          
> -----------
> 1          
> 1          
> 2 rows selected

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


Mime
View raw message