An error occurred fetching the project authors.
  1. 23 Dec, 2010 1 commit
  2. 19 Dec, 2010 1 commit
  3. 09 Dec, 2010 1 commit
    • Igor Babaev's avatar
      Addemdum for bug #685952. · 065a0044
      Igor Babaev authored
      Also:
      Changed the value of TIME_FOR_COMPARE_ROWID to make it the same as for MWL 21.
      Changed some queries in range_vs_index_merge.test to make them generate
      the same plans as earlier.
      
      065a0044
  4. 02 Dec, 2010 1 commit
  5. 17 Nov, 2010 1 commit
    • unknown's avatar
      MWL#74: Shared libmysqld.so library. · cc58caf8
      unknown authored
      Switch makefiles to use libtool to build libmysqld.so, as well as all its
      dependencies.
      
      The previous MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS() declaration is removed,
      as it does not work well with a libtool build. Instead, plugins that need it
      can specify an alternate object in MYSQL_PLUGIN_STATIC() that will be used for
      embedded library. The plugin must then take care itself of compiling the
      special object for embedded, rebuilding the source files previously listed in
      MYSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS() with @plugin_embedded_defs@ in
      CFLAGS/CXXFLAGS. The extra target @XXX_embedded_static_target@ is available
      for the special object, this will be empty when --without-embedded-server.
      
      All in-tree plugins are changed to build their static targets with libtool.
      Additional plugins that want to work with libmysqld.so will need to be
      similarly modified to build with libtool (or otherwise provide an -fPIC
      object). Dynamically loaded plugins are not affected.
      
      The old libraries like libmysys.a, libmyisam.a and similar libraries, which
      were installed by `make install` though this is of little use, are still built
      and installed to not break package scripts etc. that expect them. These
      libraries are kept static to avoid introducing new .so dependencies.
      
      The patch also fixes a handfull of duplicate symbol linker errors, where we
      included some object twice during linking; these for one reason or another did
      not produce errors before but caused problems on some platforms with this
      patch (eg. Mac OS X linker is more strict for shared objects).
      
      This patch only does what is necessary to build libmysqld.so. There are some
      more cleanups that are possible now that we are using libtool more fully,
      which could done in subsequent patches (though we may not bother as we are
      switching from autotools to CMake anyway):
      
       - In libmysql_r/, we should be able to just link libmysys.la etc, instead of
         symlinking and re-compiling sources into the directory.
      
       - In libmysql/, we can similarly avoid symlinking and recompiling sources if
         we instead build a libmysys_nothread.la library with appropriate CFLAGS and
         link that.
      
       - In sql/, we can build a separate target libmysql_int.la with appropriate
         CFLAGS for embedded and use that in libmysqld/ instead of symlinking
         sources.
      
       - libmysys.a, libmyisam.a and similar libraries could be installed as .so
         also to save on code size; or alternatively could be not installed at all.
      
      
      client/Makefile.am:
        Updated for using libtool
      config/ac-macros/plugins.m4:
        Replace MUSQL_PLUGIN_DEPENDS_ON_MYSQL_INTERNALS with mechanism for plugins
        to specify alternate object for embedded.
      configure.in:
        Fix linking duplicate objects related to THREAD_LOBJECTS.
      dbug/Makefile.am:
        Updated for using libtool
      extra/Makefile.am:
        Fix relative paths.
      libmysqld/Makefile.am:
        Build libmysqld.la using libtool
      libmysqld/examples/Makefile.am:
        Updated to use libtool
      mysys/Makefile.am:
        Updated to use libtool.
        Fix linking duplicate objects related to THREAD_LOBJECTS.
      mysys/my_uuid.c:
        Fix conflicting global mutex name by making it static.
      regex/Makefile.am:
        Updated to use libtool
      sql/Makefile.am:
        Updated to use libtool
      sql/item_func.cc:
        Fix conflicting mutex name.
      sql/mysql_priv.h:
        Fix conflicting mutex name
      sql/mysqld.cc:
        Fix conflicting mutex name.
        Add missing call of my_uuid_end().
      storage/archive/Makefile.am:
        Updated to use libtool
      storage/archive/plug.in:
        Updated to use libtool
      storage/blackhole/Makefile.am:
        Updated to use libtool
      storage/blackhole/plug.in:
        Updated to use libtool
      storage/csv/Makefile.am:
        Updated to use libtool
      storage/csv/plug.in:
        Updated to use libtool
      storage/example/Makefile.am:
        Updated to use libtool
      storage/federated/Makefile.am:
        Updated to use libtool
      storage/federated/plug.in:
        Updated to use libtool
      storage/federatedx/Makefile.am:
        Updated to use libtool
      storage/federatedx/plug.in:
        Updated to use libtool
      storage/heap/Makefile.am:
        Updated to use libtool
      storage/heap/plug.in:
        Updated to use libtool
      storage/innobase/Makefile.am:
        Updated to use libtool
      storage/innobase/plug.in.disabled:
        Updated to use libtool
      storage/innodb_plugin/Makefile.am:
        Updated to use libtool
      storage/maria/CMakeLists.txt:
        Fix linking duplicate object in maria_dump_log, causes failure on Mac OS X
      storage/maria/Makefile.am:
        Updated to use libtool
        Fix linking duplicate object in maria_dump_log, causes link failure on Mac OS X
      storage/maria/ma_loghandler.c:
        Move maria_dump_log code to separate file to fix duplicate object link failures.
      storage/maria/ma_loghandler.h:
        Move maria_dump_log code to separate file to fix duplicate object link failures.
      storage/maria/maria_dump_log.c:
        Move maria_dump_log code to separate file to fix duplicate object link failures.
      storage/maria/plug.in:
        Updated to use libtool
      storage/myisam/Makefile.am:
        Updated to use libtool
      storage/myisam/plug.in:
        Updated to use libtool
      storage/myisammrg/Makefile.am:
        Updated to use libtool
      storage/myisammrg/plug.in:
        Updated to use libtool
      storage/pbxt/plug.in:
        Updated to use libtool
      storage/pbxt/src/Makefile.am:
        Updated to use libtool
      storage/xtradb/Makefile.am:
        Updated to use libtool
      storage/xtradb/plug.in:
        Updated to use libtool
      strings/Makefile.am:
        Updated to use libtool
      unittest/unit.pl:
        Don't attempt to run libtool internal files as unit tests.
      vio/Makefile.am:
        Updated to use libtool
      cc58caf8
  6. 02 Nov, 2010 1 commit
    • Michael Widenius's avatar
      Fix for: LP #634955: Assert in _ma_update_at_original_place() · 334cc518
      Michael Widenius authored
      Added locking of lock mutex when updating status in external_unlock() for Aria and MyISAM tables.
      Fixed that 'source' command doesn't cause mysql command line tool to exit on error.
      DEBUG_EXECUTE() and DEBUG_EVALUATE_IF() should not execute things based on wildcards. (Allows one to run --debug with mysql-test-run scripts that uses @debug)
      Fixed several core dump, deadlock and crashed table bugs in handling of LOCK TABLE with MERGE tables:
      - Added priority of locks to avoid crashes with MERGE tables.
      - Added thr_lock_merge() to allow one to merge two results of thr_lock().
      Fixed 'not found row' bug in REPLACE with Aria tables.
      Mark MyISAM tables that are part of MERGE with HA_OPEN_MERGE_TABLE and set the locks to have priority THR_LOCK_MERGE_PRIV.
      - By sorting MERGE tables last in thr_multi_unlock() it's safer to release and relock them many times (can happen when TRIGGERS are created)
      Avoid printing (null) in debug file (to easier find out wrong NULL pointer usage with %s).
      
      
      
      client/mysql.cc:
        Fixed that 'source' command doesn't cause mysql command line tool to exit on error.
      client/mysqltest.cc:
        Don't send NULL to fn_format(). (Can cause crash on Solaris when using --debug)
      dbug/dbug.c:
        DEBUG_EXECUTE() and DEBUG_EVALUATE_IF() should not execute things based on wildcards.
      include/my_base.h:
        Added flag to signal if one opens a MERGE table.
        Added extra() command to signal that one is not part of a MERGE table anymore.
      include/thr_lock.h:
        Added priority for locks (needed to fix bug in thr_lock when using MERGE tables)
        Added option to thr_unlock() if get_status() should be called.
        Added prototype for thr_merge_locks().
      mysql-test/mysql-test-run.pl:
        Ignore crashed table warnings for tables named 'crashed'.
      mysql-test/r/merge.result:
        Renamed triggers to make debugging easier.
        Added some CHECK TABLES to catch errors earlier.
        Additional tests.
      mysql-test/r/merge_debug.result:
        Test of error handling when reopening MERGE tables.
      mysql-test/r/udf_query_cache.result:
        Added missing flush status
      mysql-test/suite/parts/r/partition_repair_myisam.result:
        Update results
      mysql-test/t/merge.test:
        Renamed triggers to make debugging easier.
        Added some CHECK TABLES to catch errors earlier.
        Additional tests.
      mysql-test/t/merge_debug.test:
        Test of error handling when reopening MERGE tables.
      mysql-test/t/udf_query_cache.test:
        Added missing flush status
      mysys/my_getopt.c:
        Removed not used variable
      mysys/my_symlink2.c:
        Changed (null) to (NULL) to make it easier to find NULL arguments to DBUG_PRINT() functions.
        (On linux, NULL to sprintf is printed 'null')
      mysys/thr_lock.c:
        Added priority of locks to avoid crashes with MERGE tables.
        Added thr_lock_merge() to allow one to merge two results of thr_lock().
        - This is needed for MyISAM as all locked table must share the same status. If not, you will not see newly inserted rows in other instances of the table.
        If calling thr_unlock() with THR_UNLOCK_UPDATE_STATUS, call update_status() and restore_status() for the locks. This is needed in some rare cases where we call thr_unlock() followed by thr_lock() without calling external_unlock/external_lock in between.
        Simplify loop in thr_multi_lock().
        Added 'start_trans', which is called at end of thr_multi_lock() when all locks are taken.
        - This was needed by Aria to ensure that transaction is started when we got all locks, not at get_status(). Without this, some rows could not be visible when we lock two tables at the same time, causing REPLACE using two tables to fail unexpectedly.
      sql/handler.cc:
        Add an assert() in handler::print_error() for "impossible errors" (like table is crashed) when --debug-assert-if-crashed-table is used.
      sql/lock.cc:
        Simplify mysql_lock_tables() code if get_lock_data() returns 0 locks.
        Added new parameter to thr_multi_unlock()
        In mysql_unlock_read_tables(), call first externa_unlock(), then thr_multi_unlock();  This is same order as we do in mysql_unlock_tables().
        Don't abort locks in mysql_lock_abort() for merged tables when a MERGE table is deleted; Would cause a spin lock.
        Added call to thr_merge_locks() in mysql_lock_merge() to ensure consistency in thr_locks().
        - New locks of same type and table is stored after the old lock to ensure that we get the status from the original lock.
      sql/mysql_priv.h:
        Added debug_assert_if_crashed_table
      sql/mysqld.cc:
        Added --debug-assert-if-crashed-table
      sql/parse_file.cc:
        Don't print '(null)' in DBUG_PRINT of no dir given
      sql/set_var.cc:
        Increase default size of buffer for @debug variable.
      sql/sql_base.cc:
        In case of error from reopen_table() in reopen_tables(), call unlock_open_table() and restart loop.
        - This fixed bug when we twice deleted same table from open_cache.
        Don't take name lock for already name locked table in open_unireg_entry().
        - Fixed bug when doing repair in reopen_table().
        - In detach_merge_children(), always detach if 'clear_refs' is given. We can't trust parent->children_attached as this function can be called twice, first time with clear_refs set to 0.
      sql/sql_class.cc:
        Changed printing of (null) to "" in set_thd_proc_info()
      sql/sql_parse.cc:
        Added DBUG
      sql/sql_trigger.cc:
        Don't call unlink_open_table() if reopen_table() fails as the table may already be freed.
      storage/maria/ma_bitmap.c:
        Fixed DBUG_ASSERT() in allocate_tail()
      storage/maria/ma_blockrec.c:
        Fixed wrong calculation of row length for very small rows in undo_row_update().
        - Fixes ASSERT() when doing undo.
      storage/maria/ma_blockrec.h:
        Added _ma_block_start_trans() and _ma_block_start_trans_no_versioning()
      storage/maria/ma_locking.c:
        Call _ma_update_status_with_lock() when releasing write locks.
        - Fixes potential problem with updating status without the proper lock.
      storage/maria/ma_open.c:
        Changed to use start_trans() instead of get_status() to ensure that we see all rows in all locked tables when we got the locks.
        - Fixed 'not found row' bug in REPLACE with Aria tables.
      storage/maria/ma_state.c:
        Added _ma_update_status_with_lock() and _ma_block_start_trans().
        This is to ensure that we see all rows in all locked tables when we got the locks.
      storage/maria/ma_state.h:
        Added _ma_update_status_with_lock()
      storage/maria/ma_write.c:
        More DBUG_PRINT
      storage/myisam/mi_check.c:
        Fixed error message
      storage/myisam/mi_extra.c:
        Added HA_EXTRA_DETACH_CHILD:
        - Detach MyISAM table to not be part of MERGE table (remove flag & lock priority).
      storage/myisam/mi_locking.c:
        Call mi_update_status_with_lock() when releasing write locks.
        - Fixes potential problem with updating status without the proper lock.
        Change to use new HA_OPEN_MERGE_TABLE flag to test if MERGE table.
        Added mi_fix_status(), called by thr_merge().
      storage/myisam/mi_open.c:
        Added marker if part of MERGE table.
        Call mi_fix_status() in thr_lock() for transactional tables.
      storage/myisam/myisamdef.h:
        Change my_once_flag to uint, as it stored different values than just 0/1
        Added 'open_flag' to store state given to mi_open()
      storage/myisammrg/ha_myisammrg.cc:
        Add THR_LOCK_MERGE_PRIV to THR_LOCK_DATA to get MERGE locks sorted after other types of locks.
      storage/myisammrg/myrg_locking.c:
        Remove windows specific code.
      storage/myisammrg/myrg_open.c:
        Use HA_OPEN_MERGE_TABLE to mi_open().
        Set HA_OPEN_MERGE_TABLE for linked MyISAM tables.
      storage/xtradb/buf/buf0buf.c:
        Fixed compiler warning
      storage/xtradb/buf/buf0lru.c:
        Initialize variable that could be used not initialized.
      334cc518
  7. 07 Oct, 2010 1 commit
    • Martin Hansson's avatar
      Bug#56423: Different count with SELECT and CREATE SELECT queries · 0f3b2f79
      Martin Hansson authored
      This is a regression from the fix for bug no 38999. A storage engine capable
      of reading only a subset of a table's columns updates corresponding bits in
      the read buffer to signal that it has read NULL values for the corresponding
      columns. It cannot, and should not, update any other bits. Bug no 38999
      occurred because the implementation of UPDATE statements compare the NULL bits
      using memcmp, inadvertently comparing bits that were never requested from the
      storage engine. The regression was caused by the storage engine trying to
      alleviate the situation by writing to all NULL bits, even those that it had no
      knowledge of. This has devastating effects for the index merge algorithm,
      which relies on all NULL bits, except those explicitly requested, being left
      unchanged.
      
      The fix reverts the fix for bug no 38999 in both InnoDB and InnoDB plugin and
      changes the server's method of comparing records. For engines that always read
      entire rows, we proceed as usual. For engines capable of reading only select
      columns, the record buffers are now compared on a column by column basis. An
      assertion was also added so that non comparable buffers are never read. Some
      relevant copy-pasted code was also consolidated in a new function.
      0f3b2f79
  8. 03 Sep, 2010 1 commit
    • Michael Widenius's avatar
      Fix that one can run mysql_upgrade with long table names · 7c8d39d1
      Michael Widenius authored
      Fall back to use ALTER TABLE for engines that doesn't support REPAIR when doing repair for upgrade.
      Nicer output from mysql_upgrade and mysql_check
      Updated all arrays that used NAME_LEN to use SAFE_NAME_LEN to ensure that we don't break things accidently as names can now have a #mysql50# prefix.
      
      client/mysql_upgrade.c:
        If we are using verbose, also run mysqlcheck in verbose mode.
      client/mysqlcheck.c:
        Add more information if running in verbose mode
        Print 'Needs upgrade' instead of complex error if table needs to be upgraded
        Don't write connect information if verbose is not 2 or above
      mysql-test/r/drop.result:
        Updated test and results as we now support full table names
      mysql-test/r/grant.result:
        Now you get a correct error message if using #mysql with paths
      mysql-test/r/show_check.result:
        Update results as table names can temporarly be bigger than NAME_LEN (during upgrade)
      mysql-test/r/upgrade.result:
        Test upgrade for long table names.
      mysql-test/suite/funcs_1/r/is_tables_is.result:
        Updated old test result (had note been updated in a while)
      mysql-test/t/drop.test:
        Updated test and results as we now support full table names
      mysql-test/t/grant.test:
        Now you get a correct error message if using #mysql with paths
      mysql-test/t/upgrade.test:
        Test upgrade for long table names.
      sql/ha_partition.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/item.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/log_event.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/mysql_priv.h:
        Added SAFE_NAME_LEN
      sql/rpl_filter.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sp.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sp_head.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_acl.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_base.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_connect.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_parse.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_prepare.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_select.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_show.cc:
        NAME_LEN -> SAFE_NAME_LEN
        Enlarge table names for SHOW TABLES to also include optional #mysql50#
      sql/sql_table.cc:
        Fall back to use ALTER TABLE for engines that doesn't support REPAIR when doing repair for upgrade.
      sql/sql_trigger.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_udf.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/sql_view.cc:
        NAME_LEN -> SAFE_NAME_LEN
      sql/table.cc:
        Fixed check_table_name() to not count #mysql50# as part of name
        If #mysql50# is part of the name, don't allow path characters in name.
      7c8d39d1
  9. 04 Aug, 2010 2 commits
    • Michael Widenius's avatar
      Fixed compiler warnings · c60f4de5
      Michael Widenius authored
      Fixed some wrong test cases
      Fixed bug in null handling in XtraDB
      
      
      extra/comp_err.c:
        Fixed compiler warnings
      extra/my_print_defaults.c:
        Fixed compiler warnings
      mysql-test/suite/binlog/t/binlog_killed.test:
        Added support for timeouts
      mysql-test/suite/funcs_1/r/is_columns_is.result:
        Updated results (INNODB_SYS_TABLES had got new column)
      scripts/mysql_install_db.sh:
        Fixed typo
      sql/mysql_priv.h:
        Removed not needed argument for compare_record()
      sql/sql_insert.cc:
        Removed not needed argument for compare_record()
      sql/sql_update.cc:
        Removed not needed argument for compare_record()
        The argument is not needed becasue we copy the full record[0] to record[1] and the comparison should work even if all columns are not read
      sql/table.cc:
        The comparison of rows is independent of HA_PARTIAL_COLUMN_READ
      storage/maria/maria_chk.c:
        Fixed compiler warnings
      storage/maria/maria_read_log.c:
        Fixed compiler warnings
      storage/myisam/myisamchk.c:
        Fixed compiler warnings
      storage/myisam/myisampack.c:
        Fixed compiler warnings
      storage/xtradb/dict/dict0load.c:
        Fixed compiler warnings
      storage/xtradb/row/row0sel.c:
        Fixed null handling in XtraDB. (See comment)
      storage/xtradb/trx/trx0sys.c:
        Fixed compiler warnings
      support-files/compiler_warnings.supp:
        Fixed compiler warnings
      c60f4de5
    • Michael Widenius's avatar
      Fixes bug when we run bcmp() on row when the storage engine hasn't filled in all fields in the row. · c52c6df5
      Michael Widenius authored
      This was triggered by innodb.innodb_multi_update, where we had a static length row without nulls and xtradb didn't fill in the delete-marker byte
      
      
      include/my_bitmap.h:
        Added prototype for bitmap_union_is_set_all()
      mysys/my_bitmap.c:
        Added function to check if union of two bit maps covers all bits.
      sql/mysql_priv.h:
        Updated protype for compare_record()
      sql/sql_insert.cc:
        Send to compare_record() flag if all fields are used.
      sql/sql_select.cc:
        Set share->null_bytes_for_compare.
      sql/sql_update.cc:
        In compare_record() don't use the fast cmp_record() (which is basically memcmp) if we don't know that all fields exists.
        Don't compare the null_bytes if there is no data there.
      sql/table.cc:
        Store in share->null_bytes_for_compare the number of bytes that has null or bit fields (but not delete marker)
        Store in can_cmp_whole_record if we can use memcmp() (assuming all rows are read) to compare rows in compare_record()
      sql/table.h:
        Added two elements in table->share to speed up checking how updated rows can be compared.
      c52c6df5
  10. 29 Jul, 2010 1 commit
    • unknown's avatar
      BUG#49124 Security issue with /*!-versioned */ SQL statements on Slave · d7ad4352
      unknown authored
      /*![:version:] Query Code */, where [:version:] is a sequence of 5 
      digits representing the mysql server version(e.g /*!50200 ... */),
      is a special comment that the query in it can be executed on those 
      servers whose versions are larger than the version appearing in the 
      comment. It leads to a security issue when slave's version is larger 
      than master's. A malicious user can improve his privileges on slaves. 
      Because slave SQL thread is running with SUPER privileges, so it can
      execute queries that he/she does not have privileges on master.
      
      This bug is fixed with the logic below: 
      - To replace '!' with ' ' in the magic comments which are not applied on
        master. So they become common comments and will not be applied on slave.
      
      - Example:
        'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /*!99999 ,(3)*/
        will be binlogged as
        'INSERT INTO t1 VALUES (1) /*!10000, (2)*/ /* 99999 ,(3)*/
      
      mysql-test/suite/rpl/t/rpl_conditional_comments.test:
        Test the patch for this bug.
      sql/mysql_priv.h:
        Rename inBuf as rawBuf and remove the const limitation.
      sql/sql_lex.cc:
        To replace '!' with ' ' in the magic comments which are not applied on
        master.
      sql/sql_lex.h:
        Remove the const limitation on parameter buff, as it can be modified in the function since
        this patch.
        Add member function yyUnput for Lex_input_stream. It set a character back the query buff.
      sql/sql_parse.cc:
        Rename inBuf as rawBuf and remove the const limitation.
      sql/sql_partition.cc:
        Remove the const limitation on parameter part_buff, as it can be modified in the function since
        this patch.
      sql/sql_partition.h:
        Remove the const limitation on parameter part_buff, as it can be modified in the function since
        this patch.
      sql/table.h:
        Remove the const limitation on variable partition_info, as it can be modified since
        this patch.
      d7ad4352
  11. 23 Jun, 2010 2 commits
    • sunanda's avatar
      Backport into build-201006221614-5.1.46sp1 · 3a80ab21
      sunanda authored
      > ------------------------------------------------------------
      > revno: 3392.1.1
      > revision-id: gshchepa@mysql.com-20100521184732-0jvpzinv0uwyvr2d
      > parent: sven.sandberg@sun.com-20100520153801-yyhujm1qqa4eyfn0
      > committer: Gleb Shchepa <gshchepa@mysql.com>
      > branch nick: 53804-5.1
      > timestamp: Fri 2010-05-21 22:47:32 +0400
      > message:
      >   Bug #53804: serious flaws in the alter database .. upgrade
      >               data directory name command
      >   
      >   The check_db_name function has been modified to validate tails of
      >   #mysql50#-prefixed database names for compliance with MySQL 5.0
      >   database name encoding rules (the check_table_name function call
      >   has been reused).
      3a80ab21
    • sunanda's avatar
      Backport into build-201006221614-5.1.46sp1 · 543aea2f
      sunanda authored
      > ------------------------------------------------------------
      > revno: 3367 [merge]
      > revision-id: joro@sun.com-20100504140328-srxf3c088j2twnq6
      > parent: kristofer.pettersson@sun.com-20100503172109-f9hracq5pqsaomb1
      > parent: joro@sun.com-20100503151651-nakknn8amrapmdp7
      > committer: Georgi Kodinov <joro@sun.com>
      > branch nick: B53371-5.1-bugteam
      > timestamp: Tue 2010-05-04 17:03:28 +0300
      > message:
      >   Bug #53371: COM_FIELD_LIST can be abused to bypass table level grants.
      >   
      >   This is the 5.1 merge and extension of the fix.
      >   The server was happily accepting paths in table name in all places a table
      >   name is accepted (e.g. a SELECT). This allowed all users that have some 
      >   privilege over some database to read all tables in all databases in all
      >   mysql server instances that the server file system has access to.
      >   Fixed by :
      >   1. making sure no path elements are allowed in quoted table name when
      >   constructing the path (note that the path symbols are still valid in table names
      >   when they're properly escaped by the server).
      >   2. checking the #mysql50# prefixed names the same way they're checked for
      >   path elements in mysql-5.0.
      > ------------------------------------------------------------
      > Use --include-merges or -n0 to see merged revisions.
      543aea2f
  12. 10 Jun, 2010 1 commit
    • Davi Arnaut's avatar
      Bug#42733: Type-punning warnings when compiling MySQL -- · fd4b3c6c
      Davi Arnaut authored
                  strict aliasing violations.
      
      One somewhat major source of strict-aliasing violations and
      related warnings is the SQL_LIST structure. For example,
      consider its member function `link_in_list` which takes
      a pointer to pointer of type T (any type) as a pointer to
      pointer to unsigned char. Dereferencing this pointer, which
      is done to reset the next field, violates strict-aliasing
      rules and might cause problems for surrounding code that
      uses the next field of the object being added to the list.
      
      The solution is to use templates to parametrize the SQL_LIST
      structure in order to deference the pointers with compatible
      types. As a side bonus, it becomes possible to remove quite
      a few casts related to acessing data members of SQL_LIST.
      
      sql/handler.h:
        Use the appropriate template type argument.
      sql/item.cc:
        Remove now-unnecessary cast.
      sql/item_subselect.cc:
        Remove now-unnecessary casts.
      sql/item_sum.cc:
        Use the appropriate template type argument.
        Remove now-unnecessary cast.
      sql/mysql_priv.h:
        Move SQL_LIST structure to sql_list.h
        Use the appropriate template type argument.
      sql/sp.cc:
        Remove now-unnecessary casts.
      sql/sql_delete.cc:
        Use the appropriate template type argument.
        Remove now-unnecessary casts.
      sql/sql_derived.cc:
        Remove now-unnecessary casts.
      sql/sql_lex.cc:
        Remove now-unnecessary casts.
      sql/sql_lex.h:
        SQL_LIST now takes a template type argument which must
        match the type of the elements of the list. Use forward
        declaration when the type is not available, it is used
        in pointers anyway.
      sql/sql_list.h:
        Rename SQL_LIST to SQL_I_List. The template parameter is
        the type of object that is stored in the list.
      sql/sql_olap.cc:
        Remove now-unnecessary casts.
      sql/sql_parse.cc:
        Remove now-unnecessary casts.
      sql/sql_prepare.cc:
        Remove now-unnecessary casts.
      sql/sql_select.cc:
        Remove now-unnecessary casts.
      sql/sql_show.cc:
        Remove now-unnecessary casts.
      sql/sql_table.cc:
        Remove now-unnecessary casts.
      sql/sql_trigger.cc:
        Remove now-unnecessary casts.
      sql/sql_union.cc:
        Remove now-unnecessary casts.
      sql/sql_update.cc:
        Remove now-unnecessary casts.
      sql/sql_view.cc:
        Remove now-unnecessary casts.
      sql/sql_yacc.yy:
        Remove now-unnecessary casts.
      storage/myisammrg/ha_myisammrg.cc:
        Remove now-unnecessary casts.
      fd4b3c6c
  13. 27 May, 2010 1 commit
    • Dmitry Lenev's avatar
      A 5.1-only version of fix for bug #46947 "Embedded SELECT · 59d58220
      Dmitry Lenev authored
      without FOR UPDATE is causing a lock".
      
      SELECT statements with subqueries referencing InnoDB tables
      were acquiring shared locks on rows in these tables when they
      were executed in REPEATABLE-READ mode and with statement or
      mixed mode binary logging turned on.
      
      This was a regression which were introduced when fixing
      bug 39843.
      
      The problem was that for tables belonging to subqueries
      parser set TL_READ_DEFAULT as a lock type. In cases when
      statement/mixed binary logging at open_tables() time this
      type of lock was converted to TL_READ_NO_INSERT lock at
      open_tables() time and caused InnoDB engine to acquire
      shared locks on reads from these tables. Although in some
      cases such behavior was correct (e.g. for subqueries in
      DELETE) in case of SELECT it has caused unnecessary locking.
      
      This patch implements minimal version of the fix for the
      specific problem described in the bug-report which supposed
      to be not too risky for pushing into 5.1 tree.
      The 5.5 tree already contains a more appropriate solution
      which also addresses other related issues like bug 53921
      "Wrong locks for SELECTs used stored functions may lead
      to broken SBR".
      
      This patch tries to solve the problem by ensuring that
      TL_READ_DEFAULT lock which is set in the parser for
      tables participating in subqueries at open_tables()
      time is interpreted as TL_READ_NO_INSERT or TL_READ.
      TL_READ is used only if we know that this is a SELECT
      and that this particular table is not used by a stored
      function.
      
      Test coverage is added for both InnoDB and MyISAM.
      
      This patch introduces an "incompatible" change in locking
      scheme for subqueries used in SELECT ... FOR UPDATE and
      SELECT .. IN SHARE MODE.
      
      In 4.1 (as well as in 5.0 and 5.1 before fix for bug 39843)
      the server would use a snapshot InnoDB read for subqueries
      in SELECT FOR UPDATE and SELECT .. IN SHARE MODE statements,
      regardless of whether the binary log is on or off.
      
      If the user required a different type of read (i.e. locking
      read), he/she could request so explicitly by providing FOR
      UPDATE/IN SHARE MODE clause for each individual subquery.
      
      The patch for bug 39843 broke this behaviour (which was not
      documented or tested), and started to use locking reads for
      all subqueries in SELECT ... FOR UPDATE/IN SHARE MODE.
      This patch restores 4.1 behaviour.
      
      This patch should be mostly null-merged into 5.5 tree.
      
      mysql-test/include/check_concurrent_insert.inc:
        Added auxiliary script which allows to check if statement
        reading table allows concurrent inserts in it.
      mysql-test/include/check_no_concurrent_insert.inc:
        Added auxiliary script which allows to check that statement
        reading table doesn't allow concurrent inserts in it.
      mysql-test/include/check_no_row_lock.inc:
        Added auxiliary script which allows to check if statement
        reading table doesn't take locks on its rows.
      mysql-test/include/check_shared_row_lock.inc:
        Added auxiliary script which allows to check if statement
        reading table takes shared locks on some of its rows.
      mysql-test/r/bug39022.result:
        After bug #46947 'Embedded SELECT without FOR UPDATE is
        causing a lock' was fixed test case for bug 39022 has to
        be adjusted in order to trigger execution path on which
        original problem was encountered.
      mysql-test/r/innodb_mysql_lock2.result:
        Added coverage for handling of locking in various cases when
        we read data from InnoDB tables (includes test case for
        bug #46947 'Embedded SELECT without FOR UPDATE is causing a
        lock').
      mysql-test/r/lock_sync.result:
        Added coverage for handling of locking in various cases when
        we read data from MyISAM tables.
      mysql-test/t/bug39022.test:
        After bug #46947 'Embedded SELECT without FOR UPDATE is
        causing a lock' was fixed test case for bug 39022 has to
        be adjusted in order to trigger execution path on which
        original problem was encountered.
      mysql-test/t/innodb_mysql_lock2.test:
        Added coverage for handling of locking in various cases when
        we read data from InnoDB tables (includes test case for
        bug #46947 'Embedded SELECT without FOR UPDATE is causing a
        lock').
      mysql-test/t/lock_sync.test:
        Added coverage for handling of locking in various cases when
        we read data from MyISAM tables.
      sql/mysql_priv.h:
        Function read_lock_type_for_table() now takes pointers to
        LEX and TABLE_LIST elements as its arguments since to
        correctly determine lock type it needs to know what
        statement is being performed and whether table element for
        which lock type to be determined belongs to prelocking list.
      sql/sql_base.cc:
        Changed read_lock_type_for_table() to return a weak TL_READ
        type of lock in cases when we are executing SELECT (and so
        won't update tables directly) and table doesn't belong to
        statement's prelocking list and thus can't be used by a
        stored function. It is OK to do so since in this case table
        won't be used by statement or function call which will be
        written to the binary log, so serializability requirements
        for it can be relaxed.
        One of results from this change is that SELECTs on InnoDB
        tables no longer takes shared row locks for tables which
        are used in subqueries (i.e. bug #46947 is fixed).
        Another result is that for similar SELECTs on MyISAM tables
        concurrent inserts are allowed.
        In order to implement this change signature of
        read_lock_type_for_table() function was changed to
        take pointers to LEX and TABLE_LIST objects.
      sql/sql_update.cc:
        Function read_lock_type_for_table() now takes pointers to
        LEX and TABLE_LIST elements as its arguments since to
        correctly determine lock type it needs to know what
        statement is being performed and whether table element for
        which lock type to be determined belongs to prelocking list.
      59d58220
  14. 26 May, 2010 1 commit
    • Igor Babaev's avatar
      Changed the fixes for the following bugs: · 13c736f5
      Igor Babaev authored
      Bug #39022: completed
      Bug #39653: reverted as invalid
      Bug #45640: ameliorated, simplified, optimized
      Bug #48483: completed
      Bug #49324: improved
      Bug #51242/52336: reverted, applied a real fix.
      13c736f5
  15. 21 May, 2010 1 commit
    • Gleb Shchepa's avatar
      Bug #53804: serious flaws in the alter database .. upgrade · 014d35a7
      Gleb Shchepa authored
                  data directory name command
      
      The check_db_name function has been modified to validate tails of
      #mysql50#-prefixed database names for compliance with MySQL 5.0
      database name encoding rules (the check_table_name function call
      has been reused).
      
      
      mysql-test/r/renamedb.result:
        Updated test case.
      mysql-test/r/upgrade.result:
        Test case for bug #53804.
      mysql-test/t/renamedb.test:
        Updated test case.
      mysql-test/t/upgrade.test:
        Test case for bug #53804.
      sql/mysql_priv.h:
        Bug #53804: serious flaws in the alter database .. upgrade
                    data directory name command
        
        The check_mysql50_prefix has been added.
      sql/sql_table.cc:
        Bug #53804: serious flaws in the alter database .. upgrade
                    data directory name command
        
        - The check_mysql50_prefix has been added.
        - The check_n_cut_mysql50_prefix function has been refactored
        to share code with new check_mysql50_prefix function.
      sql/table.cc:
        Bug #53804: serious flaws in the alter database .. upgrade
                    data directory name command
        
        The check_db_name function has been modified to validate tails of
        #mysql50#-prefixed database names for compliance with MySQL 5.0
        database name encoding rules.
      014d35a7
  16. 09 May, 2010 1 commit
  17. 03 May, 2010 1 commit
    • Kristofer Pettersson's avatar
      Bug#50373 --secure-file-priv="" · bf1887fa
      Kristofer Pettersson authored
      Iterative patch improvement. Previously committed patch
      caused wrong result on Windows. The previous patch also
      broke secure_file_priv for symlinks since not all file
      paths which must be compared against this variable are
      normalized using the same norm.
      
      The server variable opt_secure_file_priv wasn't
      normalized properly and caused the operations
      LOAD DATA INFILE .. INTO TABLE ..
      and
      SELECT load_file(..)
      to do different interpretations of the 
      --secure-file-priv option.
           
      The patch moves code to the server initialization
      routines so that the path always is normalized
      once and only once.
            
      It was also intended that setting the option
      to an empty string should be equal to 
      lifting all previously set restrictions. This
      is also fixed by this patch.
      
      
      mysql-test/r/loaddata.result:
        * Removed test code which will currently break the much used --mem feature of mtr.
      mysql-test/t/loaddata.test:
        * Removed test code which will currently break the much used --mem feature of mtr.
      sql/item_strfunc.cc:
        * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
      sql/mysql_priv.h:
        * Added signature for is_secure_file_path()
      sql/mysqld.cc:
        * New function for checking if a path compatible with the secure path restriction.
        * Added initialization of the opt_secure_file_priv variable.
      sql/sql_class.cc:
        * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
      sql/sql_load.cc:
        * Replaced string comparing code on opt_secure_file_priv with an interface which guarantees that both file paths are normalized using the same norm on all platforms.
      bf1887fa
  18. 31 Mar, 2010 1 commit
  19. 19 Mar, 2010 1 commit
    • Andrei Elkin's avatar
      Bug #51648 DBUG_SYNC_POINT is not defined on all platforms and mtr cant pre-check that · 700fca4c
      Andrei Elkin authored
      DBUG_SYNC_POINT has at least one strong limitation that it's not defined
      on all platforms. It has issues cooperating with @@debug.
      All in all its functionality is superseded by DEBUG_SYNC facility and
      there is no reason to maintain the old less flexible one.
      
      Fixed with adding debug_sync_set_action() function as a facility to set up
      a sync-action in the server sources code and re-writing existing simulations
      (found 3) to use it.
      Couple of tests have been reworked as well.
      
      The patch offers a pattern for setting sync-points in replication threads
      where the standard DEBUG_SYNC does not suffice to reach goals.
      
      
      
      
      
      mysql-test/extra/rpl_tests/rpl_get_master_version_and_clock.test:
        rewriting the test from GET_LOCK()-based to DEBUG_SYNC-based;
        a pattern of usage DEBUG_SYNC for replication testing is provided.
      mysql-test/suite/rpl/r/rpl_get_master_version_and_clock.result:
        results are changed.
      mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test:
        rewriting the test from GET_LOCK()-based to DEBUG_SYNC-based;
        limiting the test to run only with MIXED binlog-format as the test last
        some 10 secs sensitively contributing to the total of tests run.
      mysql-test/suite/rpl/t/rpl_show_slave_running.test:
        rewriting the test from GET_LOCK()-based to DEBUG_SYNC-based.
      sql/debug_sync.cc:
        adding debug_sync_set_action() function as a facility to set up
        a sync-action in the server sources code.
      sql/debug_sync.h:
        externalizing debug_sync_set_action().
      sql/item_func.cc:
        purging sources from DBUG_SYNC_POINT.
      sql/mysql_priv.h:
        purging sources from DBUG_SYNC_POINT.
      sql/slave.cc:
        rewriting failure simulations to base on DEBUG_SYNC rather than GET_LOCK()-based DBUG_SYNC_POINT.
      sql/sql_repl.cc:
        removing an orphan failure simulation line because no counterpart in tests existing.
      700fca4c
  20. 17 Mar, 2010 1 commit
    • Mattias Jonsson's avatar
      Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with · 5a21306e
      Mattias Jonsson authored
      concurrent I_S query
      
      There were two problem:
      1) MYSQL_LOCK_IGNORE_FLUSH also ignored name locks
      2) there was a race between abort_and_upgrade_locks and
         alter_close_tables
         (i.e. remove_table_from_cache and
          close_data_files_and_morph_locks)
      
      Which allowed the table to be opened with MYSQL_LOCK_IGNORE_FLUSH flag
      resulting in renaming a partition that was already in use,
      which could cause the table to be unusable.
      
      Solution was to not allow IGNORE_FLUSH to skip waiting for
      a named locked table.
      
      And to not release the LOCK_open mutex between the
      calls to remove_table_from_cache and
      close_data_files_and_morph_locks by merging the functions
      abort_and_upgrade_locks and alter_close_tables.
      
      mysql-test/suite/parts/r/partition_debug_sync_innodb.result:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Added test result
      mysql-test/suite/parts/t/partition_debug_sync_innodb-master.opt:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Added test option
      mysql-test/suite/parts/t/partition_debug_sync_innodb.test:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Added test file
      sql/authors.h:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Time to be acknowledged :)
      sql/ha_partition.cc:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Added DEBUG_SYNC for deterministic testing
      sql/mysql_priv.h:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Renamed function since merging alter_close_tables into
        abort_and_upgrade_lock.
      sql/sql_base.cc:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Changed MYSQL_LOCK_IGNORE_FLUSH to not ignore name locks
        (open_placeholder).
        
        Merged alter_close_tables into abort_and_upgrade_locks
        (and added _and_close_table to the name)
        to not release LOCK_open between remove_table_from_cache
        and close_data_files_and_morph_locks.
        
        Added DEBUG_SYNC for deterministic testing.
      sql/sql_partition.cc:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Removed alter_close_tables, (merged it into
        abort_and_upgrad_lock) so that LOCK_open never is released
        between remove_table_from_cache and
        close_data_files_and_morph_locks.
      sql/sql_show.cc:
        Bug#50561: ALTER PARTITIONS does not have adequate lock, breaks with
        concurrent I_S query
        
        Added DEBUG_SYNC for deterministic testing
      5a21306e
  21. 10 Feb, 2010 1 commit
    • Michael Widenius's avatar
      When one does a drop table, the indexes are not flushed to disk before drop... · c7b97d14
      Michael Widenius authored
      When one does a drop table, the indexes are not flushed to disk before drop anymore (with MyISAM/Maria)
      myisam-recover options changed from OFF to 'DEFAULT' to get less change of data loss when using MyISAM.
      (The disadvantage is that changed MyISAM tables will be checked at access time; Use --myisam-recover=OFF for old behavior)
      Don't call extra(HA_EXTRA_FORCE_REOPEN) in ALTER TABLE if table is locked as this will mark table as crashed!
      Added assert to detect if we accidently would use MyISAM versioning in MySQL
      
      include/my_base.h:
        Mark NOT_USED as USED, as we now use this as a flag to not call extra()
      mysql-test/mysql-test-run.pl:
        Don't write all options when there is something wrong with the arguments
      mysql-test/r/sp-destruct.result:
        Add missing flush of mysql.proc (as the test copied live tables)
      mysql-test/r/variables.result:
        myisam-recover options changed to 'default'
      mysql-test/r/view.result:
        Don't show create time in result
      mysql-test/suite/maria/t/maria-recovery2-master.opt:
        Don't run test with myisam-recover (as this produces extra warnings during simulated death)
      mysql-test/t/sp-destruct.test:
        Add missing flush of mysql.proc (as the test copied live tables)
      mysql-test/t/view.test:
        Don't show create time in result
      sql/lock.cc:
        Added marker if table was deleted to argument list
      sql/mysql_priv.h:
        Added marker if table was deleted to argument list
      sql/mysqld.cc:
        myisam-recover options changed from OFF to 'DEFAULT' to get less change of data loss when using MyISAM
        Allow one to specify OFF as argument to myisam-recover (was default before but one couldn't specify it)
      sql/sql_base.cc:
        Mark if table is going to be deleted
      sql/sql_delete.cc:
        Mark if table is going to be deleted
      sql/sql_table.cc:
        Mark if table is going to be deleted
        Don't call extra(HA_EXTRA_FORCE_REOPEN) in ALTER TABLE if table is locked as this will mark table as crashed!
      sql/table.cc:
        Signal to handler if table is getting deleted as part of getting droped from table cache.
      sql/table.h:
        Added marker if table is going to be deleted.
      storage/maria/ha_maria.cc:
        Don't search for transaction handler if file is not transactional or outside of transaction
        (Fixed possible core dump)
      storage/maria/ma_blockrec.c:
        Don't write changed information if table is going to be deleted.
      storage/maria/ma_close.c:
        Don't write changed information if table is going to be deleted.
      storage/maria/ma_extra.c:
        Mark tables that are deleted as crased, to ensure good behavior on restart if we suddenly crash.
      storage/maria/ma_locking.c:
        Cleanup
      storage/maria/ma_recovery.c:
        We need trnman to be inited during redo phase (to be able to open tables checked with maria_chk)
      storage/maria/maria_def.h:
        Added marker if table is going to be deleted.
      storage/myisam/mi_close.c:
        Don't write changed information if table is going to be deleted.
      storage/myisam/mi_extra.c:
        Mark tables that are deleted as crased, to ensure good behavior on restart if we suddenly crash.
      storage/myisam/mi_open.c:
        Added assert to detect if we accidently would use MyISAM versioning in MySQL
      storage/myisam/myisamdef.h:
        Added marker if table is going to be deleted.
      c7b97d14
  22. 09 Feb, 2010 1 commit
    • Magne Mahre's avatar
      Bug#47974 'TYPE=storage_engine' is deprecated and will be · 2b012a3e
      Magne Mahre authored
                removed in MySQL 6.0
      
      CREATE TABLE... TYPE= returns the warning "The syntax 
      'TYPE=storage_engine' is deprecated and will be removed in 
      MySQL 6.0. Please use 'ENGINE=storage_engine' instead" 
      
      This syntax is deprecated already from version 5.4.4, so
      the message has been changed.
      
      In addition, the deprecation macro was changed to reflect
      the ServerPT decision not to include version number in the
      warning message.
      
      A number of test result files have been changed as a
      consequence of the change in the deprecation macro.
      2b012a3e
  23. 06 Feb, 2010 1 commit
    • Gleb Shchepa's avatar
      Bug #45640: optimizer bug produces wrong results · ccac0a6e
      Gleb Shchepa authored
      Grouping by a subquery in a query with a distinct aggregate
      function lead to a wrong result (wrong and unordered
      grouping values).
      
      There are two related problems:
      
      1) The query like this:
      
         SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) c
         FROM t1 GROUP BY aa
      
      returned wrong result, because the outer reference "t1.a"
      in the subquery was substituted with the Item_ref item.
      
      The Item_ref item obtains data from the result_field object
      that refreshes once after the end of each group. This data
      is not applicable to filesort since filesort() doesn't care
      about groups (and doesn't update result_field objects with
      copy_fields() and so on). Also that data is not applicable
      to group separation algorithm: end_send_group() checks every
      record with test_if_group_changed() that evaluates Item_ref
      items, but it refreshes those Item_ref-s only after the end
      of group, that is a vicious circle and the grouped column
      values in the output are shifted.
      
      Fix: if
             a) we grouping by a subquery and
             b) that subquery has outer references to FROM list
                of the grouping query,
           then we substitute these outer references with
           Item_direct_ref like references under aggregate
           functions: Item_direct_ref obtains data directly
           from the current record.
      
      2) The query with a non-trivial grouping expression like:
      
         SELECT (SELECT t1.a) aa, COUNT(DISTINCT b) c
         FROM t1 GROUP BY aa+0
      
      also returned wrong result, since JOIN::exec() substitutes
      references to top-level aliases in SELECT list with Item_copy
      caching items. Item_copy items have same refreshing policy
      as Item_ref items, so the whole groping expression with
      Item_copy inside returns wrong result in filesort() and
      end_send_group().
      
      Fix: include aliased items into GROUP BY item tree instead
           of Item_ref references to them.
      
      
      
      mysql-test/r/group_by.result:
        Test case for bug #45640
      mysql-test/t/group_by.test:
        Test case for bug #45640
      sql/item.cc:
        Bug #45640: optimizer bug produces wrong results
        
        Item_field::fix_fields() has been modified to resolve
        aliases in GROUP BY item trees into aliased items instead
        of Item_ref items.
      sql/item.h:
        Bug #45640: optimizer bug produces wrong results
        
        - Item::find_item_processor() has been introduced.
        - Item_ref::walk() has been modified to apply processors
          to itself too (not only to referenced item).
      sql/mysql_priv.h:
        Bug #45640: optimizer bug produces wrong results
        
        fix_inner_refs() has been modified to accept group_list
        parameter.
      sql/sql_lex.cc:
        Bug #45640: optimizer bug produces wrong results
        
        Initialization of st_select_lex::group_fix_field has
        been added.
      sql/sql_lex.h:
        Bug #45640: optimizer bug produces wrong results
        
        The st_select_lex::group_fix_field field has been introduced
        to control alias resolution in Itef_fied::fix_fields.
      sql/sql_select.cc:
        Bug #45640: optimizer bug produces wrong results
        
        - The fix_inner_refs function has been modified to treat
          subquery outer references like outer fields under aggregate
          functions, if they are included in GROUP BY item tree.
        
        - The find_order_in_list function has been modified to
          fix Item_field alias fields included in the GROUP BY item
          trees in a special manner.
      ccac0a6e
  24. 27 Jan, 2010 1 commit
    • Magne Mahre's avatar
      WL#5182 Remove more deprecated 4.1/5.0 features · 25af09b9
      Magne Mahre authored
            
      WL#5182 is a follow-up to WL#5154, deprecating a few more options
      and system variables.
      
      
      client/client_priv.h:
        The warning message has been changed to not include
        a specific version number in the text.
      client/mysql.cc:
        --no-tee is deprecated
      client/mysqldump.c:
        --all is deprecated
        -a now points to create-options
      mysql-test/r/mysqlbinlog.result:
        Warning text changed
      mysql-test/suite/rpl/r/rpl_row_mysqlbinlog.result:
        Warning text changed
      sql/mysql_priv.h:
        The warning message has been changed to not include
        a specific version number in the text.
      sql/mysqld.cc:
        --use-symbolic-links is deprecated
        -s now points to --symbolic-links
        --warnings is deprecated
        -W now points to --log-warnings
                
        myisam_max_extra_sort_file_size is deprecated
        record_buffer is deprecated
                
        --log-update is deprecated
        --sql-bin-update-same is deprecated
        --skip-locking is deprecated
        --skip-symlink is deprecated
        --enable-locking is deprecated
        --delay-key-write-for-all-tables is deprecated
      25af09b9
  25. 24 Jan, 2010 1 commit
  26. 22 Jan, 2010 1 commit
    • Sergey Glukhov's avatar
      Bug#49501 Inefficient information_schema check (system collation), addon · 5f106ea2
      Sergey Glukhov authored
      removed wrongly introduced strlen calls
      
      
      sql/events.cc:
        removed wrongly introduced strlen calls
      sql/mysql_priv.h:
        removed wrongly introduced strlen calls
      sql/repl_failsafe.cc:
        removed wrongly introduced strlen calls
      sql/sql_db.cc:
        removed wrongly introduced strlen calls
      sql/sql_parse.cc:
        removed wrongly introduced strlen calls
      sql/sql_show.cc:
        removed wrongly introduced strlen calls
      5f106ea2
  27. 21 Jan, 2010 1 commit
    • Magne Mahre's avatar
      WL#5154 Remove deprecated 4.1 features · b50244fb
      Magne Mahre authored
      Several items said to be deprecated in the 4.1 manual
      have never been removed.  This worklog adds deprecation
      warnings when these items are used, and warns the user 
      that the items will be removed in MySQL 5.6.
      
      A couple of previously deprecation decision have been
      reversed (see single file comments)
      
      
      
      client/client_priv.h:
        Macro similar to the one in the server (mysql_priv.h)
        for printing a deprecation warning message
      client/mysql.cc:
        no-auto-rehash  will not be deprecated
        skip-line-numbers will not be deprecated
        skip-column-names will not be deprecated
        no-pager is deprecated
        set-variable is deprecated
        no-named-commands is deprecated
      client/mysqladmin.cc:
        set-variable is deprecated
      client/mysqlbinlog.cc:
        position is deprecated
      client/mysqldump.c:
        first-slave is deprecated
        no-set-names is deprecated
        set-variable is deprecated
      mysql-test/r/mysqlbinlog.result:
        Adding the [Warning] to the test case, just to show that the
        deprecation works.
        The test case will be changed in Celosia to use --start-position.
      mysys/my_getopt.c:
        set-variable (include -O) is deprecated
      scripts/mysqld_multi.sh:
        Warning for mysqld_multi
      sql/mysqld.cc:
        default-collation is deprecated
        log-bin-trust-routine-creators is deprecated
        set-variable is deprecated
        default-character-set is deprecated
        safe-show-database is deprecated
      sql/share/errmsg.txt:
        Added version number for sql_log_update deprecation message.
      b50244fb
  28. 19 Jan, 2010 1 commit
    • Sergey Glukhov's avatar
      Bug#49501 Inefficient information_schema check (system collation) · 3a95b614
      Sergey Glukhov authored
      added check_length optimization for I_S_NAME comparison
      
      
      sql/event_data_objects.cc:
        added check_length optimization for I_S_NAME comparison
      sql/events.cc:
        added check_length optimization for I_S_NAME comparison
      sql/mysql_priv.h:
        added check_length optimization for I_S_NAME comparison
      sql/repl_failsafe.cc:
        added check_length optimization for I_S_NAME comparison
      sql/sql_db.cc:
        added check_length optimization for I_S_NAME comparison
      sql/sql_parse.cc:
        added check_length optimization for I_S_NAME comparison
      sql/sql_show.cc:
        added check_length optimization for I_S_NAME comparison
      sql/sql_view.cc:
        added check_length optimization for I_S_NAME comparison
      sql/table.cc:
        added check_length optimization for I_S_NAME comparison
      3a95b614
  29. 08 Oct, 2009 1 commit
  30. 06 Oct, 2009 1 commit
    • unknown's avatar
      BUG#39249 Maria:query cache returns out of date results · 0996b34e
      unknown authored
      BUG#41098 Query Cache returns wrong result with concurent insert
      
      BUILD/SETUP.sh:
        test build without query cache setup
      BUILD/compile-pentium-debug-max-no-qc:
        test build without query cache
      sql/mysql_priv.h:
        removed double declaration
      storage/maria/ha_maria.cc:
        query cache invalidation fixed
      storage/maria/ma_state.c:
        query cache invalidation fixed
      storage/maria/maria_def.h:
        last transaction ID added
        invalidation fixed
      storage/myisam/ha_myisam.cc:
        invalidation fixed
      storage/myisam/mi_locking.c:
        invalidation fixed
      storage/myisam/myisamdef.h:
        invalidation fixed
      0996b34e
  31. 25 Sep, 2009 1 commit
    • Mattias Jonsson's avatar
      Bug#32430: 'show innodb status' causes errors · 6504c3eb
      Mattias Jonsson authored
      Invalid (old?) table or database name in logs
      
      Problem was still not completely fixed, due to
      qouting.
      
      This is the server side only fix (in explain_filename),
      the change from filename_to_tablename to use explain_filename
      in the InnoDB code must be done before the bug is
      fixed.
      
      
      mysql-test/include/have_not_innodb_plugin.inc:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        Added include file to allow test for only the
        'old' built-in innodb engine
      mysql-test/r/not_true.require:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        Added require to match 'not' TRUE
      mysql-test/r/partition_innodb_builtin.result:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        New result file for partitioning specific to
        the 'old' built-in innodb engine
      mysql-test/r/partition_innodb_plugin.result:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        New result file for partitioning specific to
        the new plugin innodb engine
      mysql-test/t/disabled.def:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        Disabling the new test until the fix is
        included in the InnoDB source too.
      mysql-test/t/partition_innodb_builtin.test:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        New test file for partitioning specific to
        the 'old' built-in innodb engine
      mysql-test/t/partition_innodb_plugin.test:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        New test file for partitioning specific to
        the new plugin innodb engine
      sql/mysql_priv.h:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        Added thd as a parameter to explain_filename
        to be able to use the correct quote character
      sql/sql_table.cc:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        Changed explain_filename, so that it does qouting
        correctly according to the sessions qoute char.
      6504c3eb
  32. 03 Sep, 2009 1 commit
    • Michael Widenius's avatar
      Updated documentation files to reflect MariaDB and not the Maria storage engine or MySQL · 24ed0ad3
      Michael Widenius authored
      Added (rewritten) patch from Percona to get extended statistics in slow.log:
      - Added handling of 'set' variables to set_var.cc. Changed sql_mode to use this
      - Added extra logging to slow log of 'Thread_id, Schema, Query Cache hit, Rows sent and Rows examined'
      - Added optional logging to slow log, through log_slow_verbosity, of query plan statistics
      - Added new user variables log_slow_rate_limit, log_slow_verbosity, log_slow_filter
      - Added log-slow-file as synonym for 'slow-log-file', as most slow-log variables starts with 'log-slow'
      - Added log-slow-time as synonym for long-query-time
      Some trivial MyISAM optimizations:
      - In prepare for drop, flush key blocks
      - Don't call mi_lock_database if my_disable_locking is used
      
      KNOWN_BUGS.txt:
        Updated file to reflect MariaDB and not the Maria storage engine
      README:
        Updated file to reflect MariaDB
      mysql-test/r/log_slow.result:
        Test new options for slow query log
      mysql-test/r/variables.result:
        Updated result (old version cut of things at 79 characters)
      mysql-test/t/log_slow.test:
        Test new options for slow query log
      sql/Makefile.am:
        Added log_slow.h
      sql/event_data_objects.cc:
        Removed not needed test for enable_slow_log (is done when the flag is tested elsewhere)
      sql/events.cc:
        Use the general make_set() function instead of 'symbolic_mode_representation'
      sql/filesort.cc:
        Added status for used query plans
      sql/log.cc:
        Reset counters if no query_length (from Percona's patch; Not sure if needed, but can do no harm)
        Added extra logging to slow log of 'Thread_id, Schema, Query Cache hit, Rows sent and Rows examined'
        Added optional logging to slow log, through log_slow_verbosity, of query plan statistics
        Fixed wrong test of error condition
      sql/log_slow.h:
        Defines and variables for log_slow_verbosity and log_slow_filter
      sql/mysql_priv.h:
        Include log_slow.h
      sql/mysqld.cc:
        Added new user variables log_slow_rate_limit, log_slow_verbosity, log_slow_filter
        Added log-slow-file as synonym for 'slow-log-file', as most slow-log variables starts with 'log-slow'
        Added log-slow-time as synonym for long-query-time
        Added note that one should use log-slow-filter instead of log-slow-admin-statements
        Updated comment from 'slow_query_log_file'
      sql/set_var.cc:
        Added long_slow_time as synonym for long_query_time
        Added new user variables log_slow_rate_limit, log_slow_verbosity, log_slow_filter
        dded handling of 'set' variables to set_var.cc. Changed sql_mode to use this
      sql/set_var.h:
        - Added handling of 'set' variables. Changed sql_mode to use this
      sql/slave.cc:
        Use global filter also for slaves
      sql/sp_head.cc:
        Simplify saving of general_slow_log state
        Use the general make_set() function instead of 'symbolic_mode_representation'
      sql/sql_cache.cc:
        Added status for used query plans
      sql/sql_class.cc:
        Remember/restore query_plan_flags over complex statements
      sql/sql_class.h:
        Added variables to handle extended slow log statistics
      sql/sql_parse.cc:
        Added status for used query plans
        Added test for filtering slow_query_log
      sql/sql_select.cc:
        Added status for used query plans
      sql/sql_show.cc:
        Use the general make_set() function instead of 'symbolic_mode_representation'
      sql/strfunc.cc:
        Report first error (not last) if something is wrong in a set
        Removed compiler warning
      storage/myisam/mi_extra.c:
        In prepare for drop, flush key blocks (speed optimization)
      storage/myisam/mi_locking.c:
        Don't call mi_lock_database if my_disable_locking is used (speed optimization)
      24ed0ad3
  33. 24 Aug, 2009 1 commit
    • Sergey Petrunya's avatar
      MWL#17: Table elimination: last fixes · 0913cda0
      Sergey Petrunya authored
      - Add an @@optimizer_switch flag for table_elimination for debug build
      - Better comments 
      
      mysql-test/t/index_merge_myisam.test:
        MWL#17: Table elimination: last fixes
        - Add an @@optimizer_switch flag for table_elimination for debug build
      sql/mysql_priv.h:
        MWL#17: Table elimination: last fixes
        - Add an @@optimizer_switch flag for table_elimination for debug build
      sql/mysqld.cc:
        MWL#17: Table elimination: last fixes
        - Add an @@optimizer_switch flag for table_elimination for debug build
      0913cda0
  34. 07 Aug, 2009 1 commit
    • Mattias Jonsson's avatar
      Bug#32430: 'show innodb status' causes errors · 7f36fd25
      Mattias Jonsson authored
      Invalid (old?) table or database name in logs
      
      Post push patch.
      
      Bug was that a non partitioned table file was not
      converted to system_charset, (due to table_name_len was not set).
      
      Also missing DBUG_RETURN.
      
      And Innodb adds quotes after calling the function,
      so I added one more mode where explain_filename does not
      add quotes. But it still appends the [sub]partition name
      as a comment.
      
      Also caught a minor quoting bug, the character '`' was
      not quoted in the identifier. (so 'a`b' was quoted as `a`b`
      and not `a``b`, this is mulitbyte characters aware.)
      
      sql/mysql_priv.h:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        Added an unquoted mode
      sql/share/errmsg.txt:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        Removed the quoting of identifier, only leaving the translated word.
      sql/sql_table.cc:
        Bug#32430: 'show innodb status' causes errors
        Invalid (old?) table or database name in logs
        
        Fixed quoting of '`'
        Added DBUG_RETURN.
        Corrected table_name_len.
        Added unquoted mode.
      7f36fd25
  35. 24 Jul, 2009 1 commit
  36. 10 Jun, 2009 1 commit
    • Vladislav Vaintroub's avatar
      Backport WL#3653 to 5.1 to enable bundled innodb plugin. · dd86e2cd
      Vladislav Vaintroub authored
      Remove custom DLL loader code from innodb plugin code, use 
      symbols exported from mysqld.
      
      
      storage/innodb_plugin/handler/ha_innodb.cc:
        Remove a Win32 workaround for current_thd.
        The original  problem that innodb plugin used
        value of TLS variable across DLL boundaries is 
        solved in MySQL server (current_thd is a function
        not TLS variable now)
      storage/innodb_plugin/handler/handler0alter.cc:
        Remove custom delay loader
      storage/innodb_plugin/handler/handler0vars.h:
        Remove custom delay loader
      storage/innodb_plugin/handler/i_s.cc:
        Remove custom delay loader
      storage/innodb_plugin/handler/win_delay_loader.cc:
        Remove custom delay loader
      storage/innodb_plugin/plug.in:
        Remove commented out MYSQL_PLUGIN_STATIC, 
        CMake would not parse that correctly
      dd86e2cd
  37. 05 Jun, 2009 1 commit
  38. 02 Jun, 2009 1 commit
    • Mattias Jonsson's avatar
      Bug#32430:'show innodb status' causes errors Invalid (old?) table · d0c9d4bf
      Mattias Jonsson authored
      or database name in logs
      
      Problem was that InnoDB used filenam_to_tablename,
      which do not handle partitions (due to the '#' in
      the filename).
      
      Solution is to add a new function for explaining
      what the filename means: explain_filename.
      It expands the database, table, partition and subpartition
      parts and uses errmsg.txt for localization.
      It also converts from my_charset_filename to system_charset_info
      (i.e. human readable form for non ascii characters).
        http://lists.mysql.com/commits/70370
      
      2773 Mattias Jonsson	2009-03-25
      
      It has three different output styles.
      
      NOTE: This is the server side ONLY part (introducing the explain_filename
      function). There will be a patch for InnoDB using this function to solve
      the bug.
      
      sql/mysql_priv.h:
        Bug#32430:'show innodb status' causes errors Invalid (old?) table
        or database name in logs
        
        Added EXPLAIN_FILENAME_MAX_EXTRA_LENGTH, enum_explain_filename_mode
        and explain_filename.
      sql/share/errmsg.txt:
        Bug#32430:'show innodb status' causes errors Invalid (old?) table
        or database name in logs
        
        Added localization names for Database, Table, Partition, Subpartition
        Temporary and Renamed.
      sql/sql_table.cc:
        Bug#32430:'show innodb status' causes errors Invalid (old?) table
        or database name in logs
        
        Added explain_filename function for giving better information
        to the user about a specific table/partitions file.
      d0c9d4bf