1. 30 Nov, 2005 1 commit
    • unknown's avatar
      Fix for BUG#14920 Ordering aggregated result sets corrupts resultset. · e3f57552
      unknown authored
      The cause of the bug was the use of end_write_group instead of end_write
      in the case when ORDER BY required a temporary table, which didn't take
      into account the fact that loose index scan already computes the result
      of MIN/MAX aggregate functions (and performs grouping).
      
      The solution is to call end_write instead of end_write_group and to add
      the MIN/MAX functions to the list of regular functions so that their
      values are inserted into the temporary table.
      
      
      mysql-test/r/group_min_max.result:
        Test for BUG#14920
      mysql-test/t/group_min_max.test:
        Test for BUG#14920
      sql/sql_class.cc:
        Added new member to TMP_TABLE_PARAM.
      sql/sql_class.h:
        Added new member to TMP_TABLE_PARAM.
      sql/sql_select.cc:
        Enable result rows generated by loose index scan being written into
        a temporary table. The change is necessary because loose index
        scan already computes the result of GROUP BY and the MIN/MAX aggregate
        functions. This is realized by three changes:
        - create_tmp_table allocates space for aggregate functions in the
          list of regular functions,
        - use end_write instead of end_write group,
        - copy the pointers to the MIN/MAX aggregate functions to the list
          of regular functions TMP_TABLE_PARAM::items_to_copy.
      sql/sql_select.h:
        New parameter to create_tmp_table.
      e3f57552
  2. 21 Nov, 2005 6 commits
  3. 19 Nov, 2005 4 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · 32e6e6aa
      unknown authored
      into  mysql.com:/home/dlenev/src/mysql-5.0-bg13825
      
      
      32e6e6aa
    • unknown's avatar
      A fix for Bug#14845 "mysql_stmt_fetch returns MYSQL_NO_DATA when · 4ca413e9
      unknown authored
      COUNT(*) is 0" (the test case has been pushed already)
      
      
      sql/sql_cursor.cc:
        Fix a return of an unitialized variable: return_zero_rows
        checks the return value of send_fields and in case it's 1
        doesn't call send_data. This caused creation of an empty result 
        set for the case when there is a cursor against a select with a 
        group function and no matching rows.
      4ca413e9
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · e2de3a8f
      unknown authored
      into  mysql.com:/home/dlenev/src/mysql-5.0-bg13825
      
      
      sql/ha_innodb.cc:
        Auto merged
      sql/handler.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      e2de3a8f
    • unknown's avatar
      Fix for bug #13825 "Triggers: crash if release savepoint" and for general · 11d4d7e6
      unknown authored
      handling of savepoints in stored routines.
      
      Fixed ha_rollback_to_savepoint()/ha_savepoint()/ha_release_savepoint()
      functions to properly handle savepoints inside of stored functions and
      triggers.
      Also now when we invoke stored function or trigger we create new savepoint
      level. We destroy it at the end of function/trigger execution and return back
      to old savepoint level.
      
      
      mysql-test/r/sp_trans.result:
        Added test for bug #13825 "Triggers: crash if release savepoint" and for
        general handling of savepoints in stored routines.
      mysql-test/t/sp_trans.test:
        Added test for bug #13825 "Triggers: crash if release savepoint" and for
        general handling of savepoints in stored routines.
      sql/ha_innodb.cc:
        innobase_savepoint():
          Replaced check which always failed due to similar check in caller
          with assertion.
      sql/handler.cc:
        ha_rollback_to_savepoint()/ha_savepoint()/ha_release_savepoint():
          Changed functions to properly support handling of savepoints
          inside of stored functions and triggers.
      sql/sql_class.cc:
        THD::reset_sub_statement_state()/restore_sub_statement_state():
          When we invoke stored function or trigger we should create new savepoint
          level. We should destroy it at the end of function/trigger execution and
          return back to old savepoint level. To support this behavior we should
          save and reset list of current savepoints on entering function and restore
          old list when we leave it.
      sql/sql_class.h:
        Sub_statement_state:
          When we invoke stored function or trigger we should create new savepoint
          level. We should destroy it at the end of function/trigger execution and
          return back to old savepoint level. To support this behavior added "savepoint"
          member which is used to save/restore list of current savepoints on
          entering/leaving function.
      sql/sql_parse.cc:
        mysql_execute_command():
          Changed processing of SQLCOM_SAVEPOINT so now it is not ignored when
          we are in autocommit mode and savepoint is set inside of stored
          function or trigger.
      11d4d7e6
  4. 18 Nov, 2005 13 commits
  5. 17 Nov, 2005 16 commits