1. 14 Sep, 2005 1 commit
    • unknown's avatar
      Fix for bug #12704 "Server crashes during trigger execution". · d5303b8a
      unknown authored
      This bug occurs when some trigger for table used by DML statement is created
      or changed while statement was waiting in lock_tables(). In this situation
      prelocking set which we have calculated becames invalid which can easily lead
      to errors and even in some cases to crashes.
      
      With proposed patch we no longer silently reopen tables in lock_tables(),
      instead caller of lock_tables() becomes responsible for reopening tables and
      recalculation of prelocking set.
      
      
      mysql-test/t/trigger.test:
        Added tests for bug #12704 "Server crashes during trigger execution".
        Unfortunately these tests rely on the order in which tables are locked
        by statement so they are non-determenistic and therefore should be disabled.
      sql/lock.cc:
        mysql_lock_tables():
          Now instead of always reopening altered or dropped tables by itself
          mysql_lock_tables() can notify upper level and rely on caller doing this.
      sql/mysql_priv.h:
        Now mysql_lock_tables() can either reopen deleted or altered tables by itself
        or notify caller about such situation through 'need_reopen' argument and rely
        on it in this.
        Also lock_tables() has new 'need_reopen' out parameter through which it
        notifies caller that some tables were altered or dropped so he needs to reopen
        them (and rebuild prelocking set some triggers may change or simply appear).
      sql/sp.cc:
        sp_add_used_routine():
          To be able to restore LEX::sroutines_list to its state right after parsing
          we now adjust  LEX::sroutines_list_own_last/sroutines_list_own_elements when
          we add directly used routine.
        sp_remove_not_own_routines():
          Added procedure for restoring LEX::sroutines/sroutines_list to their state
          right after parsing (by throwing out non-directly used routines).
        sp_cache_routines_and_add_tables_for_view()/sp_update_stmt_used_routines():
          We should use LEX::sroutines_list instead of LEX::sroutines as source of
          routines used by view, since LEX::sroutines is not availiable for view
          on second attempt to open it (see comment in open_tables() about it).
      sql/sp.h:
        sp_remove_not_own_routines():
          Added procedure for restoring LEX::sroutines/sroutines_list to their state
          right after parsing (by throwing out non-directly used routines).
      sql/sp_head.cc:
        Removed assert which is no longer always true.
      sql/sql_base.cc:
        reopen_table():
          When we re-open table and do shallow copy of TABLE object we should adjust
          pointers to it in associated Table_triggers_list object. Removed nil
          operation.
        open_tables():
          Now this function is able to rebuild prelocking set for statement if it is
          needed. It also correctly handles FLUSH TABLES which may occur during its
          execution.
        lock_tables():
          Instead of allowing mysql_lock_tables() to silently reopen altered or dropped
          tables let us notify caller and rely on that it will do reopen itself.
          This solves the problem when trigger suddenly appears or changed during
          mysq_lock_tables().
        close_tables_for_reopen():
          Added routine for properly preparing for reopening of tables and recalculation
          of set of prelocked tables.
      sql/sql_handler.cc:
        Here we let mysql_lock_tables() to reopen dropped or altered tables by itself.
      sql/sql_insert.cc:
        Here we let mysql_lock_tables() to reopen dropped or altered tables by itself.
      sql/sql_lex.cc:
        LEX:
          Added 'sroutines_list_own_last' and 'sroutines_list_own_elements' members
          which are used for keeping state in which 'sroutines_list' was right after
          statement parsing (and for restoring of this list to this state).
      sql/sql_lex.h:
        LEX:
          Added 'sroutines_list_own_last' and 'sroutines_list_own_elements' members
          which are used for keeping state in which 'sroutines_list' was right after
          statement parsing (and for restoring of this list to this state).
          Added chop_off_not_own_tables() method to simplify throwing away list
          of implicitly used (prelocked) tables.
      sql/sql_prepare.cc:
        Now instead of silently reopening altered or dropped tables in
        lock_tables() we notify caller and rely on that the caller will
        reopen tables.
      sql/sql_table.cc:
        Here we let mysql_lock_tables() to reopen dropped or altered tables by itself.
      sql/sql_trigger.cc:
        Added Table_triggers_list::set_table() method to adjust Table_triggers_list
        to new pointer to TABLE instance.
      sql/sql_trigger.h:
        Added Table_triggers_list::set_table() method to adjust Table_triggers_list
        to new pointer to TABLE instance.
      sql/sql_update.cc:
        Now instead of silently reopening altered or dropped tables in
        lock_tables() we notify caller and rely on that the caller will
        reopen tables.
      d5303b8a
  2. 03 Sep, 2005 4 commits
    • unknown's avatar
      univ.i, page0page.ic: · 8b2b0e24
      unknown authored
        Add a sanity check to page_rec_is_comp; a new univ.i macro UNIV_RELEASE_NOT_YET_STABLE controls such sanity checks that we will remove after the release is stable enough
      
      
      innobase/include/page0page.ic:
        Add a sanity check to page_rec_is_comp; a new univ.i macro UNIV_RELEASE_NOT_YET_STABLE controls such sanity checks that we will remove after the release is stable enough
      innobase/include/univ.i:
        Add a sanity check to page_rec_is_comp; a new univ.i macro UNIV_RELEASE_NOT_YET_STABLE controls such sanity checks that we will remove after the release is stable enough
      8b2b0e24
    • unknown's avatar
      row0sel.c: · 80ea9db8
      unknown authored
        Fix a wrong debug assert in the previous patch
      
      
      innobase/row/row0sel.c:
        Fix a wrong debug assert in the previous patch
      80ea9db8
    • unknown's avatar
      row0sel.c: · cf4a47c0
      unknown authored
        Add more comments to row_search_for_mysql() and remove the ugly double use of the variable rec in that function
      
      
      innobase/row/row0sel.c:
        Add more comments to row_search_for_mysql() and remove the ugly double use of the variable rec in that function
      cf4a47c0
    • unknown's avatar
      Merge heikki@bk-internal.mysql.com:/home/bk/mysql-5.0 · 67a74369
      unknown authored
      into  hundin.mysql.fi:/home/heikki/mysql-5.0
      
      
      67a74369
  3. 02 Sep, 2005 29 commits
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.0 · 17994730
      unknown authored
      into  mysql.com:/home/kostja/mysql/mysql-5.0-dsql3
      
      
      sql/mysql_priv.h:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/share/errmsg.txt:
        manual merge
      17994730
    • unknown's avatar
      Implement WL#2661 "Prepared Statements: Dynamic SQL in Stored Procedures". · c910050a
      unknown authored
      The idea of the patch is to separate statement processing logic,
      such as parsing, validation of the parsed tree, execution and cleanup, 
      from global query processing logic, such as logging, resetting
      priorities of a thread, resetting stored procedure cache, resetting
      thread count of errors and warnings.
      This makes PREPARE and EXECUTE behave similarly to the rest of SQL
      statements and allows their use in stored procedures.
      This patch contains a change in behaviour:
      until recently for each SQL prepared statement command, 2 queries
      were written to the general log, e.g.
      [Query]   prepare stmt from @stmt_text;
      [Prepare] select * from t1 <-- contents of @stmt_text
      The chagne was necessary to prevent [Prepare] commands from being written
      to the general log when executing a stored procedure with Dynamic SQL.
      We should consider whether the old behavior is preferrable and probably
      restore it.
      This patch refixes Bug#7115, Bug#10975 (partially), Bug#10605 (various bugs
      in Dynamic SQL reported before it was disabled).
      
      
      mysql-test/r/not_embedded_server.result:
        Since we don't want to log Dynamic SQL in stored procedures,
        now the general log gets only one log entry per SQL statement.
      mysql-test/r/sp-error.result:
        - remove obsolete tests
        - a better error message for the case when a stored procedure that
        returns a result set is called from a function
      mysql-test/r/trigger.result:
        - a better error message for the case when a stored procedure that
        returns a result set is called from a trigger
      mysql-test/t/sp-error.test:
        - a better error message for the case when a stored procedure that
          returns a result set is called from a function.
        - move the comment to its place (end of file).
      mysql-test/t/trigger.test:
        - a better error message for the case when a stored procedure that
        returns a result set is called from a trigger
      sql/item_func.cc:
        - we need to pass sql_command explicitly to get_var_with_binlog, because
        when creating a query for SQL prepared statement thd->lex->sql_command
        points at SQLCOM_EXECUTE, which is not listed in the list of update
        queries.
      sql/log_event.h:
        - remove an extra copy of the previous sentence
      sql/mysql_priv.h:
        - fix declarations of sql_prepare.cc API
      sql/share/errmsg.txt:
        - a new error message, when one attempts to execute a prepared statement
        which is currently being executed (this can happen only in Dynamic SQL
        at the moment).
      sql/sp_head.cc:
        - extend sp_multi_results_command to return different flags for a
        command (and rename it)
        - add support for SQLCOM_PREPARE,SQLCOM_EXECUTE, SQLCOM_DEALLOCATE
          to sp_get_flags_for_command
        - replace multiple boolean sp_head members with uint m_flags
        - a fix for a crash when user variables are used in a stored procedure
          and binlog is on. A temporary fix for Bug#12637 "SP crashes the server 
         if it has update query with user var & binlog is enabled", which actually
         stands for stored functions: now instead of a crash we break
         replication if a user variable is used in a stored function which 
         is executed in prelocked mode.
      sql/sp_head.h:
        - replace multiple boolean flags of sp_head with uint m_flags;
        - add flag CONTAINS_DYNAMIC_SQL
        - use this flag to error if a stored procedure with Dynamic SQL is
          called from a function or trigger.
      sql/sql_class.cc:
        - Statement_map::insert should not delete a statement if it exists,
          now it's done externally to be able to handle the case when the
          statement being deleted is in use.
        - remove extra code (free_list is already reset in free_items)
      sql/sql_lex.cc:
        - add lex->stmt_prepare_mode; we can't rely on thd->command any more,
          because we don't reset it any more (Dynamic SQL requirement is that
          PS are as little intrusive as possible).
      sql/sql_lex.h:
        - declare bool LEX::stmt_prepare_mode
      sql/sql_parse.cc:
        - move prepared statement code to sql_prepare.cc
        - change declarations (refactored code)
        - better error message when one attempts to use Dynamic SQL or a 
          stored procedure that returns a result set in a function or trigger.
      sql/sql_prepare.cc:
        - major refactoring to ensure PREPARE/EXECUTE commands do not reset global THD
          state and allow their use in stored procedures.
        - add Prepared_statement::flags and use it to ensure no recursive execution
          of a prepared statement is possible
        - better comments
      sql/sql_yacc.yy:
        - enable PREPARE/EXECUTE/DEALLOCATE in stored procedures
        - produce an error message on attempt to use PREPARE/EXECUTE/DEALLOCATE
          in a stored function or trigger
      mysql-test/r/sp-dynamic.result:
        - sp-dynamic.test results
      mysql-test/t/sp-dynamic.test:
        - a new test for PREPARE/EXECUTE/DEALLOCATE in stored procedures.
      c910050a
    • unknown's avatar
      row0sel.c: · 387c2589
      unknown authored
        Fix bug #12947 : a consistent read could return inconsistent results; this bug was introduced in 5.0.5
      
      
      innobase/row/row0sel.c:
        Fix bug #12947 : a consistent read could return inconsistent results; this bug was introduced in 5.0.5
      387c2589
    • unknown's avatar
      Merge mysql.com:/home/jimw/my/mysql-4.1-clean · 79ae20bc
      unknown authored
      into  mysql.com:/home/jimw/my/mysql-5.0-clean
      
      
      mysql-test/t/variables.test:
        Auto merged
      sql/set_var.cc:
        Auto merged
      mysql-test/r/variables.result:
        Resolve conflict
      scripts/mysqld_multi.sh:
        Resolve conflict
      79ae20bc
    • unknown's avatar
      Merge mysql.com:/home/jimw/my/mysql-4.1-11280 · cbb1da77
      unknown authored
      into  mysql.com:/home/jimw/my/mysql-4.1-clean
      
      
      cbb1da77
    • unknown's avatar
      Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0 · 196862df
      unknown authored
      into  sanja.is.com.ua:/home/bell/mysql/bk/work-bug3-5.0
      
      
      sql/item.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/sql_view.cc:
        Auto merged
      sql/table.cc:
        Auto merged
      196862df
    • unknown's avatar
      Rename: · dc922213
      unknown authored
      - current_arena to stmt_arena: the thread may have more than one
      'current' arenas: one for runtime data, and one for the parsed 
      tree of a statement. Only one of them is active at any moment.
      - set_item_arena -> set_query_arena, because Item_arena was renamed to 
      Query_arena a while ago
      - set_n_backup_item_arena -> set_n_backup_active_arena;
      the active arena is the arena thd->mem_root and thd->free_list
      are currently pointing at.
      - restore_backup_item_arena -> restore_active_arena (with the same
      rationale)
      - change_arena_if_needed -> activate_stmt_arena_if_needed; this
      method sets thd->stmt_arena active if it's not done yet.
      
      
      sql/item.cc:
        Rename.
      sql/item_cmpfunc.cc:
        Rename.
      sql/item_func.cc:
        Rename.
      sql/item_subselect.cc:
        Rename.
      sql/item_subselect.h:
        Remove an unused forward declaration.
      sql/item_sum.h:
        Remove an unused forward declaration.
      sql/mysql_priv.h:
        Remove an unused forward declaration.
      sql/sp.cc:
        Rename.
      sql/sp_head.cc:
        Rename.
      sql/sql_base.cc:
        Rename.
      sql/sql_class.cc:
        Rename.
      sql/sql_class.h:
        Rename.
      sql/sql_lex.cc:
        Rename.
      sql/sql_parse.cc:
        Rename.
      sql/sql_prepare.cc:
        Rename.
      sql/sql_select.cc:
        Rename.
      sql/sql_show.cc:
        Rename.
      sql/sql_union.cc:
        Rename.
      sql/sql_view.cc:
        Rename.
      sql/table.cc:
        Rename.
      dc922213
    • unknown's avatar
      Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0 · 29a37a30
      unknown authored
      into  sanja.is.com.ua:/home/bell/mysql/bk/work-bug3-5.0
      
      
      sql/sql_parse.cc:
        Auto merged
      29a37a30
    • unknown's avatar
      Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0 · aeb7fe83
      unknown authored
      into  eel.(none):/home/jonas/src/mysql-5.0-push
      
      
      aeb7fe83
    • unknown's avatar
      Merge joreland@bk-internal.mysql.com:/home/bk/mysql-5.0 · 81f89241
      unknown authored
      into  eel.(none):/home/jonas/src/mysql-5.0-push
      
      
      81f89241
    • unknown's avatar
      Removed redundant case in Makefile.am · 8f0530d0
      unknown authored
      
      
      Makefile.am:
        Removed redundant case
      8f0530d0
    • unknown's avatar
      Merge eel.(none):/home/jonas/src/mysql-5.0 · 6f85ba17
      unknown authored
      into  eel.(none):/home/jonas/src/mysql-5.0-push
      
      
      6f85ba17
    • unknown's avatar
      Merge eel.(none):/home/jonas/src/mysql-4.1 · 8c1b55ef
      unknown authored
      into  eel.(none):/home/jonas/src/mysql-5.0
      
      
      ndb/include/kernel/signaldata/SignalData.hpp:
        Auto merged
      ndb/src/common/debugger/signaldata/SignalDataPrint.cpp:
        Auto merged
      ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
        Auto merged
      ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
        Auto merged
      ndb/src/common/debugger/EventLogger.cpp:
        merge
      8c1b55ef
    • unknown's avatar
      Merge mysql.com:/users/lthalmann/bkroot/mysql-5.0 · 3b08dec4
      unknown authored
      into  mysql.com:/users/lthalmann/bk/mysql-5.0
      
      
      3b08dec4
    • unknown's avatar
      ndb - fix printout related to bug#10987 · f9d29cfe
      unknown authored
      
      ndb/src/common/debugger/EventLogger.cpp:
        Fix extended printout of LCP_FRAGMENT_COMPLETED
      f9d29cfe
    • unknown's avatar
      ndb - bug#12608 · 21ce9ede
      unknown authored
        Always abort if node failure occured between startTransaction and commit
        (can later be improved by wl#2610)
      
      
      ndb/src/kernel/blocks/dbtc/DbtcMain.cpp:
        Always abort if node failure occured between startTransaction and commit
      21ce9ede
    • unknown's avatar
      ndb - bug #10987 · 7056f0b3
      unknown authored
        make sure not to cut log to early 
        (specificly not use LCP with maxGciStarted that has not yet completed)
      
      
      ndb/include/kernel/signaldata/SignalData.hpp:
        Add signal data printer for START_FRAG_REQ
      ndb/include/kernel/signaldata/StartFragReq.hpp:
        Add signal data printer for START_FRAG_REQ
      ndb/src/common/debugger/signaldata/SignalDataPrint.cpp:
        Add signal data printer for START_FRAG_REQ
      ndb/src/common/debugger/signaldata/StartRec.cpp:
        Add signal data printer for START_FRAG_REQ
      ndb/src/kernel/blocks/dbdih/DbdihMain.cpp:
        Add maxGciStarted/Completed to event report
        bug: dont use LCP for calcKeepGci in maxGciSTarted is not completed
      7056f0b3
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-4.1 · d026dd0e
      unknown authored
      into  neptunus.(none):/home/msvensson/mysql/mysql-4.1
      
      
      d026dd0e
    • unknown's avatar
      Merge neptunus.(none):/home/msvensson/mysql/mysql-4.1 · 28ed7dd9
      unknown authored
      into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
      
      
      mysql-test/r/mysqltest.result:
        Auto merged
      mysql-test/t/mysqltest.test:
        Auto merged
      28ed7dd9
    • unknown's avatar
      mysqltest.test: Remove output from shells in result file · 7f98b2a0
      unknown authored
      
      mysql-test/r/mysqltest.result:
        Update test results
      mysql-test/t/mysqltest.test:
        Send output from failed command to /dev/null in order to avoid recording the output from different shells
      7f98b2a0
    • unknown's avatar
      Merge mysql.com:/users/lthalmann/bk/mysql-4.1 · a03acb3c
      unknown authored
      into  mysql.com:/users/lthalmann/bk/mysql-5.0
      
      
      mysql-test/t/rpl_replicate_do.test:
        Auto merged
      scripts/Makefile.am:
        Auto merged
      Makefile.am:
        Manual merge
      mysql-test/r/rpl_replicate_do.result:
        Manual merge
      sql/log_event.cc:
        Manual merge
      sql/sql_parse.cc:
        Manual merge
      a03acb3c
    • unknown's avatar
      Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-4.1 · c99b50f1
      unknown authored
      into  mysql.com:/usr/home/bar/mysql-4.1.b12363
      
      
      c99b50f1
    • unknown's avatar
      Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0 · 3e9a575a
      unknown authored
      into  sanja.is.com.ua:/home/bell/mysql/bk/work-bug3-5.0
      
      
      3e9a575a
    • unknown's avatar
      Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-5.0 · 92367e8b
      unknown authored
      into  sanja.is.com.ua:/home/bell/mysql/bk/work-bug3-5.0
      
      
      sql/sql_parse.cc:
        Auto merged
      92367e8b
    • unknown's avatar
      postmerge changes · 7e2024b4
      unknown authored
      
      mysql-test/t/lowercase_view.test:
        error code changed after merege
      mysql-test/t/view.test:
        error code changed after merege
      sql/item.cc:
        inline function used instead of frequently used expression
        removed old TODO
      sql/sql_base.cc:
        layoutfixed
        inline function used instead of frequently used expression
      sql/sql_insert.cc:
        inline function used instead of frequently used expression
      7e2024b4
    • unknown's avatar
      Merge neptunus.(none):/home/msvensson/mysql/mysql-4.1 · b287e9e5
      unknown authored
      into  neptunus.(none):/home/msvensson/mysql/mysql-5.0
      
      
      mysql-test/t/rpl_slave_status.test:
        Merge to 5.0
      b287e9e5
    • unknown's avatar
      Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-4.1 · 3b077226
      unknown authored
      into  mysql.com:/usr/home/bar/mysql-4.1.b12363
      
      
      mysql-test/t/variables.test:
        Auto merged
      sql/set_var.cc:
        Auto merged
      mysql-test/r/variables.result:
        SCCS merged
      3b077226
    • unknown's avatar
      Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0 · 38b8687d
      unknown authored
      into  mysql.com:/usr/home/bar/mysql-5.0
      
      
      38b8687d
    • unknown's avatar
      sp_head.cc: · 59272376
      unknown authored
        Fix crash reported in bug 12849.
        It doesn't fix the whole problem though.
        Let Pem fix it later.
      
      
      sql/sp_head.cc:
        Fix crash reported in bug 12849.
        It doesn't fix the whole problem though.
        Let Pem fix it later.
      59272376
  4. 01 Sep, 2005 6 commits