• unknown's avatar
    Fixed bug #18767. · 9225a51c
    unknown authored
    The bug caused wrong result sets for union constructs of the form
    (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2.
    For such queries order lists were concatenated and limit clause was
    completely neglected. 
    
    
    mysql-test/r/order_by.result:
      Added a test case for bug #18767.
    mysql-test/t/order_by.test:
      Added a test case for bug #18767.
    sql/sql_lex.h:
      Fixed bug #18767.
      Placed the code the created a fake SELECT_LEX into a separate function.
    sql/sql_parse.cc:
      Fixed bug #18767.
      Placed the code the created a fake SELECT_LEX into a separate function.
    sql/sql_select.cc:
      Fixed bug #18767.
      Changed the condition on which a SELECT is treated as part of a UNION.
      The SELECT in 
      (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
      now is handled in the same way as the first SELECT in a UNION
      sequence.
    sql/sql_union.cc:
      Fixed bug #18767.
      Changed the condition at which a SELECT is treated as part of a UNION.
      The SELECT in 
      (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
      now is handled in the same way as the first SELECT in a UNION
      sequence.
    sql/sql_yacc.yy:
      Fixed bug #18767.
      Changed the condition at which a SELECT is treated as part of a UNION.
      The SELECT in 
      (SELECT ... ORDER BY order_list1 [LIMIT n]) ORDER BY order_list2 
      now is handled in the same way as the first SELECT in a UNION
      sequence. In the same way is handled the SELECT in
      (SELECT ... LIMIT n) ORDER BY order list.
      Yet if there is neither ORDER BY nor LIMIT in the single-select
      union construct
      (SELECT ...) ORDER BY order_list
      then it is still handled as simple select with an order clause.
    9225a51c
sql_union.cc 17.5 KB