1. 27 Aug, 2009 1 commit
    • Alfranio Correia's avatar
      BUG#46861 Auto-closing of temporary tables broken by replicate-rewrite-db · d930d8ee
      Alfranio Correia authored
      When a connection is dropped any remaining temporary table is also automatically
      dropped and the SQL statement of this operation is written to the binary log in
      order to drop such tables on the slave and keep the slave in sync. Specifically,
      the current code base creates the following type of statement:
      DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `db`.`table`;
      
      Unfortunately, appending the database to the table name in this manner circumvents
      the replicate-rewrite-db option (and any options that check the current database).
      To solve the issue, we started writing the statement to the binary as follows:
      use `db`; DROP /*!40005 TEMPORARY */ TABLE IF EXISTS `table`;
      d930d8ee
  2. 26 Jan, 2009 1 commit
    • Joerg Bruehe's avatar
      Backport of a fix done by Kent for bug#42278 · d6c8d306
      Joerg Bruehe authored
      into the 5.0.72sp1 branch.
      
      Original changeset (in the main 5.0 branch):
      > committer: Kent Boortz <kent@kent-amd64>
      > branch nick: mysql-5.0-build-bug42278
      > timestamp: Fri 2009-01-23 02:59:03 +0100
      
      
      scripts/make_binary_distribution.sh:
        From 5.0.48 the NDB client libraries has been missing in the cluster
        packages, this is now corrected (Bug#42278)
      d6c8d306
  3. 13 Jan, 2009 1 commit
    • Joerg Bruehe's avatar
      Tool fix, needed for "compile-dist" to succeed on Solaris: · 94361be1
      Joerg Bruehe authored
      The default "awk" there cannot handle some of the scripts
      which are used by BDB for configuration.
      
      The fix:
      1) Introduce a variable "AWK" in some of the BDB shell scripts,
      2) search "gawk" and give it precedence over "awk"
         when assigning a value to the "AWK" variable,
         fail if neither is found,
      3) use that variable when calling an "awk" program with one
         of the critical scripts.
      
      The perfect solution would be to use the "awk" program found
      by "configure", but we cannot follow that approach because
      BDB's configuration is handled as a special case before the
      overall "configure" is run. Because of this,
      1) the "configure" result isn't yet available,
      2) "configure" will not handle these BDB files.
      Searching "gawk" is a (not-so-nice) way out.
      
      Note that all this need not be perfectly portable,
      it is needed only when we create a source distribution tarball
      from a develkopment tree.
      
      bdb/dist/s_all:
        Search "gawk" if available, give it precedence over "awk",
        fail if neither is found.
      bdb/dist/s_include:
        Ensure we use a modern AWK, similar to GNU awk,
        the default awk on Solaris cannot handle BDB's script.
      bdb/dist/s_recover:
        Ensure we use a modern AWK, similar to GNU awk,
        the default awk on Solaris cannot handle BDB's script.
      bdb/dist/s_rpc:
        Ensure we use a modern AWK, similar to GNU awk,
        the default awk on Solaris cannot handle BDB's script.
      94361be1
  4. 12 Jan, 2009 6 commits
    • Joerg Bruehe's avatar
      Set the version: 5.0.72sp1 · 131d689e
      Joerg Bruehe authored
      131d689e
    • Joerg Bruehe's avatar
      Backport of a 5.0.74 fix into 5.0.72sp1: · 858584a3
      Joerg Bruehe authored
      Bug #39920: MySQL cannot deal with Leap Second expression in string literal.
      
      Updated MySQL time handling code to react correctly on UTC leap second additions.
      MySQL functions that return the OS current time, like e.g. CURDATE(), NOW() etc
      will return :59:59 instead of :59:60 or 59:61.
      As a result the reader will receive :59:59 for 2 or 3 consecutive seconds
      during the leap second.
      
      Original changesets:
      > revision-id: kgeorge@mysql.com-20081201141835-rg8nnnadujj5wl9f
      > parent: gshchepa@mysql.com-20081114172557-xh0jlzwal8ze3cy6
      > committer: Georgi Kodinov <kgeorge@mysql.com>
      > branch nick: B39920-5.0-bugteam
      > timestamp: Mon 2008-12-01 16:18:35 +0200
      
      > revision-id: kgeorge@mysql.com-20081201154106-c310zzy5or043rqa
      > parent: kgeorge@mysql.com-20081201145656-6kjq91oga5nxbbob
      > committer: Georgi Kodinov <kgeorge@mysql.com>
      > branch nick: B39920-merge-5.0-bugteam
      > timestamp: Mon 2008-12-01 17:41:06 +0200
      858584a3
    • Joerg Bruehe's avatar
      Backport of a 5.0.74 fix into 5.0.72sp1: · 68416c4c
      Joerg Bruehe authored
      Bug#34760 Character set autodetection appears to fail
      the problem is the same as reported in bug#20835,
      so the fix is backport of bug#20835 patch.
      
      Original changeset:
      > revision-id: sergey.glukhov@sun.com-20081121123959-58ffhp2nitg7f40h
      > parent: ramil@mysql.com-20081120100836-gct60cm67b1rui29
      > committer: Sergey Glukhov <Sergey.Glukhov@sun.com>
      > branch nick: mysql-5.0-bugteam
      > timestamp: Fri 2008-11-21 16:39:59 +0400
      
      68416c4c
    • Joerg Bruehe's avatar
      Backport of a 5.0.74 fix into 5.0.72sp1: · cd617234
      Joerg Bruehe authored
      BUG#38842 - Fix for 25951 seems incorrect
      
      Original changeset:
      > revision-id: svoj@mysql.com-20081111091051-54pr96nf1z2s30gx
      > parent: vvaintroub@mysql.com-20081110201804-bi98gcs9avsf58ff
      > committer: Sergey Vojtovich <svoj@mysql.com>
      > branch nick: mysql-5.0-bugteam-bug38842
      > timestamp: Tue 2008-11-11 13:10:51 +0400
      cd617234
    • Joerg Bruehe's avatar
      Backport of a 5.0.74 fix into 5.0.72sp1: · 75b00971
      Joerg Bruehe authored
      Bug #40021: Renaming view fails, archived .frm for view is
                  missing after downgrade
      
      Original changeset:
      > revision-id: gshchepa@mysql.com-20081114172557-xh0jlzwal8ze3cy6
      > parent: ramil@mysql.com-20081114074229-vj4fvfrpmz8jfub9
      > committer: Gleb Shchepa <gshchepa@mysql.com>
      > branch nick: mysql-5.0-bugteam
      > timestamp: Fri 2008-11-14 21:25:57 +0400
      
      75b00971
    • Joerg Bruehe's avatar
      Backport of a 5.0.74 fix into 5.0.72sp1: · 3c998489
      Joerg Bruehe authored
      Remove bashisms from BUILD/compile-dist and configure.in,
      so Bootstrap works on Solaris box;
      - force GNU make in compile-dist;
      - remove unportable "grep -q" from configure.in
      
      Original changeset:
        revision-id: build@mysql.com-20081203041148-icwscut3bk09ds47
        parent: kgeorge@mysql.com-20081202125040-eiu6s7bk6s96s4xh
        author: timothy.smith@sun.com
        committer: MySQL Build Team <build@mysql.com>
        branch nick: mysql-5.0.74-release
        timestamp: Wed 2008-12-03 05:11:48 +0100
      3c998489
  5. 24 Oct, 2008 1 commit
    • Joerg Bruehe's avatar
      Fix a "configure" syntax error. · 52107b1c
      Joerg Bruehe authored
      It had been introduced with the patch for bug entry 37098
      and affected runs "--without-server" only.
      
      
      configure.in:
        The conditional "BUILD_INNODB_TOOLS" is set depending on
        whether InnoDB is configured in the build,
        but that check is done only when building the server.
        
        For builds without the server it must also be set,
        or else "configure" reports an error.
        Set it to "false" in such builds, as this conditional
        only affects a tool that is useless in client installations.
      52107b1c
  6. 23 Oct, 2008 4 commits
  7. 21 Oct, 2008 4 commits
    • Davi Arnaut's avatar
      Post-merge fix: drop table at the end of test. · e88c3241
      Davi Arnaut authored
      mysql-test/r/xa.result:
        Update test case result.
      mysql-test/t/xa.test:
        Drop table used for test.
      e88c3241
    • Davi Arnaut's avatar
      Bug#28323: Server crashed in xid cache operations · 2503f00d
      Davi Arnaut authored
      The problem was that the server did not robustly handle a
      unilateral roll back issued by the Resource Manager (RM)
      due to a resource deadlock within the transaction branch.
      By not acknowledging the roll back, the server (TM) would
      eventually corrupt the XA transaction state and crash.
      
      The solution is to mark the transaction as rollback-only
      if the RM indicates that it rolled back its branch of the
      transaction.
      
      mysql-test/r/xa.result:
        Add test case result for Bug#28323
      mysql-test/t/xa.test:
        Add test case for Bug#28323
      sql/handler.cc:
        Reset XID only at the end of the global transaction.
      sql/share/errmsg.txt:
        Add new error codes.
      sql/sql_class.h:
        Remember the error reported by the Resource Manager.
      sql/sql_parse.cc:
        Rollback the transaction if the Resource Manager reported
        a error and rolled back its branch of the transaction.
      2503f00d
    • Davi Arnaut's avatar
      Bug#28323: Server crashed in xid cache operations · cc0b0a3c
      Davi Arnaut authored
      The problem was that the server did not robustly handle a
      unilateral roll back issued by the Resource Manager (RM)
      due to a resource deadlock within the transaction branch.
      By not acknowledging the roll back, the server (TM) would
      eventually corrupt the XA transaction state and crash.
      
      The solution is to mark the transaction as rollback-only
      if the RM indicates that it rolled back its branch of the
      transaction.
      
      mysql-test/r/xa.result:
        Add test case result for Bug#28323
      mysql-test/t/xa.test:
        Add test case for Bug#28323
      sql/handler.cc:
        Reset XID only at the end of the global transaction.
      sql/share/errmsg.txt:
        Add new error codes.
      sql/sql_class.h:
        Remember the error reported by the Resource Manager.
      sql/sql_parse.cc:
        Rollback the transaction if the Resource Manager reported
        a error and rolled back its branch of the transaction.
      cc0b0a3c
    • unknown's avatar
      Merge from mysql-5.0.70-release · f956333d
      unknown authored
      f956333d
  8. 20 Oct, 2008 2 commits
  9. 17 Oct, 2008 1 commit
  10. 16 Oct, 2008 2 commits
    • Gleb Shchepa's avatar
      Bug #39844: Query Crash Mysql Server 5.0.67 · 9f04b596
      Gleb Shchepa authored
      Server crashed during a sort order optimization
      of a dependent subquery:
      
      SELECT
          (SELECT t1.a FROM t1, t2
            WHERE t1.a = t2.b AND t2.a = t3.c
            ORDER BY t1.a)
        FROM t3;
      
      
      Bitmap of tables, that the reference to outer table
      column uses, in addition to the regular table bit
      has the OUTER_REF_TABLE_BIT bit set.
      The only_eq_ref_tables function traverses this map
      bit by bit simultaneously with join->map2table list.
      Obviously join->map2table never contains an entry
      for the OUTER_REF_TABLE_BIT pseudo-table, so the
      server crashed there.
      
      
      The only_eq_ref_tables function has been modified
      to traverse regular table bits only like the
      update_depend_map function (resetting of the
      OUTER_REF_TABLE_BIT there is enough, but
      resetting of the whole set of PSEUDO_TABLE_BITS
      is used there for sure).
      
      
      mysql-test/r/order_by.result:
        Added test case for bug #39844.
      mysql-test/t/order_by.test:
        Added test case for bug #39844.
      sql/sql_select.cc:
        Bug #39844: Query Crash Mysql Server 5.0.67
        
        The only_eq_ref_tables function has been modified
        to traverse regular table bits only like the
        update_depend_map function (resetting of the
        OUTER_REF_TABLE_BIT there is enough, but
        resetting of the whole set of PSEUDO_TABLE_BITS
        is used there for sure).
      9f04b596
    • Georgi Kodinov's avatar
      Bug #39958: Test "windows" lacks a cleanup · d74a51b9
      Georgi Kodinov authored
      Added the missing DROP TABLE
      
      mysql-test/r/windows.result:
        Bug #39958: added the missing DROP TABLE
      mysql-test/t/windows.test:
        Bug #39958: added the missing DROP TABLE
      d74a51b9
  11. 15 Oct, 2008 3 commits
    • Davi Arnaut's avatar
      Bug#37075: offset of limit clause might be truncated on 32-bits server w/o big tables · 29ae8c5a
      Davi Arnaut authored
      The problem is that the offset argument of the limit clause
      might be truncated on a 32-bits server built without big
      tables support. The truncation was happening because the
      original 64-bits long argument was being cast to a 32-bits
      (ha_rows) offset counter.
      
      The solution is to check if the conversing resulted in value
      truncation and if so, the offset is set to the maximum possible
      value that can fit on the type.
      
      mysql-test/r/limit.result:
        Add test case result for Bug#37075
      mysql-test/t/limit.test:
        Add test case for Bug#37075
      sql/sql_lex.cc:
        Check for truncation of the offset value. If value was
        truncated, set to the maximum possible value.
      29ae8c5a
    • Georgi Kodinov's avatar
      Bug #38693: leaked memory with blobs! · 6197e674
      Georgi Kodinov authored
      If delayed insert fails to upgrade the lock it was not
      freeing the temporary memory storage used to keep
      newly constructed blob values in memory.
      Fixed by iterating over the remaining rows in the delayed
      insert rowset and freeing the blob storage for each row.
      
      No test suite because it involves concurrent delayed inserts 
      on a table and cannot easily be made deterministic. 
      
      Added a correct valgrind suppression for Fedora 9.
      
      mysql-test/valgrind.supp:
        Added a vagrind suppression for Fedora 9
      sql/sql_insert.cc:
        Bug #38693: free the blobs temp storage on error.
      6197e674
    • Kristofer Pettersson's avatar
      automerge · 90468202
      Kristofer Pettersson authored
      90468202
  12. 14 Oct, 2008 1 commit
    • Davi Arnaut's avatar
      Bug#38823: Invalid memory access when a SP statement does wildcard expansion · d907d94d
      Davi Arnaut authored
      The problem is that field names constructed due to wild-card
      expansion done inside a stored procedure could point to freed
      memory if the expansion was performed after the first call to
      the stored procedure.
      
      The problem was solved by patch for Bug#38691. The solution
      was to allocate the database, table and field names in the
      in the statement memory instead of table memory.
      
      mysql-test/r/sp.result:
        Add test case result for Bug#38823
      mysql-test/t/sp.test:
        Add test case for Bug#38823
      sql/item.cc:
        Remark that this also impacts wildcard expansion inside SPs.
      d907d94d
  13. 13 Oct, 2008 1 commit
  14. 10 Oct, 2008 4 commits
    • Joerg Bruehe's avatar
      Merge from main 5.0 branch -> 5.0-build · f46e1180
      Joerg Bruehe authored
      Merge conflicts in test "create:
      - for "create.result", handled correctly by "bzr extmerge" (using "kdiff3"),
      - for "create.test", not reported as a conflict, but merged wrong
        (new block at the test end got duplicated), fixed manually.
      
      Test on Linux (Debian, PowerPC) was ok.
      f46e1180
    • Georgi Kodinov's avatar
      merged 5.0-main -> 5.0-bugteam · 5b40646d
      Georgi Kodinov authored
      5b40646d
    • Gleb Shchepa's avatar
      Bug #37894: Assertion in init_read_record_seq in handler.h line 1444 · efb3a353
      Gleb Shchepa authored
      Select with a "NULL NOT IN" condition containing complex
      subselect from the same table as in the outer select failed
      with an assertion.
      
      
      The failure was caused by a concatenation of circumstances:
      1) an inner select was optimized by make_join_statistics to use
         the QUICK_RANGE_SELECT access method (that implies an index
         scan of the table);
      2) a subselect was independent (constant) from the outer select;
      3) a condition was pushed down into inner select.
      
      During the evaluation of a constant IN expression an optimizer
      temporary changed the access method from index scan to table
      scan, but an engine handler was already initialized for index
      access by make_join_statistics. That caused an assertion.
      
      
      Unnecessary index initialization has been removed from
      the QUICK_RANGE_SELECT::init method (QUICK_RANGE_SELECT::reset
      reinvokes this initialization).
      
      
      mysql-test/r/subselect3.result:
        Added test case for bug #37894.
      mysql-test/t/subselect3.test:
        Added test case for bug #37894.
      sql/opt_range.cc:
        Bug #37894: Assertion in init_read_record_seq in handler.h line 1444
        
        Unnecessary index initialization has been removed from
        the QUICK_RANGE_SELECT::init method (QUICK_RANGE_SELECT::reset
        reinvokes this initialization).
      efb3a353
    • Gleb Shchepa's avatar
      Bug #39283: Date returned as VARBINARY to client for queries · 849214a0
      Gleb Shchepa authored
                  with COALESCE and JOIN
      
      The server returned to a client the VARBINARY column type
      instead of the DATE type for a result of the COALESCE,
      IFNULL, IF, CASE, GREATEST or LEAST functions if that result
      was filesorted in an anonymous temporary table during
      the query execution.
      
      For example:
        SELECT COALESCE(t1.date1, t2.date2) AS result
          FROM t1 JOIN t2 ON t1.id = t2.id ORDER BY result;
      
      
      To create a column of various date/time types in a
      temporary table the create_tmp_field_from_item() function
      uses the Item::tmp_table_field_from_field_type() method
      call. However, fields of the MYSQL_TYPE_NEWDATE type were
      missed there, and the VARBINARY columns were created
      by default.
      Necessary condition has been added.
      
      
      mysql-test/r/metadata.result:
        Added test case for bug #39283.
      mysql-test/t/metadata.test:
        Added test case for bug #39283.
      sql/sql_select.cc:
        Bug #39283: Date returned as VARBINARY to client for queries
                    with COALESCE and JOIN
        
        To create a column of various date/time types in a
        temporary table the create_tmp_field_from_item() function
        uses the Item::tmp_table_field_from_field_type() method
        call. However, fields of the MYSQL_TYPE_NEWDATE type were
        missed there, and the VARBINARY columns were created
        by default.
        Necessary condition has been added.
      849214a0
  15. 09 Oct, 2008 2 commits
    • Gleb Shchepa's avatar
      Bug#38499: flush tables and multitable table update with · abf603bc
      Gleb Shchepa authored
                 derived table cause crash
      
      When a multi-UPDATE command fails to lock some table, and
      subsequently succeeds, the tables need to be reopened if
      they were altered. But the reopening procedure failed for
      derived tables.
      
      Extra cleanup has been added.
      
      
      mysql-test/r/lock_multi.result:
        Added test case for bug #38499.
      mysql-test/t/lock_multi.test:
        Added test case for bug #38499.
      sql/sql_union.cc:
        Bug#38499: flush tables and multitable table update with
                   derived table cause crash
        
        Obsolete assertion has been removed.
      sql/sql_update.cc:
        Bug#38499: flush tables and multitable table update with
                   derived table cause crash
        
        Extra cleanup for derived tables has been added:
        1) unit.cleanup(),
        2) unit->reinit_exec_mechanism().
      abf603bc
    • Kristofer Pettersson's avatar
      Bug#24289 Status Variable "Questions" gets wrong values with Stored Routines · cdc1ca9e
      Kristofer Pettersson authored
                       
      When running Stored Routines the Status Variable "Questions" was wrongly
      incremented. According to the manual it should contain the "number of
      statements that clients have sent to the server"
                    
      Introduced a new status variable 'questions' to replace the query_id
      variable which currently corresponds badly with the number of statements
      sent by the client.
                  
      The new behavior is ment to be backward compatible with 4.0 and at the
      same time work with new features in a similar way.
                  
      This is a backport from 6.0
      
      mysql-test/r/status2.result:
        Added test case
      mysql-test/t/status2.test:
        Added test case
      sql/mysqld.cc:
        Introduced a new status variable 'questions' to replace the query_id
        variable which currently corresponds badly with the number of statements
        sent by the client.
      sql/sql_class.h:
        Introduced a new status variable 'questions' to replace the query_id
        variable which currently corresponds badly with the number of statements
        sent by the client.
      sql/sql_parse.cc:
        To be backward compatible with 4.0 and at the same time extend the 
        interpretation of the Question variable, it should be increased on
        all COM-commands but COM_STATISTICS, COM_PING, COM_STMT_PREPARE,
        COM_STMT_CLOSE and COM_STMT_RESET.
        Since COM_QUERY can process multiple statements, there has to be an
        extra increase there as well.
      sql/sql_show.cc:
        Removed deprecated SHOW_QUESTION status code.
      sql/structs.h:
        Removed deprecated SHOW_QUESTION status code.
      cdc1ca9e
  16. 08 Oct, 2008 1 commit
  17. 07 Oct, 2008 2 commits
    • Gleb Shchepa's avatar
      Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while · fd777ae1
      Gleb Shchepa authored
                ``FLUSH TABLES WITH READ LOCK''
      
      Concurrent execution of 1) multitable update with a
      NATURAL/USING join and 2) a such query as "FLUSH TABLES
      WITH READ LOCK" or "ALTER TABLE" of updating table led
      to a server crash.
      
      
      The mysql_multi_update_prepare() function call is optimized
      to lock updating tables only, so it postpones locking to
      the last, and if locking fails, it does cleanup of modified
      syntax structures and repeats a query analysis.  However,
      that cleanup procedure was incomplete for NATURAL/USING join
      syntax data: 1) some Field_item items pointed into freed
      table structures, and 2) the TABLE_LIST::join_columns fields
      was not reset.
      
      Major change:
        short-living Field *Natural_join_column::table_field has
        been replaced with long-living Item*.
      
      
      mysql-test/r/lock_multi.result:
        Added test case for bug #38691.
      mysql-test/t/lock_multi.test:
        Added test case for bug #38691.
      sql/item.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        The Item_field constructor has been modified to allocate
        and copy original database/table/field names always (not
        during PS preparation/1st execution only), because
        an initialization of Item_field items with a pointer to
        short-living Field structures is a common practice.
      sql/sql_base.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        1) Type adjustment for Natural_join_column::table_field
           (Field to Item_field);
        2) The setup_natural_join_row_types function has been
           updated to take into account new
           first_natural_join_processing flag to skip unnecessary
           reinitialization of Natural_join_column::join_columns
           during table reopening after lock_tables() failure
           (like the 'first_execution' flag for PS).
      sql/sql_lex.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Initialization of the new
        st_select_lex::first_natural_join_processing flag has
        been added.
      sql/sql_lex.h:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        The st_select_lex::first_natural_join_processing flag
        has been added to skip unnecessary rebuilding of
        NATURAL/USING JOIN structures during table reopening
        after lock_tables failure.
      sql/sql_update.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Extra cleanup calls have been added to reset
        Natural_join_column::table_field items.
      sql/table.cc:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Type adjustment for Natural_join_column::table_field
        (Field to Item_field).
      sql/table.h:
        Bug #38691: segfault/abort in ``UPDATE ...JOIN'' while
                  ``FLUSH TABLES WITH READ LOCK''
        
        Type of the Natural_join_column::table_field field has
        been changed from Field that points into short-living
        TABLE memory to long-living Item_field that can be
        linked to (fixed) reopened table.
      fd777ae1
    • Georgi Kodinov's avatar
      merged 5.0-5.1.29-rc -> 5.0-bugteam · bd25ec50
      Georgi Kodinov authored
      bd25ec50
  18. 06 Oct, 2008 3 commits