>>>>> "Arjen" == Arjen G Lentz <[EMAIL PROTECTED]> writes:

Arjen> Hi,
Arjen> ----- Original Message -----
Arjen> From: "AJ" <[EMAIL PROTECTED]>


>> > > Ver 11.15 Distrib 3.23.46, for pc-linux-gnu (i686)
>> > > The problem that has cropped up I have is that in all GROUP BY column
>> > > DESC
>> > > statements, the DESC is now not being recognized, and the query is being
>> > > returned in ascending order.  If I use ORDER BY... DESC that works fine.
>>>
>> >I'm seeing the same bug on 3.23.45 (and maybe others but I can't remember
>> >all the versions I've played with recently).  It does the same thing where
>> >it accepts the syntax but does not respect it (and returns rows in the
>> >default ASC ordering).
>> 
>> The problem is apparently solved if you kluge with e.g.
>> select field, count(field) from table group by field order by field
>> desc but it IS a kluge.

This is now fixed in the MySQL 3.23.47 and MySQL 4.0.1 source trees.

Here is a patch for this:

===== sql/sql_lex.h 1.34 vs edited =====
*** /tmp/sql_lex.h-1.34-29757   Sun Oct  7 14:18:08 2001
--- edited/sql/sql_lex.h        Mon Dec 10 17:27:02 2001
***************
*** 140,146 ****
    enum lex_states next_state;
    enum enum_duplicates duplicates;
    enum enum_tx_isolation tx_isolation;
!   uint in_sum_expr,grant,grant_tot_col,which_columns, sort_default;
    thr_lock_type lock_option;
    bool        create_refs,drop_primary,drop_if_exists,local_file;
    bool  in_comment,ignore_space,verbose;
--- 140,146 ----
    enum lex_states next_state;
    enum enum_duplicates duplicates;
    enum enum_tx_isolation tx_isolation;
!   uint in_sum_expr,grant,grant_tot_col,which_columns;
    thr_lock_type lock_option;
    bool        create_refs,drop_primary,drop_if_exists,local_file;
    bool  in_comment,ignore_space,verbose;
===== sql/sql_yacc.yy 1.86 vs edited =====
*** /tmp/sql_yacc.yy-1.86-29757 Tue Aug 21 20:06:00 2001
--- edited/sql/sql_yacc.yy      Mon Dec 10 17:26:37 2001
***************
*** 470,476 ****
        ULONGLONG_NUM
  
  %type <item>
!       literal text_literal insert_ident group_ident order_ident
        simple_ident select_item2 expr opt_expr opt_else sum_expr in_sum_expr
        table_wild opt_pad no_in_expr expr_expr simple_expr no_and_expr
        using_list
--- 470,476 ----
        ULONGLONG_NUM
  
  %type <item>
!       literal text_literal insert_ident order_ident
        simple_ident select_item2 expr opt_expr opt_else sum_expr in_sum_expr
        table_wild opt_pad no_in_expr expr_expr simple_expr no_and_expr
        using_list
***************
*** 1869,1878 ****
        | GROUP BY group_list
  
  group_list:
!       group_list ',' group_ident
!         { if (add_group_to_list($3,(bool) 1)) YYABORT; }
!       | group_ident
!         { if (add_group_to_list($1,(bool) 1)) YYABORT; }
  
  /*
  ** Order by statement in select
--- 1869,1878 ----
        | GROUP BY group_list
  
  group_list:
!       group_list ',' order_ident order_dir
!         { if (add_group_to_list($3,(bool) $4)) YYABORT; }
!       | order_ident order_dir
!         { if (add_group_to_list($1,(bool) $2)) YYABORT; }
  
  /*
  ** Order by statement in select
***************
*** 1883,1889 ****
        | order_clause
  
  order_clause:
!       ORDER_SYM BY { Lex->sort_default=1; } order_list
  
  order_list:
        order_list ',' order_ident order_dir
--- 1883,1889 ----
        | order_clause
  
  order_clause:
!       ORDER_SYM BY order_list
  
  order_list:
        order_list ',' order_ident order_dir
***************
*** 1893,1900 ****
  
  order_dir:
        /* empty */ { $$ =  1; }
!       | ASC  { $$ = Lex->sort_default=1; }
!       | DESC { $$ = Lex->sort_default=0; }
  
  
  limit_clause:
--- 1893,1900 ----
  
  order_dir:
        /* empty */ { $$ =  1; }
!       | ASC  { $$ =1; }
!       | DESC { $$ =0; }
  
  
  limit_clause:
***************
*** 2451,2459 ****
        ident '.' '*' { $$ = new Item_field(NullS,$1.str,"*"); }
        | ident '.' ident '.' '*'
        { $$ = new Item_field((current_thd->client_capabilities & CLIENT_NO_SCHEMA ? 
NullS : $1.str),$3.str,"*"); }
- 
- group_ident:
-       order_ident order_dir
  
  order_ident:
        expr { $$=$1; }
--- 2451,2456 ----


Regards,
Monty

---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to