1. 27 Jul, 2007 3 commits
    • unknown's avatar
      Merge adventure.(none):/home/thek/Development/cpp/bug29929/my50-bug29929 · c1fd3178
      unknown authored
      into  adventure.(none):/home/thek/Development/cpp/mysql-5.0-runtime
      
      c1fd3178
    • unknown's avatar
      Bug #29929 LOCK TABLES does not pre-lock tables used in triggers of the locked tables · 34695c01
      unknown authored
      When a table was explicitly locked with LOCK TABLES no associated
      tables from any related trigger on the subject table were locked.
      As a result of this the user could experience unexpected locking
      behavior and statement failures similar to "failed: 1100: Table'xx'
      was not locked with LOCK TABLES".
      
      This patch fixes this problem by making sure triggers are
      pre-loaded on any statement if the subject table was explicitly
      locked with LOCK TABLES.
      
      
      mysql-test/r/sp-prelocking.result:
        Added test case
      mysql-test/t/sp-prelocking.test:
        Added test case
      sql/sql_lex.cc:
        - Moved some conditional logic out of the table iteration.
        - Added event map values for LOCK TABLE command.
      sql/table.cc:
        - Refactored set_trg_event_tpye into the two simpler functions set_trg_event_map
          and set_trg_event_map as methods for manipulating the table event map.
          The original function was only called from st_lex::set_trg_event_type_for_tables
          so it was possible to move the event map creation logic to this function as
          a loop optimization.
      sql/table.h:
        - Refactored set_trg_event_tpye into the two simpler functions set_trg_event_map
          and set_trg_event_map as methods for manipulating the table event map.
          The original function was only called from st_lex::set_trg_event_type_for_tables
          so it was possible to move the event map creation logic to this function as
          a loop optimization.
      34695c01
    • unknown's avatar
      A fix and a test case for Bug#24918 drop table and lock / inconsistent · 0c371edd
      unknown authored
      between perm and temp tables. Review fixes.
      
      The original bug report complains that if we locked a temporary table
      with LOCK TABLES statement, we would not leave LOCK TABLES mode
      when this temporary table is dropped.
      
      Additionally, the bug was escalated when it was discovered than
      when a temporary transactional table that was previously
      locked with LOCK TABLES statement was dropped, futher actions with
      this table, such as UNLOCK TABLES, would lead to a crash.
      
      The problem originates from incomplete support of transactional temporary
      tables. When we added calls to handler::store_lock()/handler::external_lock()
      to operations that work with such tables, we only covered the normal
      server code flow and did not cover LOCK TABLES mode. 
      In LOCK TABLES mode, ::external_lock(LOCK) would sometimes be called without
      matching ::external_lock(UNLOCK), e.g. when a transactional temporary table
      was dropped. Additionally, this table would be left in the list of LOCKed 
      TABLES.
      
      The patch aims to address this inadequacy. Now, whenever an instance
      of 'handler' is destroyed, we assert that it was priorly
      external_lock(UNLOCK)-ed. All the places that violate this assert
      were fixed.
      
      This patch introduces no changes in behavior -- the discrepancy in
      behavior will be fixed when we start calling ::store_lock()/::external_lock()
      for all tables, regardless whether they are transactional or not, 
      temporary or not.
      
      
      mysql-test/r/innodb_mysql.result:
        Update test results (Bug#24918)
      mysql-test/t/innodb_mysql.test:
        Add a test case for Bug#24918
      sql/handler.h:
        Make handler::external_lock() a protected method. Backport from 5.1 its
        public wrapper handler::ha_external_lock().
        Assert that the handler is not closed if it is still locked.
      sql/lock.cc:
        In mysql_lock_tables only call lock_external() for the list of tables that
        we called store_lock() for. 
        E.g. get_lock_data() does not add non-transactional temporary tables to the
        lock list, so lock_external() should not be called for them.
        
        Use handler::ha_external_lock() instead of handler::external_lock().
        
        Add comments for mysql_lock_remove(), parameterize one strange
        side effect that it has. At least in one place where mysql_lock_remove
        is used, this side effect is not desired (DROP TABLE). The parameter
        will be dropped in 5.1, along with the side effect.
      sql/mysql_priv.h:
        Update declaration of mysql_lock_remove().
      sql/opt_range.cc:
        Deploy handler::ha_external_lock() instead of handler::external_lock()
      sql/sql_base.cc:
        When closing a temporary table, remove the table from the list of LOCKed 
        TABLES of this thread, in case it's there. 
        It's there if it is a transactional temporary table.
        Use a new declaration of mysql_lock_remove().
      sql/sql_class.h:
        Extend the comment for THD::temporary_tables.
      sql/sql_table.cc:
        Deploy handler::ha_external_lock() instead of handler::external_lock()
      0c371edd
  2. 25 Jul, 2007 3 commits
    • unknown's avatar
      Patch inspired by BUG#10491: Server returns data as charset · a086d6ec
      unknown authored
      binary SHOW CREATE TABLE or SELECT FROM I_S.
      
      The problem is that mysqldump generates incorrect dump for a table
      with non-ASCII column name if the mysqldump's character set is
      ASCII.
      
      The fix is to:
        1. Switch character_set_client for the mysqldump's connection
        to binary before issuing SHOW CREATE TABLE statement in order
        to avoid conversion.
        
        2. Dump switch character_set_client statements to UTF8 and back
        for CREATE TABLE statement.
      
      
      client/mysqldump.c:
        1. Switch character_set_client for the mysqldump's connection
        to binary before issuing SHOW CREATE TABLE statement in order
        to avoid conversion.
        
        2. Dump switch character_set_client statements to UTF8 and back
        for CREATE TABLE statement.
      mysql-test/r/mysqldump-max.result:
        Update result file.
      mysql-test/r/mysqldump.result:
        Update result file.
      mysql-test/r/openssl_1.result:
        Update result file.
      mysql-test/r/show_check.result:
        Update result file.
      mysql-test/t/show_check.test:
        Test case:
          - create a table with non-ASCII column name;
          - dump the database by mysqldump using ASCII character set;
          - drop the database;
          - load the dump;
          - check that the table has been re-created properly.
      a086d6ec
    • unknown's avatar
      Allow mysql.proc to have extra (unknown) fields. · 24dbbf83
      unknown authored
      This allows 5.0 to work with 5.1 databases.
      
      24dbbf83
    • unknown's avatar
      Merge malff@bk-internal.mysql.com:/home/bk/mysql-5.0-runtime · b465eeee
      unknown authored
      into  weblab.(none):/home/marcsql/TREE/mysql-5.0-29959
      
      b465eeee
  3. 24 Jul, 2007 1 commit
  4. 23 Jul, 2007 1 commit
  5. 21 Jul, 2007 1 commit
  6. 20 Jul, 2007 5 commits
  7. 19 Jul, 2007 16 commits
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0 · 900f8d8a
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      
      
      sql/set_var.cc:
        Auto merged
      sql/sql_class.h:
        Auto merged
      900f8d8a
    • unknown's avatar
      Merge pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0.44 · 25491503
      unknown authored
      into  pippilotta.erinye.com:/shared/home/df/mysql/build/mysql-5.0.46
      
      
      configure.in:
        Auto merged
      libmysql/libmysql.c:
        Auto merged
      sql/field.cc:
        Auto merged
      sql/field.h:
        Auto merged
      25491503
    • unknown's avatar
      BUG#20815 Errno 12 on Windows after 197 connections · 2163d202
      unknown authored
      
      CMakeLists.txt:
        BUG#20815 Set stack size. This value is really supposed to be the linker's default. I'm not quite sure why we have to specify it manually too.
      2163d202
    • unknown's avatar
      Bug#29898: Item_date_typecast::val_int doesn't reset the null_value flag. · 7122b729
      unknown authored
      The Item_date_typecast::val_int function doesn't reset null_value flag.
      This makes all values that follows the first null value to be treated as nulls
      and led to a wrong result.
      
      Now the Item_date_typecast::val_int function correctly sets the null_value flag
      for both null and non-null values.
      
      
      mysql-test/t/cast.test:
        Added a test case for the bug#29898:  Item_date_typecast::val_int doesn't reset
        the null_value flag.
      mysql-test/r/cast.result:
        Added a test case for the bug#29898:  Item_date_typecast::val_int doesn't reset
        the null_value flag.
      sql/item_timefunc.cc:
        Bug#29898: Item_date_typecast::val_int doesn't reset the null_value flag.
        Now the Item_date_typecast::val_int function correctly sets the null_value flag
        for both null and non-null values.
      7122b729
    • unknown's avatar
      Merge trift2.:/MySQL/M50/mysql-5.0 · 4358b4b9
      unknown authored
      into  trift2.:/MySQL/M50/push-5.0
      
      4358b4b9
    • unknown's avatar
      Merge epotemkin@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 6a34c8fc
      unknown authored
      into  moonbone.local:/mnt/gentoo64/work/29850-bug-5.0-opt-mysql
      
      6a34c8fc
    • unknown's avatar
      Bug#29850: Wrong charset of GROUP_CONCAT result when the select employs · 134138bb
      unknown authored
      a temporary table.
      
      The result string of the Item_func_group_concat wasn't initialized in the 
      copying constructor of the Item_func_group_concat class. This led to a
      wrong charset of GROUP_CONCAT result when the select employs a temporary
      table.
      
      The copying constructor of the Item_func_group_concat class now correctly
      initializes the charset of the result string.
      
      
      mysql-test/t/func_gconcat.test:
        Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
        when the select employs a temporary table.
      mysql-test/r/func_gconcat.result:
        Added a test case for the bug#29850: Wrong charset of the GROUP_CONCAT result
        when the select employs a temporary table.
      sql/item_sum.cc:
        Bug#29850: Wrong charset of GROUP_CONCAT result when the select employs
        a temporary table.
        The copying constructor of the Item_func_group_concat class now correctly
        initializes the charset of the result string.
      134138bb
    • unknown's avatar
      Merge abotchkov@bk-internal.mysql.com:/home/bk/mysql-5.0-opt · 8425b356
      unknown authored
      into  mysql.com:/home/hf/work/29687/my50-29687
      
      8425b356
    • unknown's avatar
      Merge bk@192.168.21.1:mysql-5.0-opt · 8a63be0d
      unknown authored
      into  mysql.com:/home/hf/work/29687/my50-29687
      
      8a63be0d
    • unknown's avatar
      Merge bk-internal.mysql.com:/data0/bk/mysql-4.1-maint · db2ccdea
      unknown authored
      into  bk-internal.mysql.com:/data0/bk/tsmith-tmp/mysql-5.0-maint
      
      db2ccdea
    • unknown's avatar
      Rename all references to 'Delayed_insert' instances from 'tmp' to 'di' · cd7e1d71
      unknown authored
      for consistency.
      
      cd7e1d71
    • unknown's avatar
      A fix for Bug#29431 killing an insert delayed thread causes crash · e3b3f4ee
      unknown authored
      No test case, since the bug requires a stress case with 30 INSERT DELAYED
      threads and 1 killer thread to repeat. The patch is verified
      manually.
      Review fixes.
      
      The server that is running DELAYED inserts would deadlock itself
      or crash under high load if some of the delayed threads were KILLed
      in the meanwhile.
      
      The fix is to change internal lock acquisition order of delayed inserts
      subsystem and to ensure that
      Delayed_insert::table_list::db does not point to volatile memory in some 
      cases.
      For details, please see a comment for sql_insert.cc.
      
      
      sql/sql_insert.cc:
        A fix for Bug#29431 killing an insert delayed thread causes crash
        
        1) The deadlock was caused by different lock acquisition order
        between delayed_get_table and handle_delayed_insert.
        
        delayed_get_table would:
        - acquire LOCK_delayed_create
        - create a new Delayed_insert instance
        - acquire instance mutex (di->mutex)
        - "lock the instance in memory" by 
        increasing di->locked_in_memory variable
        - start the delayed thread
        - release di->mutex
        - let the delayed thread open the delayed table
        - discover that the delayed thread was killed
        - try to unlock() the delayed insert instance in memory
        - in Delayed_insert::unlock() do
         * lock LOCK_delayed_insert
         * decrease locks_in_memory and discover it's 0
         * attempt to lock di->mutex to broadcast di->cond condition <-- deadlock
         here
        
        Meanwhile, the delayed thread would
         * lock di->mutex
         * open the table
         * get killed
         * not notice that and attempt to lock LOCK_delayed_insert
        to register itself in the delayed insert list <-- deadlock here.
        
        Simply put, delayed_get_table used to lock LOCK_delayed_insert and then 
        di->mutex, and handle_delayed_insert would lock di->mutex and then 
        LOCK_delayed_insert.
        
        Fixed by moving registration in the list of delayed insert threads from 
        handle_delayed_insert to delayed_get_table - so that now
        handle_delayed_insert doesn't need to acquire LOCK_delayed_insert mutex.
        
        
        2) di->table_list.db was copied by-pointer from table_list.db of the first
        producer -- the one who initiated creation of the delayed insert thread.
        This producer might be long gone when the member is needed
        (handle_delayed_insert:open_ltable),
        e.g. by having been killed with KILL CONNECTION statement.
        Fixed by using a pointer to the consumer's deep copy of THD::db.
        
        3) In find_handler, we shouldn't assume that Delayed_insert object
        already (or still) has a table opened all the time it is
        present in the delayed insert list. E.g. it's not the case
        when Delayed_insert decided to terminate, closed the table, but haven't
        yet unregistered from the list (see the end of handle_delayed_insert).
      e3b3f4ee
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0 · cec66c3d
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      
      
      sql/ha_myisam.cc:
        Auto merged
      sql/sql_select.cc:
        Auto merged
      cec66c3d
    • unknown's avatar
      Avoid the name conflict between the system-provided "md5.h" and the MySQL one · decc3eec
      unknown authored
      by renaming "include/md5.h" to "include/my_md5.h".
      
      Fixes bug#14151.
      
      
      include/my_md5.h:
        Rename: include/md5.h -> include/my_md5.h
      decc3eec
    • unknown's avatar
      field.cc, field.h: · 52ad8a10
      unknown authored
        i5 compatibility
      
      
      sql/field.h:
        i5 compatibility
      sql/field.cc:
        i5 compatibility
      52ad8a10
    • unknown's avatar
      Merge gleb.loc:/home/uchum/work/bk/5.0-opt-28524 · efcdfc8f
      unknown authored
      into  gleb.loc:/home/uchum/work/bk/5.0-opt
      
      efcdfc8f
  8. 18 Jul, 2007 7 commits
    • unknown's avatar
      Fixed bug #28524. · 00bb9cfa
      unknown authored
      For each view the mysqldump utility creates a temporary table
      with the same name and the same columns as the view 
      in order to satisfy views that depend on this view.
      After the creation of all tables, mysqldump drops all
      temporary tables and creates actual views.
      However, --skip-add-drop-table and --compact flags disable
      DROP TABLE statements for those temporary tables. Thus, it was
      impossible to create the views because of existence of the
      temporary tables with the same names.
      
      
      client/mysqldump.c:
        Fixed bug #28524.
        The mysqldump utility has been modified to unconditionally drop
        temporary tables before the creation of views.
      mysql-test/t/mysqldump.test:
        Updated test case for bug #28524 and updated result of previous tests.
      mysql-test/r/mysqldump.result:
        Updated test case for bug #28524 and updated result of previous tests.
      00bb9cfa
    • unknown's avatar
      CMakeLists.txt, configure.js: · ace15fc5
      unknown authored
        Allow to set mysqld exe suffix
      
      
      sql/CMakeLists.txt:
        Allow to set mysqld exe suffix
      win/configure.js:
        Allow to set mysqld exe suffix
      ace15fc5
    • unknown's avatar
      Add a test case for Bug#22427 create table if not exists + stored · 0a66baf2
      unknown authored
      function results in inconsistent behavior.
      
      The bug itself was fixed by the patch for bug 20662.
      
      
      mysql-test/r/sp-prelocking.result:
        Update results (Bug#22427)
      mysql-test/t/sp-prelocking.test:
        Add a test case for Bug#22427 create table if not exists + stored 
        function results in inconsistent behavior
      0a66baf2
    • unknown's avatar
      Bug #29325: create table overwrites .MYD file of other · 640868be
      unknown authored
      table (datadir)
      Set errno when retunring an error in my_create_with_symlink.
      
      
      mysys/my_symlink2.c:
        Bug #29325: set errno when retunring 
        an error in my_create_with_symlink
      640868be
    • unknown's avatar
      A fix and a test case for Bug#26104 Bug on foreign key class constructor. · 74c8a55f
      unknown authored
      Fix the typo in the constructor. Cover a semantic check that previously
      never worked with a test.
      
      
      mysql-test/r/create.result:
        Update results (Bug#26104)
      mysql-test/r/innodb.result:
        Update results.
      mysql-test/t/create.test:
        Add a test case for Bug#26104 Bug on foreign key class constructor
      mysql-test/t/innodb.test:
        Return a new error number (MySQL error instead of internal InnoDB error).
      sql/sql_class.h:
        A fix for Bug#26104 Bug on foreign key class constructor -- fix
        the typo in the constructor
      74c8a55f
    • unknown's avatar
      Add a test case for Bug#27248 Triggers: error if insert affects temporary · 6ce19257
      unknown authored
      table.
      The bug itself is yet another manifestation of Bug 26141.
      
      
      mysql-test/r/trigger.result:
        Update results.
      mysql-test/t/trigger.test:
        Add a test case for Bug#27248 Triggers: error if insert affects temporary
        table
      6ce19257
    • unknown's avatar
      Mark deadcode for gcov · 67b1e409
      unknown authored
      67b1e409
  9. 17 Jul, 2007 3 commits