1. 21 Oct, 2010 1 commit
    • Dmitry Shulga's avatar
      Fixed bug#45445 - cannot execute procedures with thread_stack · 89e43c84
      Dmitry Shulga authored
      set to 128k.
      
      sql/sp.cc:
        Added checking for stack overrun at functions
        db_load_routine/sp_find_routine.
      sql/sp_head.cc:
        sp_head::execute() modified: pass constant value STACK_MIN_SIZE
        instead of 8 * STACK_MIN_SIZE  as second argument value
        in call to check_stack_overrun. Added checking for stack overrun
        at functions sp_lex_keeper::reset_lex_and_exec_core/sp_instr_stmt::execute.
      sql/sql_parse.cc:
        check_stack_overrun modified: allocate buffer for error message
        at heap instead of stack.
        parse_sql modified: added call to check_stack_overrun() before
        parsing of sql statement.
      89e43c84
  2. 20 Oct, 2010 1 commit
  3. 19 Oct, 2010 17 commits
  4. 18 Oct, 2010 7 commits
  5. 16 Oct, 2010 2 commits
    • unknown's avatar
      Manual merge · c20cbe5b
      unknown authored
      c20cbe5b
    • unknown's avatar
      Bug#56118 STOP SLAVE does not wait till trx with CREATE TMP TABLE ends, · 211552cc
      unknown authored
                replication aborts
      
      When recieving a 'SLAVE STOP' command, slave SQL thread will roll back the
      transaction and stop immidiately if there is only transactional table updated,
      even through 'CREATE|DROP TEMPOARY TABLE' statement are in it. But These
      statements can never be rolled back. Because the temporary tables to the user
      session mapping remain until 'RESET SLAVE', Therefore it will abort SQL thread
      with an error that the table already exists or doesn't exist, when it restarts
      and executes the whole transaction again.
      
      After this patch, SQL thread always waits till the transaction ends and then stops,
      if 'CREATE|DROP TEMPOARY TABLE' statement are in it.
      
      mysql-test/extra/rpl_tests/rpl_stop_slave.test:
        Auxiliary file which is used to test this bug.
      mysql-test/suite/rpl/t/rpl_stop_slave.test:
        Test case for this bug.
      sql/slave.cc:
        Checking if OPTION_KEEP_LOG is set. If it is set, SQL thread should wait
        until the transaction ends.
      sql/sql_parse.cc:
        Add a debug point for testing this bug.
      211552cc
  6. 14 Oct, 2010 4 commits
    • Konstantin Osipov's avatar
      A fix and a test case for Bug#56540 "Exception (crash) in · 248625d9
      Konstantin Osipov authored
      sql_show.cc during rqg_info_schema test on Windows".
      
      Ensure we do not access freed memory when filling
      information_schema.views when one of the views
      could not be properly opened.
      
      
      
      mysql-test/r/information_schema.result:
        Update results - a fix for Bug#56540.
      mysql-test/t/information_schema.test:
        Add a test case for Bug#56540
      sql/sql_base.cc:
        Push an error into the Diagnostics area
        when we return an error.
        This directs get_all_tables() to the execution
        branch which doesn't involve 'process_table()'
        when no table/view was opened.
      sql/sql_show.cc:
        Do not try to access underlying table fields
        when opening of a view failed. The underlying
        table is closed in that case, and accessing
        its fields may lead to dereferencing a damaged 
        pointer.
      248625d9
    • Alexander Nozdrin's avatar
      A patch for Bug#48874 (Test "is_triggers" fails because of wrong charset info). · 650e4c25
      Alexander Nozdrin authored
      The thing is that the following attributes are fixed (remembered) when a trigger
      is created:
        - character_set_client
        - character_set_results
        - collation_connection
      
      There are two triggers created in mysql-test/include/mtr_warnings.sql.
      They were created using "current default" character set / collation.
      is_triggers.test shows definition of these triggers including recorded
      character set information.
      
      The problem was that if "current default" changed, the recorded character
      set information was not accurate.
      
      There might be two ways to fix that:
        a) update is_triggers.test so that it does not put character-set information
           into result-file;
        b) update mtr_warnings.sql so that the triggers are created using
           hard-coded character sets.
      
      This patch implements option b).
      650e4c25
    • Jon Olav Hauglid's avatar
      Follow-up for Bug #55930 Assertion `thd->transaction.stmt.is_empty() · 5a57a45c
      Jon Olav Hauglid authored
                               || thd->in_sub_stmt || (thd->state..
      
      Don't rollback statement transactions if we are in a sub-statement.
      This could for example happen for open_ltable() when opening the
      general log during execution of a stored procedure.
      5a57a45c
    • Davi Arnaut's avatar
      Bug#56096: STOP SLAVE hangs if executed in parallel with user sleep · 1d43e72a
      Davi Arnaut authored
      The root of the problem is that to interrupt a slave SQL thread
      wait, the STOP SLAVE implementation uses thd->awake(THD::NOT_KILLED).
      This appears as a spurious wakeup (e.g. from a sleep on a
      condition variable) to the code that the slave SQL thread is
      executing at the time of the STOP. If the code is not written
      to be spurious-wakeup safe, unexpected behavior can occur. For
      the reported case, this problem led to an infinite loop around
      the interruptible_wait() function in item_func.cc (SLEEP()
      function implementation).  The loop was not being properly
      restarted and, consequently, would not come to an end. Since the
      SLEEP function sleeps on a timed event in order to be killable
      and to perform periodic checks until the requested time has
      elapsed, the spurious wake up was causing the requested sleep
      time to be reset every two seconds.
      
      The solution is to calculate the requested absolute time only
      once and to ensure that the thread only sleeps until this
      time is elapsed. In case of a spurious wake up, the sleep is
      restarted using the previously calculated absolute time. This
      restores the behavior present in previous releases. If a slave
      thread is executing a SLEEP function, a STOP SLAVE statement
      will wait until the time requested in the sleep function
      has elapsed.
      
      mysql-test/extra/rpl_tests/rpl_start_stop_slave.test:
        Add test case for Bug#56096.
      mysql-test/suite/rpl/r/rpl_stm_start_stop_slave.result:
        Add test case result for Bug#56096.
      sql/item_func.cc:
        Reorganize interruptible_wait into a class so that the absolute
        time can be preserved across calls to the wait function. This
        allows the sleep to be properly restarted in the presence of
        spurious wake ups, including those generated by a STOP SLAVE.
      1d43e72a
  7. 13 Oct, 2010 8 commits