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

Reply via email to