[ 
https://issues.apache.org/jira/browse/DERBY-3231?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12550551
 ] 

A B commented on DERBY-3231:
----------------------------

> The problem was missing methods isConstant and isConstantExpression for
> AggregateNodes. The super class implementation would return true causing
> Derby to eliminate the order by. 

Thank you for looking into this, Manish!  Two follow-up questions based on what 
you have found, just for my own understanding:

  1) If possible, can you explain what part of the DERBY-681 changes led to 
this behavior, since the query returned correct results prior to the DERBY-681 
fix?  I'm just curious as to why the missing methods for AggregateNode were not 
a problem previously.

  2) Any idea why removing the "WHERE" clause from the original query causes it 
to return correct results, even without the order_by_bug.diff patch, as stated 
in your December 4th comment?  I admit I haven't done any tracing myself, but 
from your previous comment I can't quite see the connection between the WHERE 
clause and the ORDER BY, since the WHERE clause does not reference the 
aggregate "count(*)".  Apologies if I'm missing something obvious...

Thanks again for your willingness to investigate this further.  Have you had a 
chance to run any of the regression tests with your patch applied?

> Sorting on COUNT with OR and GROUP BY delivers wrong results.
> -------------------------------------------------------------
>
>                 Key: DERBY-3231
>                 URL: https://issues.apache.org/jira/browse/DERBY-3231
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.3.1.4
>         Environment: Eclipse 3.2.2; java 1.5.0_11; 
>            Reporter: Peter Balon
>            Assignee: Manish Khettry
>            Priority: Critical
>         Attachments: order_by_bug.diff.txt
>
>
> The result of the select is not sorted in "order by COUNT(*) DESC" or "order 
> by COUNT(*) ASC" 
> create table yy (a double, b double);
> insert into yy values (2, 4);
> insert into yy values (5, 7);
> insert into yy values (2, 3);
> insert into yy values (2, 3);
> insert into yy values (2, 3);
> insert into yy values (2, 3);
> insert into yy values (9, 7);
> select b, COUNT(*) AS "COUNT_OF", SUM(b) AS "sum b" 
> from yy
> where a = 5 or a = 2
> group by b
> order by COUNT(*) asc
> -- same result as:
> select b, COUNT(*) AS "COUNT_OF", SUM(b) AS "sum b" 
> from yy
> where a = 5 or a = 2
> group by b
> order by COUNT(*) desc

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