1. 06 Mar, 2007 4 commits
    • unknown's avatar
      Manual merge · f6660831
      unknown authored
      f6660831
    • unknown's avatar
      Merge weblab.(none):/home/marcsql/TREE/mysql-5.0-8407_b · 09abc2e2
      unknown authored
      into  weblab.(none):/home/marcsql/TREE/mysql-5.1-8407-merge
      
      
      mysql-test/r/information_schema_db.result:
        Auto merged
      mysql-test/r/view.result:
        Auto merged
      mysql-test/t/sp.test:
        Auto merged
      sql/lock.cc:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/sp_head.cc:
        Auto merged
      sql/sp_head.h:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_update.cc:
        Auto merged
      sql/table.cc:
        Auto merged
      sql/table.h:
        Auto merged
      09abc2e2
    • unknown's avatar
      Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl · 2c366704
      unknown authored
      into  bodhi.local:/opt/local/work/mysql-5.1-runtime-merge
      
      
      mysql-test/t/disabled.def:
        Auto merged
      sql/handler.cc:
        Auto merged
      sql/item_func.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/sp_head.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_parse.cc:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      sql/table.h:
        Auto merged
      mysql-test/r/show_check.result:
        Manual merge.
      mysql-test/t/show_check.test:
        Manual merge.
      2c366704
    • unknown's avatar
      Bug#8407 (Stored functions/triggers ignore exception handler) · b7542618
      unknown authored
      Bug 18914 (Calling certain SPs from triggers fail)
      Bug 20713 (Functions will not not continue for SQLSTATE VALUE '42S02')
      Bug 21825 (Incorrect message error deleting records in a table with a
        trigger for inserting)
      Bug 22580 (DROP TABLE in nested stored procedure causes strange dependency
        error)
      Bug 25345 (Cursors from Functions)
      
      
      This fix resolves a long standing issue originally reported with bug 8407,
      which affect the behavior of Stored Procedures, Stored Functions and Trigger
      in many different ways, causing symptoms reported by all the bugs listed.
      In all cases, the root cause of the problem traces back to 8407 and how the
      server locks tables involved with sub statements.
      
      Prior to this fix, the implementation of stored routines would:
      - compute the transitive closure of all the tables referenced by a top level
      statement
      - open and lock all the tables involved
      - execute the top level statement
      "transitive closure of tables" means collecting:
      - all the tables,
      - all the stored functions,
      - all the views,
      - all the table triggers
      - all the stored procedures
      involved, and recursively inspect these objects definition to find more
      references to more objects, until the list of every object referenced does
      not grow any more.
      This mechanism is known as "pre-locking" tables before execution.
      The motivation for locking all the tables (possibly) used at once is to
      prevent dead locks.
      
      One problem with this approach is that, if the execution path the code
      really takes during runtime does not use a given table, and if the table is
      missing, the server would not execute the statement.
      This in particular has a major impact on triggers, since a missing table
      referenced by an update/delete trigger would prevent an insert trigger to run.
      
      Another problem is that stored routines might define SQL exception handlers
      to deal with missing tables, but the server implementation would never give
      user code a chance to execute this logic, since the routine is never
      executed when a missing table cause the pre-locking code to fail.
      
      With this fix, the internal implementation of the pre-locking code has been
      relaxed of some constraints, so that failure to open a table does not
      necessarily prevent execution of a stored routine.
      
      In particular, the pre-locking mechanism is now behaving as follows:
      
      1) the first step, to compute the transitive closure of all the tables
      possibly referenced by a statement, is unchanged.
      
      2) the next step, which is to open all the tables involved, only attempts
      to open the tables added by the pre-locking code, but silently fails without
      reporting any error or invoking any exception handler is the table is not
      present. This is achieved by trapping internal errors with
      Prelock_error_handler
      
      3) the locking step only locks tables that were successfully opened.
      
      4) when executing sub statements, the list of tables used by each statements
      is evaluated as before. The tables needed by the sub statement are expected
      to be already opened and locked. Statement referencing tables that were not
      opened in step 2) will fail to find the table in the open list, and only at
      this point will execution of the user code fail.
      
      5) when a runtime exception is raised at 4), the instruction continuation
      destination (the next instruction to execute in case of SQL continue
      handlers) is evaluated.
      This is achieved with sp_instr::exec_open_and_lock_tables()
      
      6) if a user exception handler is present in the stored routine, that
      handler is invoked as usual, so that ER_NO_SUCH_TABLE exceptions can be
      trapped by stored routines. If no handler exists, then the runtime execution
      will fail as expected.
      
      With all these changes, a side effect is that view security is impacted, in
      two different ways.
      
      First, a view defined as "select stored_function()", where the stored
      function references a table that may not exist, is considered valid.
      The rationale is that, because the stored function might trap exceptions
      during execution and still return a valid result, there is no way to decide
      when the view is created if a missing table really cause the view to be invalid.
      
      Secondly, testing for existence of tables is now done later during
      execution. View security, which consist of trapping errors and return a
      generic ER_VIEW_INVALID (to prevent disclosing information) was only
      implemented at very specific phases covering *opening* tables, but not
      covering the runtime execution. Because of this existing limitation,
      errors that were previously trapped and converted into ER_VIEW_INVALID are
      not trapped, causing table names to be reported to the user.
      This change is exposing an existing problem, which is independent and will
      be resolved separately.
      
      
      mysql-test/r/information_schema_db.result:
        Revised the pre-locking code implementation, aligned the tests.
      mysql-test/r/sp-error.result:
        Revised the pre-locking code implementation, aligned the tests.
      mysql-test/r/sp.result:
        Revised the pre-locking code implementation, aligned the tests.
      mysql-test/r/trigger.result:
        Revised the pre-locking code implementation, aligned the tests.
      mysql-test/r/view.result:
        Revised the pre-locking code implementation, aligned the tests.
      mysql-test/t/sp-error.test:
        Revised the pre-locking code implementation, aligned the tests.
      mysql-test/t/sp.test:
        Revised the pre-locking code implementation, aligned the tests.
      mysql-test/t/trigger.test:
        Revised the pre-locking code implementation, aligned the tests.
      sql/lock.cc:
        table->placeholder now checks for schema_table
      sql/mysqld.cc:
        my_message_sql(): invoke internal exception handlers
      sql/sp_head.cc:
        exec_open_and_lock_tables(): open and lock tables, or return the
        continuation destination of this instruction
      sql/sp_head.h:
        exec_open_and_lock_tables(): open and lock tables, or return the
        continuation destination of this instruction
      sql/sql_base.cc:
        Prelock_error_handler: delay open table errors until execution
      sql/sql_class.cc:
        THD: add internal error handler, as an exception mechanism.
      sql/sql_class.h:
        THD: add internal error handler, as an exception mechanism.
      sql/sql_update.cc:
        table->placeholder now checks for schema_table
      sql/table.cc:
        st_table_list::hide_view_error(): masked more errors for view security
      sql/table.h:
        table->placeholder now checks for schema_table, and unopened tables
      b7542618
  2. 02 Mar, 2007 6 commits
  3. 01 Mar, 2007 21 commits
    • unknown's avatar
      Fixed compiler warnings · 621c5c0b
      unknown authored
      
      server-tools/instance-manager/angel.cc:
        Compiler warnings
      sql/event_queue.cc:
        Compier warnings
      sql/event_scheduler.cc:
        Compiler warnings
      sql/events.cc:
        Compiler warnings
      621c5c0b
    • unknown's avatar
      Manual merge of 5.1 into 5.1-runtime · f9571951
      unknown authored
      
      mysql-test/r/subselect.result:
        Manual merge
      server-tools/instance-manager/mysqlmanager.cc:
        Manual merge
      sql/event_scheduler.cc:
        Manual merge
      sql/sql_parse.cc:
        Manual merge
      f9571951
    • unknown's avatar
      Merge rsomla@bk-internal.mysql.com:/home/bk/mysql-5.1-new-rpl · 15d976d9
      unknown authored
      into  quant.(none):/ext/mysql/bkroot/mysql-5.1-new-rpl
      
      
      sql/slave.cc:
        Auto merged
      15d976d9
    • unknown's avatar
      Post-merge fix · 99796636
      unknown authored
      99796636
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bk/mysql-5.0-rpl · 38164dad
      unknown authored
      into  mysql.com:/nfsdisk1/lars/bk/mysql-5.1-new-rpl
      
      
      mysql-test/r/mysqlbinlog.result:
        Auto merged
      mysql-test/r/rpl_replicate_do.result:
        Auto merged
      mysql-test/t/mysqlbinlog.test:
        Auto merged
      mysql-test/t/rpl_replicate_do.test:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/sql_repl.cc:
        Auto merged
      sql/sql_trigger.cc:
        Auto merged
      sql/sql_trigger.h:
        Auto merged
      sql/slave.cc:
        Manual merge
      sql/sql_insert.cc:
        Manual merge
      sql/sql_parse.cc:
        Manual merge
      sql/sql_yacc.yy:
        Manual merge
      38164dad
    • unknown's avatar
      After merge fix · 0de6bbe4
      unknown authored
      
      mysql-test/t/rpl_loaddata_simple.test:
        Rename: mysql-test/t/rpl_loaddata2.test -> mysql-test/t/rpl_loaddata_simple.test
      mysql-test/r/rpl_loaddata_simple.result:
        Rename: mysql-test/r/rpl_loaddata2.result -> mysql-test/r/rpl_loaddata_simple.result
      0de6bbe4
    • unknown's avatar
      after merge fix · a6732bb4
      unknown authored
      a6732bb4
    • unknown's avatar
      Merge mysql.com:/home/bar/mysql-5.0.merge · 409c96b8
      unknown authored
      into  mysql.com:/home/bar/mysql-5.1-rpl
      
      
      mysql-test/r/mysqlbinlog.result:
        Auto merged
      mysql-test/t/mysqlbinlog.test:
        Auto merged
      sql/log_event.cc:
        Auto merged
      sql/log_event.h:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_load.cc:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      409c96b8
    • unknown's avatar
      Merge mysql.com:/home/bar/mysql-5.0.rafal · 3ef33bcb
      unknown authored
      into  mysql.com:/home/bar/mysql-5.1-rpl
      
      
      mysql-test/valgrind.supp:
        Null merge of Rafal's change - fix problem was previously fixed in 5.1
      3ef33bcb
    • unknown's avatar
      Fixing manual merge error. · b8e10402
      unknown authored
      
      sql/slave.cc:
        Removing piece of code which get there when manual merging from 5.0 tree.
      b8e10402
    • unknown's avatar
      Merge quant.(none):/ext/mysql/bk/mysql-5.0-rpl-warnings · 9f44726a
      unknown authored
      into  quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl
      
      9f44726a
    • unknown's avatar
      Removing two more compilation warnings. · 08cae43b
      unknown authored
      
      sql/slave.cc:
        Guard declaration of variable to avoid "unused variable" warning.
      sql/sql_repl.cc:
        Guard declaration of variable to avoid "unused variable" warning.
      08cae43b
    • unknown's avatar
      Merge quant.(none):/ext/mysql/bk/mysql-5.0-bug25306 · 94a52c57
      unknown authored
      into  quant.(none):/ext/mysql/bkroot/mysql-5.1-new-rpl
      
      
      sql/sql_repl.cc:
        Auto merged
      sql/slave.cc:
        Manual merge of patch for BUG#25306 from 5.0-rpl tree
      94a52c57
    • unknown's avatar
      Fix for wrong replace command. · 044fcfab
      unknown authored
      044fcfab
    • unknown's avatar
      Merge quant.(none):/ext/mysql/bk/mysql-5.0-bug25463 · 96627d48
      unknown authored
      into  quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl
      
      96627d48
    • unknown's avatar
      Merge quant.(none):/ext/mysql/bk/mysql-5.0-rpl-warnings · b77fd4c1
      unknown authored
      into  quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl
      
      b77fd4c1
    • unknown's avatar
      Renaming recenly added test case, because of name conflict · 16012fe8
      unknown authored
      when merging into 5.1.
      
      
      mysql-test/t/rpl_loaddata_charset.test:
        Rename: mysql-test/t/rpl_loaddata2.test -> mysql-test/t/rpl_loaddata_charset.test
      mysql-test/r/rpl_loaddata_charset.result:
        Rename: mysql-test/r/rpl_loaddata2.result -> mysql-test/r/rpl_loaddata_charset.result
      16012fe8
    • unknown's avatar
      Merge quant.(none):/ext/mysql/bkroot/mysql-5.0-rpl · 1a2d2d5f
      unknown authored
      into  quant.(none):/ext/mysql/bk/mysql-5.0-rpl-warnings
      
      
      sql/mysql_priv.h:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      1a2d2d5f
    • unknown's avatar
      Fixes of compilation warnings and errors. · 223e78d1
      unknown authored
      
      sql/mysql_priv.h:
        Removing compiler warning "NULL used in arithmetic"
      sql/mysqld.cc:
        First argument to WARN_DEPRECATED is supposed to be a pointer (to THD structure)
      sql/sql_insert.cc:
        Removing compiler warning "unused variable". Apparently query is not used when compiling libmysqld.
      sql/sql_yacc.yy:
        Removing compiler error "Macro already defined"
      223e78d1
    • unknown's avatar
      Additional fix for bug N 15126 · c9264a1b
      unknown authored
      Replacing local directory.
      
      
      mysql-test/r/mysqlbinlog.result:
        Additional fix for bug N 15126
      mysql-test/t/mysqlbinlog.test:
        Additional fix for bug N 15126
      c9264a1b
    • unknown's avatar
      Merge weblab.(none):/home/marcsql/TREE/mysql-5.1-base · 96b4e8ee
      unknown authored
      into  weblab.(none):/home/marcsql/TREE/mysql-5.1-rt-merge
      
      
      include/my_pthread.h:
        Auto merged
      mysql-test/mysql-test-run.pl:
        Auto merged
      mysql-test/r/partition_innodb.result:
        Auto merged
      mysql-test/t/disabled.def:
        Auto merged
      server-tools/instance-manager/IMService.cpp:
        Auto merged
      sql/ha_ndbcluster.cc:
        Auto merged
      sql/ha_ndbcluster_binlog.cc:
        Auto merged
      sql/ha_partition.cc:
        Auto merged
      sql/handler.cc:
        Auto merged
      sql/item_cmpfunc.cc:
        Auto merged
      sql/item_cmpfunc.h:
        Auto merged
      sql/item_subselect.cc:
        Auto merged
      sql/item_subselect.h:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/mysqld.cc:
        Auto merged
      sql/set_var.cc:
        Auto merged
      sql/sql_base.cc:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_lex.cc:
        Auto merged
      sql/sql_lex.h:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      sql/table.cc:
        Auto merged
      96b4e8ee
  4. 28 Feb, 2007 9 commits
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.1-new-rpl · b6df8e36
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.1-merge
      
      
      sql/field.cc:
        Auto merged
      sql/log.cc:
        Auto merged
      sql/mysql_priv.h:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      b6df8e36
    • unknown's avatar
      Merge mysql.com:/nfsdisk1/lars/bkroot/mysql-5.0-rpl · 2c615cc4
      unknown authored
      into  mysql.com:/nfsdisk1/lars/MERGE/mysql-5.0-merge
      
      
      sql/mysql_priv.h:
        Auto merged
      sql/sql_insert.cc:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      2c615cc4
    • unknown's avatar
      Remove dead code: flush_version was never increased in the server, · 368f1859
      unknown authored
      therefore the logic associated with it never worked.
      
      
      sql/ha_partition.cc:
        Remove dead code. Update comments.
      sql/mysql_priv.h:
        Remove dead code (flush_version).
      sql/mysqld.cc:
        Remove dead code (flush_version).
      sql/sql_base.cc:
        Remove dead code.
      sql/table.cc:
        Remove dead code.
      sql/table.h:
        Remove dead code.
      368f1859
    • unknown's avatar
      Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · bbff12fa
      unknown authored
      into  mysql.com:/home/bar/mysql-5.0.b24478
      
      bbff12fa
    • unknown's avatar
      Additional test changes for · f0fea788
      unknown authored
      Bug N 15126 character_set_database is not replicated (LOAD DATA INFILE need it)
      Positions of some binlog events were changed because of
      additional logging of @@collation_database.
      
      f0fea788
    • unknown's avatar
      After merge fix · f36a82c6
      unknown authored
      f36a82c6
    • unknown's avatar
      Merge abarkov@bk-internal.mysql.com:/home/bk/mysql-5.0-rpl · a0dfc7ac
      unknown authored
      into  mysql.com:/home/bar/mysql-5.0.b15126
      
      
      sql/log_event.cc:
        Auto merged
      sql/log_event.h:
        Auto merged
      sql/sql_class.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      sql/sql_load.cc:
        Auto merged
      sql/sql_yacc.yy:
        Auto merged
      mysql-test/r/mysqlbinlog.result:
        After merge fix
      mysql-test/t/mysqlbinlog.test:
        After merge fix
      a0dfc7ac
    • unknown's avatar
      Bug#15126 character_set_database is not replicated (LOAD DATA INFILE need it) · b8931c53
      unknown authored
      This patch fixes problem that LOAD DATA could use different
      character sets when loading files on master and on slave sides:
      - Adding replication of thd->variables.collation_database
      - Adding optional character set clause into LOAD DATA
      
      Note, the second way, with explicit CHARACTER SET clause
      should be the recommended way to load data using an alternative
      character set.
      The old way, using "SET @@character_set_database=xxx" should be
      gradually depricated.
      
      
      mysql-test/r/mysqlbinlog.result:
        Adding test case
      mysql-test/t/mysqlbinlog.test:
        Adding test case
      sql/log_event.cc:
        Adding logging of thd->variables.collation_database
      sql/log_event.h:
        Adding declarations
      sql/sql_class.cc:
        Exchange character set is null by default
      sql/sql_class.h:
        Adding character set into sql_exchange
      sql/sql_load.cc:
        - Using exchange character set (if it was specified in LOAD DATA syntax)
        - Using thd->variables.collation_database by default
      sql/sql_yacc.yy:
        Adding optional character set clause into LOAD DATA syntax
      mysql-test/r/rpl_loaddata2.result:
        New BitKeeper file ``mysql-test/r/rpl_loaddata2.result''
      mysql-test/std_data/loaddata6.dat:
        New BitKeeper file ``mysql-test/std_data/loaddata6.dat''
      mysql-test/t/rpl_loaddata2.test:
        New BitKeeper file ``mysql-test/t/rpl_loaddata2.test''
      b8931c53
    • unknown's avatar