An error occurred fetching the project authors.
  1. 09 Feb, 2009 1 commit
    • Sergey Glukhov's avatar
      Bug#42610 Dynamic plugin broken in 5.1.31 · 5d2a707d
      Sergey Glukhov authored
      added ignore-builtin-innodb option which disabled
      initialization of builtin InnoDB plugin
      
      mysql-test/r/innodb_ignore_builtin.result:
        test case
      mysql-test/t/innodb_ignore_builtin-master.opt:
        test case
      mysql-test/t/innodb_ignore_builtin.test:
        test case
      sql/mysql_priv.h:
        added ignore-builtin-innodb option which disabled
        initialization of builtin InnoDB plugin
      sql/mysqld.cc:
        added ignore-builtin-innodb option which disabled
        initialization of builtin InnoDB plugin
      sql/set_var.cc:
        added ignore-builtin-innodb option which disabled
        initialization of builtin InnoDB plugin
      sql/sql_plugin.cc:
        added ignore-builtin-innodb option which disabled
        initialization of builtin InnoDB plugin
      5d2a707d
  2. 14 Jan, 2009 1 commit
    • Ramil Kalimullin's avatar
      Fix for · d4b81e11
      Ramil Kalimullin authored
      bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
      triggers
      and
      #41385: Crash when attempting to repair a #mysql50# upgraded table
      with triggers.
      
      Problem:
      1. trigger code didn't assume a table name may have
      a "#mysql50#" prefix, that may lead to a failing ASSERT().
      2. "ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME" failed
      for databases with "#mysql50#" prefix if any trigger.
      3. mysqlcheck --fix-table-name didn't use UTF8 as a default
      character set that resulted in (parsing) errors for tables with
      non-latin symbols in their names and definitions of triggers.
      
      Fix:
      1. properly handle table/database names with "#mysql50#" prefix.
      2. handle --default-character-set mysqlcheck option;
      if mysqlcheck is launched with --fix-table-name or --fix-db-name
      set default character set to UTF8 if no --default-character-set
      option given.
      
      Note: if given --fix-table-name or --fix-db-name option,
      without --default-character-set mysqlcheck option
      default character set is UTF8.
      
      
      client/mysqlcheck.c:
        Fix for
        bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
        triggers
        and
        #41385: Crash when attempting to repair a #mysql50# upgraded table
        with triggers.
          - check and set default charset if --default-character-set option
            given.
          - set default charset to "utf8" if there's
            --fix-table-name or --fix-db-name and no --default-character-set.
      mysql-test/r/mysqlcheck.result:
        Fix for
        bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
        triggers
        and
        #41385: Crash when attempting to repair a #mysql50# upgraded table
        with triggers.
          - test result.
      mysql-test/t/mysqlcheck.test:
        Fix for
        bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
        triggers
        and
        #41385: Crash when attempting to repair a #mysql50# upgraded table
        with triggers.
          - test case.
      sql/mysql_priv.h:
        Fix for
        bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
        triggers
        and
        #41385: Crash when attempting to repair a #mysql50# upgraded table
        with triggers.
          - check_n_cut_mysql50_prefix() introduced.
      sql/sql_table.cc:
        Fix for
        bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
        triggers
        and
        #41385: Crash when attempting to repair a #mysql50# upgraded table
        with triggers.
          - tablename_to_filename() code split into 2 parts
          - check_n_cut_mysql50_prefix() introduced to cut #mysql50# prefixes,
            used in the trigger code as well.
      sql/sql_trigger.cc:
        Fix for
        bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
        triggers
        and
        #41385: Crash when attempting to repair a #mysql50# upgraded table
        with triggers.
          - Table_triggers_list::check_n_load() - checking triggers assume
            a table/database name given may have "#mysql50#" prefix in some cases.
          - Table_triggers_list::change_table_name_in_triggers() -
            create .TRG file in new database directory and delete it in old one,
            as they may differ in case of
            "ALTER DATABASE ... UPGRADE DATA DIRECTORY NAME"
          - Table_triggers_list::change_table_name_in_trignames() - remove stale .TRN
            files in #mysql50#dbname directory in case of database upgrade
          - Table_triggers_list::change_table_name() - allow changing trigger's
            database in case of its upgrading
      sql/sql_trigger.h:
        Fix for
        bug#33094: Error in upgrading from 5.0 to 5.1 when table contains
        triggers
        and
        #41385: Crash when attempting to repair a #mysql50# upgraded table
        with triggers.
          - new old_db_name parameter added in
            Table_triggers_list::change_table_name_in_trignames() and
            Table_triggers_list::change_table_name_in_triggers()
      d4b81e11
  3. 13 Jan, 2009 1 commit
    • Davi Arnaut's avatar
      Bug#36326: nested transaction and select · a9aaa09b
      Davi Arnaut authored
      The problem is that the query cache stores packets containing
      the server status of the time when the cached statement was run.
      This might lead to a wrong transaction status in the client side
      if a statement is cached during a transaction and is later served
      outside a transaction context (and vice-versa).
      
      The solution is to take into account the transaction status when
      storing in and serving from the query cache.
      
      mysql-test/r/innodb_cache.result:
        Update test case result.
      mysql-test/r/query_cache.result:
        Add test case result for Bug#36326
      mysql-test/t/query_cache.test:
        Add test case for Bug#36326
      sql/mysql_priv.h:
        Add new flags.
      sql/sql_cache.cc:
        Remember the transaction and autocommit status stored in the packet.
      tests/mysql_client_test.c:
        Add test case for Bug#36326
      a9aaa09b
  4. 23 Dec, 2008 2 commits
    • Sergey Glukhov's avatar
      Bug#41079 information_schema.schema_privileges is limited to 7680 records. · 5f8ed9c9
      Sergey Glukhov authored
      The problem is that we cannot insert new record into memory table
      when table size exceeds max memory table size.
      The fix is to use schema_table_store_record() function which
      converts memory table into MyISAM in case of table size exceeding.
      
      Note:
      There is no test case for this bug, the reason is that
      1. The code  that was added already is checked(i.e. works) with existing tests
      2. Correct work of schema_table_store_record() is checked with other test cases
         (information_schema tests)
      So new code is fully covered with existing test cases.
      
      
      sql/mysql_priv.h:
        make schema_table_store_record() function global
      sql/sql_acl.cc:
        The problem is that we cannot insert new record into memory table
        when table size exceeds max memory table size.
        The fix is to use schema_table_store_record() function which
        converts memory table into MyISAM in case of table size exceeding.
      sql/sql_show.cc:
        make schema_table_store_record() function global
      5f8ed9c9
    • Sergey Glukhov's avatar
      Bug#37575 UCASE fails on monthname · 43ee0f9f
      Sergey Glukhov authored
      The MONTHNAME/DAYNAME functions
      returns binary string, so the LOWER/UPPER functions
      are not effective on the result of MONTHNAME/DAYNAME call.  
      Character set of the MONTHNAME/DAYNAME function
      result has been changed to connection character set.
      
      
      include/m_ctype.h:
        added my_charset_repertoire function
      mysql-test/r/ctype_ucs.result:
        test result
      mysql-test/r/func_time.result:
        test result
      mysql-test/t/ctype_ucs.test:
        test case
      mysql-test/t/func_time.test:
        test case
      sql/item_timefunc.cc:
        Item_func_monthname::fix_length_and_dec and
        Item_func_dayname::fix_length_and_dec methods have been
        modified to use connection character set
      sql/item_timefunc.h:
        Item_func_monthname::fix_length_and_dec and
        Item_func_dayname::fix_length_and_dec methods have been
        modified to use connection character set
      sql/mysql_priv.h:
        added max_month_name_length, max_day_name_length fields into MY_LOCALE struct
      sql/mysqld.cc:
        The test_lc_time_sz function controls modifications
        of the locale database in debugging mode.
      sql/sql_locale.cc:
        initialization of max_month_name_length, max_day_name_length fields
      strings/ctype.c:
        added my_charset_repertoire function
      43ee0f9f
  5. 04 Dec, 2008 1 commit
    • Vladislav Vaintroub's avatar
      Bug#38522: 5 seconds delay when closing application using embedded server · ec5ce9b0
      Vladislav Vaintroub authored
                        
      The problem here is that embedded server starts handle_thread manager 
      thread  on mysql_library_init() does not stop it on mysql_library_end().
      At shutdown, my_thread_global_end() waits for thread count to become 0,
      but since we did not stop the thread it will give up after 5 seconds.
                   
      Solution is to move shutdown for handle_manager thread from kill_server()
      (mysqld specific) to clean_up() that is used by both embedded and mysqld.
                  
      This patch also contains some refactorings - to avoid duplicate code,
      start_handle_manager() and stop_handle_manager() functions are introduced.
      Unused variables are eliminated. handle_manager does not rely on global
      variable abort_loop anymore to stop (abort_loop is not set for embedded).
                  
      Note: Specifically on Windows and when using DBUG version of libmysqld, 
      the complete solution requires removing obsolete code my_thread_init() 
      from my_thread_var(). This has a side effect that a DBUG statement 
      after my_thread_end() can cause thread counter to be incremented, and 
      embedded will hang for some seconds. Or worse, my_thread_init() will 
      crash if critical sections have been deleted by the global cleanup 
      routine that runs in a different thread. 
      
      This patch also fixes and revert prior changes for Bug#38293 
      "Libmysqld crash in mysql_library_init if language file missing".
      
      Root cause of the crash observed in Bug#38293  was bug in my_thread_init() 
      described above
      
      
      
      
      client/mysql.cc:
        sql_protocol_typelib is not exported from libmysqld
        (does not make sense either)
        thus excluded from embedded client
      dbug/dbug.c:
        revert changes for Bug#38293
      include/my_dbug.h:
        revert changes for Bug#38293
      libmysql/libmysql.c:
        Removed DBUG_POP call, because when called after my_end(), will access
        THR_key_mysys that is already deleted. The result of pthread_get_specific
        is not predictable in this case and hence DBUG_POP can crash.
      libmysqld/examples/CMakeLists.txt:
        Revert changes for Bug#38293.
      libmysqld/lib_sql.cc:
        code to start handle manager is factored out into 
        start_handle_manager() function
      libmysqld/libmysqld.def:
        Revert changes for Bug #38293
        Remove excessive exports from libmysqld, export what API documents.
      mysys/my_thr_init.c:
        Remove windows-DLL-specific workaround for something (old code, no documentation for
        what specifically). The problem is that even after my_thread_end() is finished, 
        DBUG statement can initiate my_thread_init(). This does not happen anywhere else and 
        should not happen on  Windows either.
      sql/mysql_priv.h:
        - new functions start_handle_manager() and stop_handle_manager()
        - move manager_thread_in_use  variable to sql_manager.cc and made
        it static
        - remove manager_status, as it is unused
      sql/mysqld.cc:
        Code to start/stop handle_manager thread is factored out into start_handle_manager()
      ec5ce9b0
  6. 27 Nov, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#37460 Assertion failed: !table->file || table->file->inited == handler::NONE · b241dc21
      Sergey Glukhov authored
      enable uncacheable flag if we update a view with check option
      and check option has a subselect, otherwise, the check option
      can be evaluated after the subselect was freed as independent
      (See full_local in JOIN::join_free())
      
      
      mysql-test/r/subselect.result:
        test result
      mysql-test/t/subselect.test:
        test case
      sql/mysql_priv.h:
        added UNCACHEABLE_CHECKOPTION flag
      sql/sql_update.cc:
        enable uncacheable flag if we update a view with check option
        and check option has a subselect, otherwise, the check option
        can be evaluated after the subselect was freed as independent
        (See full_local in JOIN::join_free())
      b241dc21
  7. 26 Nov, 2008 1 commit
    • Tatiana A. Nurnberg's avatar
      Bug#37553: MySql Error Compare TimeDiff & Time · 9910b867
      Tatiana A. Nurnberg authored
      We pretended that TIMEDIFF() would always return positive results;
      this gave strange results in comparisons of the TIMEDIFF(low,hi)<TIME(0)
      type that rendered a negative result, but still gave false in comparison.
      We also inadvertantly dropped the sign when converting times to
      decimal.
      
      CAST(time AS DECIMAL) handles signs of the times correctly.
      TIMEDIFF() marked up as signed. Time/date comparison code switched to
      signed for clarity.
      
      mysql-test/r/func_sapdb.result:
        show that time-related comparisons work with negative
        time values now.
        show that converting time to DECIMAL no longer drops sign.
      mysql-test/t/func_sapdb.test:
        show that time-related comparisons work with negative
        time values now.
        show that converting time to DECIMAL no longer drops sign.
      sql/item_cmpfunc.cc:
        signed returns
      sql/item_cmpfunc.h:
        signed now (time/date < > =)
      sql/item_func.cc:
        signed now
      sql/item_timefunc.h:
        Functions such as TIMEDIFF() return signed results!
        The file-comments pretended we were doing that all along, anyway...
      sql/my_decimal.cc:
        heed sign when converting time to my_decimal;
        times may actually be negative!
        Needed for SELECT CAST(time('-73:42:12') AS DECIMAL);
      sql/mysql_priv.h:
        using signed for dates and times now
      9910b867
  8. 10 Nov, 2008 1 commit
  9. 23 Oct, 2008 1 commit
  10. 02 Oct, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#35924 DEFINER should be stored 'quoted' in I_S · fe51a7ce
      Sergey Glukhov authored
      The '@' symbol can not be used in the host name according to rfc952.
      The fix:
      added function check_host_name(LEX_STRING *str)
      which checks that all symbols in host name string are valid and
      host name length is not more than max host name length
      (just moved check_string_length() function from the parser into check_host_name()).
      
      
      mysql-test/r/create.result:
        test result
      mysql-test/t/create.test:
        test case
      sql/mysql_priv.h:
        added function check_host_name(LEX_STRING *str)
      sql/sql_parse.cc:
        added function check_host_name(LEX_STRING *str)
        which checks that all symbols in host name string are valid and
        host name length is not more than max host name length(HOSTNAME_LENGTH).
      sql/sql_yacc.yy:
        using newly added function check_host_name()
      fe51a7ce
  11. 29 Sep, 2008 1 commit
    • Davi Arnaut's avatar
      Bug#34306: Can't make copy of log tables when server binary log is enabled · 8d6cbf20
      Davi Arnaut authored
      The problem is that when statement-based replication was enabled,
      statements such as INSERT INTO .. SELECT FROM .. and CREATE TABLE
      .. SELECT FROM need to grab a read lock on the source table that
      does not permit concurrent inserts, which would in turn be denied
      if the source table is a log table because log tables can't be
      locked exclusively.
      
      The solution is to not take such a lock when the source table is
      a log table as it is unsafe to replicate log tables under statement
      based replication. Furthermore, the read lock that does not permits
      concurrent inserts is now only taken if statement-based replication
      is enabled and if the source table is not a log table.
      
      include/thr_lock.h:
        Introduce yet another lock type that my get upgraded depending
        on the binary log format. This is not a optimal solution but
        can be easily improved later.
      mysql-test/r/log_tables.result:
        Add test case result for Bug#34306
      mysql-test/suite/binlog/r/binlog_stm_row.result:
        Add test case result for Bug#34306
      mysql-test/suite/binlog/t/binlog_stm_row.test:
        Add test case for Bug#34306
      mysql-test/t/log_tables.test:
        Add test case for Bug#34306
      sql/lock.cc:
        Assert that TL_READ_DEFAULT is not a real lock type.
      sql/mysql_priv.h:
        Export new function.
      sql/mysqld.cc:
        Remove using_update_log.
      sql/sql_base.cc:
        Introduce function that returns the appropriate read lock type
        depending on how the statement is going to be replicated. It will
        only take a TL_READ_NO_INSERT log if the binary is enabled and the
        binary log format is statement-based and the table is not a log table.
      sql/sql_parse.cc:
        Remove using_update_log.
      sql/sql_update.cc:
        Use new function to choose read lock type.
      sql/sql_yacc.yy:
        The lock type is now decided at open_tables time. This old behavior was
        actually misleading as the binary log format can be dynamically switched
        and this would not change for statements that have already been parsed
        when the binary log format is changed (ie: prepared statements).
      8d6cbf20
  12. 26 Sep, 2008 1 commit
    • Michael Widenius's avatar
      Fixed for Bug #39248 Maria: INSERT ON DUPLICATE KEY UPDATE gives error if using a view · 11342570
      Michael Widenius authored
      The bug was that prepared statements didn't downgrade TL_WRITE_CONCURRENT properly
      
      mysql-test/r/maria.result:
        Added test case
      mysql-test/t/maria.test:
        Added test case
      sql/mysql_priv.h:
        Make upgrade_lock_type() global
      sql/sql_base.cc:
        Fixed indentation
      sql/sql_insert.cc:
        Make upgrade_lock_type() global
      sql/sql_prepare.cc:
        Call upgrade_lock_type_for_insert() to get right lock to use
      sql/sql_view.cc:
        Indentation fix
      11342570
  13. 15 Sep, 2008 1 commit
    • Martin Skold's avatar
      bug #31231 mysql_alter_table() tries to drop a non-existing table · 97989d10
      Martin Skold authored
      bug#31233 mysql_alter_table() fails to drop UNIQUE KEY
      
      mysql-test/suite/ndb/r/ndb_alter_table.result:
        bug#31233 mysql_alter_table() fails to drop UNIQUE KEY: added test cases
      mysql-test/suite/ndb/t/ndb_alter_table.test:
        bug#31233 mysql_alter_table() fails to drop UNIQUE KEY: added test cases
      sql/ha_ndbcluster.cc:
        bug#31233 mysql_alter_table() fails to drop UNIQUE KEY: Removed check for non-pk
        tables, not needed when mysql_alter_table checks apropriate flags
      sql/mysql_priv.h:
        bug #31231  mysql_alter_table() tries to drop a non-existing table: added FRM_ONLY
        flag
      sql/sql_table.cc:
        bug #31231  mysql_alter_table() tries to drop a non-existing table
        Don't invoke handler for tables defined with FRM_ONLY flag.
        bug#31233 mysql_alter_table() fails to drop UNIQUE KEY
        When a table is defined without an explicit primary key
        mysql will choose the first found unique index defined over
        non-nullable fields (if such an index exists). This means
        that if such an index is added (the first) or dropped (the last)
        through an alter table, this equals adding or dropping a primary key.
        The implementation for on-line add/drop index did not consider
        this semantics. This patch ensures that only handlers with the
         correctly defined flags (see handler.h for explanation of the flags):
        HA_ONLINE_ADD_PK_INDEX
        HA_ONLINE_ADD_PK_INDEX_NO_WRITES
        HA_ONLINE_DROP_PK_INDEX
        HA_ONLINE_DROP_PK_INDEX_NO_WRITES
        are invoked for such on-line operations. All others handlers must
        perform a full (offline) alter table.
      97989d10
  14. 25 Aug, 2008 1 commit
    • Sergey Glukhov's avatar
      Bug#37428 Potential security issue with UDFs - linux shellcode execution. · 43847871
      Sergey Glukhov authored
      plugin_dir option backported from 5.1
      
      mysql-test/r/udf.result:
        result fix
      sql/mysql_priv.h:
        opt_plugin_dir and opt_plugin_dir_ptr declared.
      sql/mysqld.cc:
        'plugin_dir' option added
      sql/set_var.cc:
        'plugin_dir' option added.
      sql/sql_udf.cc:
        opt_plugin_dir added to the udf->dl path. Warn if it's not specified.
      sql/unireg.h:
        PLUGINDIR defined.
      43847871
  15. 22 Aug, 2008 1 commit
    • Alexey Botchkov's avatar
      Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY. · 69aa70b6
      Alexey Botchkov authored
                  
                  test_if_data_home_dir fixed to look into real path.
                  Checks added to mi_open for symlinks into data home directory.
      
      per-file messages:
              include/my_sys.h
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                my_is_symlink interface added
              include/myisam.h
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                myisam_test_invalid_symlink interface added
              myisam/mi_check.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                mi_open_datafile calls modified
              myisam/mi_open.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                code added to mi_open to check for symlinks into data home directory.
                mi_open_datafile now accepts 'original' file path to check if it's
                an allowed symlink.
              myisam/mi_static.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                myisam_test_invlaid_symlink defined
              myisam/myisamchk.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                mi_open_datafile call modified
              myisam/myisamdef.h
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                mi_open_datafile interface modified - 'real_path' parameter added
              mysql-test/r/symlink.test
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                error codes corrected as some patch now rejected pointing inside datahome
              mysql-test/r/symlink.result
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                error messages corrected in the result
              mysys/my_symlink.c
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                my_is_symlink() implementsd
                my_realpath() now returns the 'realpath' even if a file isn't a symlink
              sql/mysql_priv.h
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                test_if_data_home_dir interface
              sql/mysqld.cc
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                myisam_test_invalid_symlik set with the 'test_if_data_home_dir'
              sql/sql_parse.cc
                Bug#32167 another privilege bypass with DATA/INDEX DIRECTORY.
                
                error messages corrected
                test_if_data_home_dir code fixed
      69aa70b6
  16. 21 Aug, 2008 1 commit
    • Alexander Barkov's avatar
      Additional fix for bug#31455 (rpl decoder) · 8f6294bc
      Alexander Barkov authored
      - Implementing --base64-format=decode-rows, to display
        SQL-alike decoded row events without their BINLOG statements.
      - Adding --base64-format=decode-rows into tests when
        calling mysqlbinlog to avoid non-deterministic results
      - Removing resetting of last_table_id in "RESET MASTER",
        which appeared to be dangerous.
      8f6294bc
  17. 20 Aug, 2008 1 commit
    • Alexander Barkov's avatar
      Bug#31455 mysqlbinlog don't print user readable info about RBR events · fcc91895
      Alexander Barkov authored
      Implementing -v command line parameter to mysqlbinlog
      to decode and print row events.
      
      mysql-test/include/mysqlbinlog_row_engine.inc
      mysql-test/r/mysqlbinlog_row.result
      mysql-test/r/mysqlbinlog_row_big.result
      mysql-test/r/mysqlbinlog_row_innodb.result
      mysql-test/r/mysqlbinlog_row_myisam.result
      mysql-test/r/mysqlbinlog_row_trans.result
      mysql-test/t/mysqlbinlog_row.test
      mysql-test/t/mysqlbinlog_row_big.test
      mysql-test/t/mysqlbinlog_row_innodb.test
      mysql-test/t/mysqlbinlog_row_myisam.test
      mysql-test/t/mysqlbinlog_row_trans.test
        Adding tests 
      
      client/Makefile.am
        Adding new files to symlink
        
      client/mysqlbinlog.cc
        Adding -v option
      
      sql/log_event.cc
        Impelentations of the new methods
      
      sql/log_event.h
        Declaration of the new methods and member
      
      sql/mysql_priv.h
        Adding new function prototype
      
      sql/rpl_tblmap.cc
        Adding pre-processor conditions 
      
      sql/rpl_tblmap.h
        Adding pre-processor conditions 
      
      sql/rpl_utility.h
        Adding pre-processor conditions 
      
      sql/sql_base.cc
        Adding reset_table_id_sequence() function.
      
      sql/sql_repl.cc
        Resetting table_id on "RESET MASTER"
        
      .bzrignore
        Ignoring new symlinked files
      fcc91895
  18. 11 Aug, 2008 1 commit
    • Mattias Jonsson's avatar
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that · 3faf4f76
      Mattias Jonsson authored
      partition is corrupt
      
      The main problem was that ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR
      PARTITION took another code path (over mysql_alter_table instead of
      mysql_admin_table) which differs in two ways:
      1) alter table opens the tables in a different way than admin tables do
         resulting in returning with error before it tried the command
      2) alter table does not start to send any diagnostic rows to the client
         which the lower admin functions continue to use -> resulting in
         assertion crash
      
      The fix:
      Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION to use
      the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE t.
      Adding check in mysql_admin_table to setup the partition list for
      which partitions that should be used.
      
      
      Partitioned tables will still not work with
      REPAIR TABLE/PARTITION USE_FRM, since that requires moving partitions
      to tables, REPAIR TABLE t USE_FRM, and check that the data still
      fulfills the partitioning function and then move the table back to
      being a partition.
      
      NOTE: I have removed the following functions from the handler
      interface:
      analyze_partitions, check_partitions, optimize_partitions,
      repair_partitions
      Since they are not longer needed.
      THIS ALTERS THE STORAGE ENGINE API
      
      mysql-test/r/handler_innodb.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added a note result row.
      mysql-test/r/innodb.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added a note result row.
      mysql-test/r/innodb_mysql.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added a note result row.
      mysql-test/r/partition.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
        tables.
      mysql-test/r/trigger-trans.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added a note result row.
      mysql-test/suite/ndb/r/ndb_partition_key.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
        tables.
      mysql-test/suite/ndb/t/ndb_partition_key.test:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
        tables.
      mysql-test/suite/parts/inc/partition_alter4.inc:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
        tables.
      mysql-test/suite/parts/r/partition_alter4_innodb.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
        tables.
      mysql-test/suite/parts/r/partition_alter4_myisam.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
        tables.
      mysql-test/suite/rpl/r/rpl_failed_optimize.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added a note result row.
      mysql-test/suite/rpl/r/rpl_innodb_mixed_dml.result:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added a note result row.
      mysql-test/t/partition.test:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Updated after fixing ANALYZE/CHECK/OPTIMIZE/REPAIR partitioned
        tables.
      sql/ha_partition.cc:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added a function for returning admin commands result rows
        Updated handle_opt_partitions to handle admin commands result rows,
        and some error filtering (as mysql_admin_table do).
        
        Removed the functions analyze/check/optimize/repair_partitions
        since they have no longer any use.
      sql/ha_partition.h:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Removed analyze/check/optimize/repair_partitions since they
        are no longer are needed.
      sql/handler.cc:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Removed analyze/check/optimize/repair_partitions since they
        are no longer are needed.
      sql/handler.h:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Removed analyze/check/optimize/repair_partitions since they
        are no longer are needed.
      sql/mysql_priv.h:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added set_part_state for reuse of code in mysql_admin_table.
        (Originally fond in sql/sql_partition.cc:prep_alter_part_table)
      sql/protocol.cc:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added one assert and a debug print.
      sql/sql_partition.cc:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Refactored code for setting up partition state, set_part_state,
        now used in both prep_alter_part_table and
        sql_table.cc:mysql_admin_table.
        Removed code for handling ANALYZE/CHECK/OPTIMIZE/REPAIR partitions,
        since it is now handled by mysql_admin_table.
      sql/sql_table.cc:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Added functionality in mysql_admin_table to work with partitioned
        tables.
        Fixed a possible assertion bug for HA_ADMIN_TRY_ALTER
        (If analyze would output a row, it fails since the row was already
        started).
      sql/sql_yacc.yy:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Remapped ALTER TABLE t ANALYZE/CHECK/OPTIMIZE/REPAIR PARTITION
        to use the same code path as ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
        instead of taking the ALTER TABLE path.
        Added reset of alter_info for ANALYZE/CHECK/OPTIMIZE/REPAIR TABLE
        since it is now used by partitioned tables.
      storage/myisam/mi_check.c:
        Bug#20129: ALTER TABLE ... REPAIR PARTITION ... complains that
        partition is corrupt
        
        Changed warning message from "Found X parts  Should be: Y parts"
        to "Found X key parts. Should be Y", since it could be confusing
        with partitioned tables.
      3faf4f76
  19. 24 Jul, 2008 1 commit
    • Kristofer Pettersson's avatar
      Bug#38002 table_cache consumes too much memory with blobs · 4e8b41ee
      Kristofer Pettersson authored
           
      Tables in the table definition cache are keeping a cache buffer for blob
      fields which can consume a lot of memory.
          
      This patch introduces a maximum size threshold for these buffers.
      
      
      sql/sql_base.cc:
        Added function free_field_buffers_larger_than to reclaim memory from blob
        field buffers too large to be cached.
      sql/table.cc:
        Added function free_field_buffers_larger_than
      4e8b41ee
  20. 15 Jul, 2008 1 commit
    • Sergey Petrunia's avatar
      BUG#35478: sort_union() returns bad data when sort_buffer_size is hit · 04037f54
      Sergey Petrunia authored
      - In QUICK_INDEX_MERGE_SELECT::read_keys_and_merge: when we got table->sort from Unique,
        tell init_read_record() not to use rr_from_cache() because a) rowids are already sorted
        and b) it might be that the the data is used by filesort(), which will need record rowids
        (which rr_from_cache() cannot provide).
      - Fully de-initialize the table->sort read in QUICK_INDEX_MERGE_SELECT::get_next(). This fixes BUG#35477.
      (bk trigger: file as fix for BUG#35478).
      
      sql/filesort.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - make find_all_keys() use quick->get_next() instead of init_read_record(r)/r.read_record() calls
        - added dbug printout
      sql/mysql_priv.h:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/opt_range.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - In QUICK_INDEX_MERGE_SELECT::read_keys_and_merge: when we got table->sort from Unique,
          tell init_read_record() not to use rr_from_cache() because a) rowids are already sorted
          and b) it might be that the the data is used by filesort(), which will need record rowids
          (which rr_from_cache() cannot provide).
        - Fully de-initialize the table->sort read in QUICK_INDEX_MERGE_SELECT::get_next().
      sql/records.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added disable_rr_cache parameter to init_read_record
        - Added comment
      sql/sql_acl.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_delete.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_help.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_select.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_table.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_udf.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      sql/sql_update.cc:
        BUG#35478: sort_union() returns bad data when sort_buffer_size is hit
        - Added parameter to init_read_record
      04037f54
  21. 10 Jul, 2008 1 commit
    • Mattias Jonsson's avatar
      Bug#37402: Mysql cant read partitioned table with capital letter in the name · 4454c9cd
      Mattias Jonsson authored
      Problem was that ha_partition had HA_FILE_BASED flag set
      (since it uses a .par file), but after open it uses the first partitions
      flags, which results in different case handling for create and for
      open.
      
      Solution was to change the underlying partition name so it was consistent.
      (Only happens when lower_case_table_names = 2, i.e. Mac OS X and storage
      engines without HA_FILE_BASED, like InnoDB and Memory.)
      
      (Recommit after adding rename of check_lowercase_names to
      get_canonical_filename, and moved it from handler.h to mysql_priv.h)
      
      NOTE: if a mixed case name for a partitioned table was created when
      lower_case_table_name = 2 it should be renamed or dropped before using
      the updated version (See bug#37402 for more info)
      
      mysql-test/include/have_case_insensitive_file_system.inc:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        Added include file.
      mysql-test/include/have_lowercase0.inc:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        moved case insensitive file system to a new file, leaving only
        lower_case_table_names.
      mysql-test/include/have_lowercase2.inc:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        Added include file.
      mysql-test/lib/mtr_report.pl:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        Removed a duplicate row and suppressed warning about setting
        lower_case_table_names to 2 on case sensitive file systems.
      mysql-test/r/case_insensitive_file_system.require:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        Added requirement file.
      mysql-test/r/lowercase0.require:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        moved case insensitive file system to a new file, leaving only
        lower_case_table_names.
      mysql-test/suite/parts/inc/partition_mgm.inc:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New include file for testing partitioning management functions for different
        settings of lower_case_table_names.
      mysql-test/suite/parts/r/partition_mgm_lc0_archive.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc0_innodb.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc0_memory.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc0_myisam.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc0_ndb.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc1_archive.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc1_innodb.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc1_memory.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc1_myisam.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc1_ndb.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc2_archive.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc2_innodb.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc2_memory.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc2_myisam.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/r/partition_mgm_lc2_ndb.result:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New result file.
      mysql-test/suite/parts/t/partition_mgm_lc0_archive.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc0_innodb.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc0_memory.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc0_myisam.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc0_ndb.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc1_archive-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc1_archive.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc1_innodb-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc1_innodb.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc1_memory-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc1_memory.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc1_myisam-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc1_myisam.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc1_ndb-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc1_ndb.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc2_archive-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc2_archive.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc2_innodb-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc2_innodb.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc2_memory-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc2_memory.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc2_myisam-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc2_myisam.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/suite/parts/t/partition_mgm_lc2_ndb-master.opt:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New opt file.
      mysql-test/suite/parts/t/partition_mgm_lc2_ndb.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        New test file.
      mysql-test/t/lowercase_table3.test:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        Moved case sensitive file system to a specific inc-file instead of
        included in lowercase0.inc
      sql/ha_partition.cc:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        Problem was that ha_partition had HA_FILE_BASED set
        (since it uses a .par file), but after open it uses the first partitions
        table_flags(), which results in different case handling for create and for
        open.
        
        Solution was to change the underlying partition name so it was consistent.
        (Only happens when lower_case_table_names = 2, i.e. Mac OS X)
      sql/handler.cc:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        Renamed check_lowercase_names to get_canonical_filename, and exported it
        so that ha_partition.cc can use the function.
      sql/mysql_priv.h:
        Bug#37402: Mysql cant read partitioned table with capital letter in the name
        
        Renamed check_lowercase_names to get_canonical_filename, and exported it
        so that ha_partition.cc can use the function.
      4454c9cd
  22. 20 May, 2008 1 commit
    • unknown's avatar
      Bug#27430 "Crash in subquery code when in PS and table DDL changed after · b018aa9d
      unknown authored
      PREPARE": rename members, methods, classes to follow the spec 
      (a code review request)
      
      
      sql/mysql_priv.h:
        enum_metadata_type -> enum_table_ref_type
      sql/sp_head.cc:
        Metadata_version_observer -> Reprepare_observer
      sql/sql_base.cc:
        metadata -> table_ref
      sql/sql_class.cc:
        Replace an abstract interface with a concrete implementation.
      sql/sql_class.h:
        enum_metadata_type -> enum_table_ref_type
      sql/sql_prepare.cc:
        Move implementation of Execute_observer to sql_class.cc and
        rename the class to Reprepare_observer.
        Use getters instead of direct access to the members.
      sql/table.h:
        metadata -> table_ref
      b018aa9d
  23. 16 Apr, 2008 1 commit
    • unknown's avatar
      WL#4165 "Prepared statements: validation". · 0f128094
      unknown authored
      Add metadata validation to ~20 more SQL commands. Make sure that
      these commands actually work in ps-protocol, since until now they
      were enabled, but not carefully tested.
      Fixes the ml003 bug found by Matthias during internal testing of the
      patch.
      
      
      mysql-test/r/ps_ddl.result:
        Update test results (WL#4165)
      mysql-test/t/ps_ddl.test:
        Cover with tests metadata validation of 26 SQL statements.
      sql/mysql_priv.h:
        Fix the name in the comment.
      sql/sp_head.cc:
        Changed the way the observer is removed in case of stored procedures
        to support validation prepare stmt from "call p1(<expr>)": whereas
        tables used in the expression must be validated, substatements
        of p1 must not.
        The previous scheme used to silence the observer only in stored
        functions and triggers.
      sql/sql_class.cc:
        Now the observer is silenced in sp_head::execute(). Remove it from
        Sub_statement_state.
      sql/sql_class.h:
        Now the observer is silenced in sp_head::execute(). Remove it from
        Sub_statement_state.
      sql/sql_parse.cc:
        Add CF_REEXECUTION_FRAGILE to 20 more SQLCOMs that need it.
      sql/sql_prepare.cc:
        Add metadata validation to ~20 new SQLCOMs that need it.
        Fix memory leaks with expressions used in SHOW DATABASES and CALL
        (and prepared statements).
        We need to fix all expressions at prepare, since if these expressions
        use subqueries, there are one-time transformations of the parse
        tree that must be done at prepare. 
        List of fixed commands includes: SHOW TABLES, SHOW DATABASES,
        SHOW TRIGGERS, SHOW EVENTS, SHOW OPEN TABLES,SHOW KEYS, SHOW FIELDS, 
        SHOW COLLATIONS, SHOW CHARSETS, SHOW VARIABLES, SHOW TATUS, SHOW TABLE
        STATUS, SHOW PROCEDURE STATUS, SHOW FUNCTION STATUS, CALL.
        Add comment to set_parameters().
      sql/table.h:
        Update comments.
      0f128094
  24. 08 Apr, 2008 1 commit
    • unknown's avatar
      Tentative implementation of · 486e74c1
      unknown authored
      WL#4165 Prepared statements: validation 
      WL#4166 Prepared statements: automatic re-prepare
      Fixes
      Bug#27430 Crash in subquery code when in PS and table DDL changed after PREPARE
      Bug#27690 Re-execution of prepared statement after table was replaced with a view crashes
      Bug#27420 A combination of PS and view operations cause error + assertion on shutdown
      
      The basic idea of the patch is to keep track of table metadata between
      prepared statement prepare and execute. If some table used in the statement
      has changed, the prepared statement is re-prepared before execution.
      
      See WL#4165 and WL#4166 contents and comments in the code for details
      of the implementation.
      
      
      include/my_global.h:
        Remove 'register' keyword to avoid warnings when swapping large structures
        that don't fit into a register. Any modern compiler is capable of placing
        a variable in a register when that would benefit performance.
      mysql-test/r/ps_1general.result:
        Update test results: since now we re-prepare automatically,
        more correct results are produced in prepare-ddl-execute scenario.
      mysql-test/r/query_cache_merge.result:
        Ensure that the table definition cache is large enough for
        the test to pass in --ps-protocol
      mysql-test/r/trigger.result:
        Update test results to reflect automatic statement reprepare.
      mysql-test/t/disabled.def:
        Enable ps_ddl.test, which now passes.
      mysql-test/t/ps_1general.test:
        Since now we re-execute prepared statements after DDL successfully,
        change the test to produce repeatable results. Remove expectancy of
        an error in one place where now we automatically reprepare the prepared
        statement.
      mysql-test/t/query_cache_merge.test:
        Ensure the table definition cache is large enough for the test to pass
        in --ps-protocol
      mysql-test/t/trigger.test:
        Sinc
      sql/item.cc:
        Implement Item_param "copy" functionality, used at re-prepare of
        a prepared statement.
        We copy the type of the original parameter, and move the assigned value,
        if any. Sic, the value is "moved", since it can be quite big --
        e.g. in case we deal with a LONG DATA parameter.
        It's essential to move the value from the old parameter since
        at the time of re-prepare the client packet with the necessary information
        may be not available.
      sql/item.h:
        Declare a new method used for reprepare.
      sql/my_decimal.h:
        Implement "swap()" functionality of class my_decimal to be
        able to easily swap two decimal values.
      sql/mysql_priv.h:
        Declare enum_metadata_type.
      sql/mysqld.cc:
        Implement a status variable for the number of reprepared statements.
      sql/sql_base.cc:
        Implement metadata version validation.
      sql/share/errmsg.txt:
        Add two new error messages: ER_NEED_REPREPARE and ER_PS_REBIND.
        The first error (theoretically) never reaches the user.
        It is issued by the metadata validation framework when a metadata version
        has changed between prepare and execute. Later on it's intercepted
        and the statement is automatically re-prepared. Only if the error
        has occurred repeatedly MAX_REPREPARE_ATTEMTS (3) times do we
        return it to the user.
        
        The second error is issued when after re-prepare we discover
        that the metadata we sent over to the client using the binary
        protocol differs drammatically from the new result set metadata 
        that the reprepared statement produces (e.g. number of result
        set columns is different).
      sql/sql_class.cc:
        Implement metadata version validation framework.
      sql/sql_class.h:
        Declarations for metadata version validation framework.
      sql/sql_parse.cc:
        Mark commands for which we must invalidate and reprepare a prepared
        statement when metadata has changed.
      sql/sql_prepare.cc:
        Implement WL#4165 and WL#4166 (limited support of metadata validation
        and re-prepare).
      sql/table.h:
        Implement metadata validation.
      tests/mysql_client_test.c:
        Add a test case for WL#4166
      486e74c1
  25. 27 Mar, 2008 1 commit
    • unknown's avatar
      Bug#27219: Aggregate functions in ORDER BY. · 9e65582b
      unknown authored
      Mixing aggregate functions and non-grouping columns is not allowed in the
      ONLY_FULL_GROUP_BY mode. However in some cases the error wasn't thrown because
      of insufficient check.
      
      In order to check more thoroughly the new algorithm employs a list of outer
      fields used in a sum function and a SELECT_LEX::full_group_by_flag.
      Each non-outer field checked to find out whether it's aggregated or not and
      the current select is marked accordingly.
      All outer fields that are used under an aggregate function are added to the
      Item_sum::outer_fields list and later checked by the Item_sum::check_sum_func
      function.
      
      
      mysql-test/t/group_by.test:
        Added a test case for the bug#27219: Aggregate functions in ORDER BY.
      mysql-test/r/group_by.result:
        Added a test case for the bug#27219: Aggregate functions in ORDER BY.
      sql/sql_select.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        Implementation of new check for mixing non aggregated fields and aggregation
        function in the ONLY_FULL_GROUP_BY mode.
      sql/sql_lex.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        Initialization of the full_group_by_flag bitmap.
        SELECT_LEX::test_limit function doesn't reset ORDER BY
        clause anymore.
      sql/sql_lex.h:
        Bug#27219: Aggregate functions in ORDER BY.
        The full_group_by_flag is added to the SELECT_LEX class.
      sql/item_sum.h:
        Bug#27219: Aggregate functions in ORDER BY.
        The outer_fields list is added to the Item_sum class.
      sql/mysql_priv.h:
        Bug#27219: Aggregate functions in ORDER BY.
        Defined a set of constants used in the new check for mixing non aggregated
        fields and sum functions in the ONLY_FULL_GROUP_BY_MODE.
      sql/item_subselect.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        The Item_in_subselect::select_in_like_transformer function now drops
        ORDER BY clause in all selects in a subquery.
      sql/item_sum.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        Now the Item_sum::check_sum_func function now checks whether fields in the
        outer_fields list are aggregated or not and marks selects accordingly.
      sql/item.cc:
        Bug#27219: Aggregate functions in ORDER BY.
        Now the Item_field::fix_fields function checks whether the field is aggregated
        or not and marks its select_lex accordingly.
      9e65582b
  26. 21 Mar, 2008 1 commit
    • unknown's avatar
      Bug #26461: Intrinsic data type bool (1 byte) redefined to BOOL (4 bytes) · edd613be
      unknown authored
      The bool data type was redefined to BOOL (4 bytes on windows).
      Removed the #define and fixed some of the warnings that were uncovered
      by this.
      Note that the fix also disables 2 warnings :
      4800 : 'type' : forcing value to bool 'true' or 'false' (performance warning)
      4805: 'operation' : unsafe mix of type 'type' and type 'type' in operation
      
      These warnings will be handled in a separate bug, as they are performance related or bogus.
      
      Fixed to int the return type of functions that return more than 
      2 distinct values.
      
      
      CMakeLists.txt:
        Bug #26461: disable the C4800 and C4805 warnings temporarily
      include/config-win.h:
        Bug #26461: 
         - no need for this define for Windows.
         - windows C++ compilers have a bool type
      include/my_global.h:
        Bug #26461: removed bool_defined (no longer needed)
      sql/handler.h:
        Bug #26461: bool functions must return boolean values
      sql/mysql_priv.h:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/procedure.h:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_acl.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_acl.h:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_analyse.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_analyse.h:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_base.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_db.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_delete.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_load.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_parse.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_prepare.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      sql/sql_update.cc:
        Bug #26461: fixed return type of functions that return more than
        2 distinct values.
      edd613be
  27. 12 Mar, 2008 1 commit
    • unknown's avatar
      Fix for Bug#33507: Event scheduler creates more threads · f8d0ffeb
      unknown authored
      than max_connections -- which results in user lockout.
      
      The problem was that the variable thread_count that contains
      the number of active threads was interpreted as a number of
      active connections.
      
      The fix is to introduce a new counter for active connections.
      
      
      mysql-test/r/connect.result:
        A test case for Bug#33507: Event scheduler creates more threads
        than max_connections -- which results in user lockout.
      mysql-test/t/connect.test:
        A test case for Bug#33507: Event scheduler creates more threads
        than max_connections -- which results in user lockout.
      sql/mysql_priv.h:
        1. Polishing: login_connection() and end_connection() need not
           to be public.
        
        2. Introduce connection_count -- a variable to contain the number
           of active connections. It is protected by LOCK_connection_count.
      sql/mysqld.cc:
        Use connection_count to count active connections.
      sql/sql_connect.cc:
        1. Use connection_count to count active connections.
        2. Make login_connection(), end_connection() private for the module
        as they had to be.
      f8d0ffeb
  28. 29 Feb, 2008 1 commit
    • unknown's avatar
      Bug#32167 another privilege bypass with DATA/INDEX DIRECORY(ver 4.1,5.0) · 69289dbf
      unknown authored
      added new function test_if_data_home_dir() which checks that
      path does not contain mysql data home directory.
      Using of mysql data home directory in
      DATA DIRECTORY & INDEX DIRECTORY is disallowed.
      
      
      mysql-test/r/symlink.result:
        test result
      mysql-test/t/symlink.test:
        test case
      sql/mysql_priv.h:
        new variable mysql_unpacked_real_data_home
      sql/mysqld.cc:
        new variable mysql_unpacked_real_data_home
      sql/sql_parse.cc:
        added new function test_if_data_home_dir() which checks that
        path does not contain mysql data home directory.
        Using of mysql data home directory in
        DATA DIRECTORY & INDEX DIRECTORY is disallowed.
      69289dbf
  29. 28 Feb, 2008 1 commit
    • unknown's avatar
      Bug#32167 another privilege bypass with DATA/INDEX DIRECORY(3rd version for 5.1) · d04c177b
      unknown authored
      added new function test_if_data_home_dir() which checks that
      path does not contain mysql data home directory.
      Using of 'mysql data home'/'any db name' in
      DATA DIRECTORY & INDEX DIRECTORY is disallowed
      
      
      mysql-test/r/partition.result:
        test result
      mysql-test/r/partition_not_windows.result:
        result fix
      mysql-test/r/partition_symlink.result:
        result fix
      mysql-test/r/symlink.result:
        test result update
      mysql-test/t/partition.test:
        test case
      mysql-test/t/partition_not_windows.test:
        test case update
      mysql-test/t/partition_symlink.test:
        test case update
      mysql-test/t/symlink.test:
        test case
      sql/mysql_priv.h:
        new variable mysql_unpacked_real_data_home
      sql/mysqld.cc:
        new variable mysql_unpacked_real_data_home
      sql/partition_info.cc:
        new check_partition_dirs() which checks
        data directory and index directory for partition elements
      sql/partition_info.h:
        new check_partition_dirs() which checks
        data directory and index directory for partition elements
      sql/sql_parse.cc:
        added new function test_if_data_home_dir() which checks that
        path does not contain mysql data home directory.
        Using of 'mysql data home'/'any db name' in
        DATA DIRECTORY & INDEX DIRECTORY is disallowed
      d04c177b
  30. 22 Feb, 2008 2 commits
    • unknown's avatar
      Bug #34053: normal users can enable innodb_monitor logging · ea109791
      unknown authored
      The check_global_access() function was made available to InnoDB, but
      was not defined in the embedded server library.  InnoDB, as a plugin,
      is not recompiled when the embedded server is built.  This caused a
      link failure when compiling applications which use the embedded server.
      
      The fix here is to always define check_global_access() externally; in
      the embedded server case, it is defined to just return OK.
      
      Also, don't run the test case for this bug in embedded server.
      
      
      mysql-test/t/innodb_bug34053.test:
        Disable this test on embedded server - it tests privilege
        checks which are not in place there.
      sql/mysql_priv.h:
        Since check_global_access() may be used from some storage engine plugins
        (InnoDB, currently), and the plugins are not recompiled for the embedded
        server, it must be defined externally even for NO_EMBEDDED_ACCESS_CHECKS.
      sql/sql_parse.cc:
        Since check_global_access() may be used from some storage engine plugins
        (InnoDB, currently), and the plugins are not recompiled for the embedded
        server, it must be defined externally even for NO_EMBEDDED_ACCESS_CHECKS.
      ea109791
    • unknown's avatar
      Fix for Bug#30217: Views: changes in metadata behaviour · 367d37b2
      unknown authored
      between 5.0 and 5.1.
        
      The problem was that in the patch for Bug#11986 it was decided
      to store original query in UTF8 encoding for the INFORMATION_SCHEMA.
      This approach however turned out to be quite difficult to implement
      properly. The main problem is to preserve the same IS-output after
      dump/restore.
        
      So, the fix is to rollback to the previous functionality, but also
      to fix it to support multi-character-set-queries properly. The idea
      is to generate INFORMATION_SCHEMA-query from the item-tree after
      parsing view declaration. The IS-query should:
        - be completely in UTF8;
        - not contain character set introducers.
        
      For more information, see WL4052.
      
      
      mysql-test/include/ddl_i18n.check_views.inc:
        Add a test case for Bug#30217.
      mysql-test/r/ddl_i18n_koi8r.result:
        Update result file.
      mysql-test/r/ddl_i18n_utf8.result:
        Update result file.
      mysql-test/r/information_schema.result:
        Update result file.
      mysql-test/r/information_schema_db.result:
        Update result file.
      mysql-test/r/mysqldump.result:
        Update result file.
      mysql-test/r/show_check.result:
        Update result file.
      mysql-test/t/ddl_i18n_koi8r.test:
        Add a test case for Bug#30217.
      mysql-test/t/ddl_i18n_utf8.test:
        Add a test case for Bug#30217.
      mysql-test/t/mysqldump.test:
        Add a test case for Bug#30217.
      sql/ha_ndbcluster.cc:
        Add a parameter to print().
      sql/item.cc:
        1. Add a parameter to print().
        2. Item_string::print():
              - Do not append character set introducer to the text literal
                if we're building a query for INFORMATION_SCHEMA;
              - Convert text literal to UTF8 if we're building a query
                for INFORMATION_SCHEMA.
      sql/item.h:
        Add a parameter to print().
      sql/item_cmpfunc.cc:
        Add a parameter to print().
      sql/item_cmpfunc.h:
        Add a parameter to print().
      sql/item_func.cc:
        Add a parameter to print().
      sql/item_func.h:
        Add a parameter to print().
      sql/item_geofunc.h:
        Add a parameter to print().
      sql/item_row.cc:
        Add a parameter to print().
      sql/item_row.h:
        Add a parameter to print().
      sql/item_strfunc.cc:
        Add a parameter to print().
      sql/item_strfunc.h:
        Add a parameter to print().
      sql/item_subselect.cc:
        Add a parameter to print().
      sql/item_subselect.h:
        Add a parameter to print().
      sql/item_sum.cc:
        Add a parameter to print().
      sql/item_sum.h:
        Add a parameter to print().
      sql/item_timefunc.cc:
        Add a parameter to print().
      sql/item_timefunc.h:
        Add a parameter to print().
      sql/mysql_priv.h:
        Add a parameter to print().
      sql/sp_head.cc:
        Add a parameter to print().
      sql/sql_lex.cc:
        Add a parameter to print().
      sql/sql_lex.h:
        Add a parameter to print().
      sql/sql_parse.cc:
        Add a parameter to print().
      sql/sql_select.cc:
        Add a parameter to print().
      sql/sql_show.cc:
        Add a parameter to print().
      sql/sql_test.cc:
        Add a parameter to print().
      sql/sql_view.cc:
        Build INFORMATION_SCHEMA query from Item-tree.
      sql/sql_yacc.yy:
        Build INFORMATION_SCHEMA query from Item-tree.
      sql/table.h:
        Add a parameter to print().
      367d37b2
  31. 19 Feb, 2008 1 commit
    • unknown's avatar
      Applied InnoDB snapshot innodb-5.1-ss2298 · 3858e96a
      unknown authored
      Fixes the following bugs:
      
      - Bug #33349: possible race condition revolving around data dictionary and repartitioning
        Introduce retry/sleep logic as a workaround for a transient bug
        where ::open fails for partitioned tables randomly if we are using
        one file per table.
      
      - Bug #34053: normal users can enable innodb_monitor logging
        In CREATE TABLE and DROP TABLE check whether the table in question is one
        of the magic innodb_monitor tables and whether the user has enough rights
        to mess with it before doing anything else.
      
      - Bug #22868: 'Thread thrashing' with > 50 concurrent conns under an upd-intensive workloadw
      - Bug #29560: InnoDB >= 5.0.30 hangs on adaptive hash rw-lock 'waiting for an X-lock'
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
      
      - Bug #30930: Add auxiliary function to retrieve THD::thread_id
        Add thd_get_thread_id() function.  Also make check_global_access() function
        visible to InnoDB under INNODB_COMPATIBILITY_HOOKS #define.
      
      
      include/mysql/plugin.h:
        Add thd_get_thread_id() accessor function
      mysql-test/r/innodb.result:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2261:
        branches/5.1: Merge a change from MySQL AB:
        
        ChangeSet@2007-10-13 15:49:42+03:00, aelkin@koti.dsl.inet.fi
        
        Bug #29136 erred multi-delete on trans table does not rollback the statement
        
        innodb.test, innodb.result: trans table specific test added
      mysql-test/t/innodb.test:
        Applied InnoDB snapshot innodb-5.1-ss2298
      sql/mysql_priv.h:
        Make check_global_access() declaration available if when
        INNODB_COMPATIBILITY_HOOKS is defined.
      sql/sql_class.cc:
        Add thd_get_thread_id() accessor function.
        
        Add 'extern "C"' to definition for thd_get_xid().  Not strictly
        needed, but in keeping with our coding style.
      storage/innobase/btr/btr0cur.c:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2295:
        branches/5.1:
        
        Merge r2294 from branches/5.0:
        
        Fix typo and add comma in comment.
      storage/innobase/handler/ha_innodb.cc:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        - But remove the declaration of check_global_access() from ha_innodb.cc,
          because it is now visible in mysql_priv.h under INNODB_COMPATIBILITY_HOOKS
        
        Revision r2270:
        branches/5.1:
        
        Rename the user visible parameter innodb-use-adaptive-hash-indexes to
        innodb-adaptive-hash-index so that it is in sync with MySQL 5.0.
        
        Suggested by:	Heikki
        Approved by:	Heikki
        
        
        Revision r2236:
        branches/5.1: bug#33349
        
        Introduce retry/sleep logic as a workaround for a transient bug
        where ::open fails for partitioned tables randomly if we are using
        one file per table.
        
        
        Reviewed by: Heikki
        
        
        Revision r2282:
        branches/5.1:
        
        Fix Bug#34053:
        * In CREATE TABLE and DROP TABLE check whether the table in question is one
          of the magic innodb_monitor tables and whether the user has enough rights
          to mess with it before doing anything else.
        * Implement a mysql-test testcase.
        
        Approved by:	Heikki
        
        
        Revision r2246:
        branches/5.1:
        
        Fix formatting of the autoinc-lock-mode command line parameter.
        
        Old view (./mysqld --help --verbose):
        
          --innodb-autoinc-lock-mode=#
                              The AUTOINC lock modes supported by InnoDB:
          0 => Old
                              style AUTOINC locking (for backward compatibility)
          1 =>
                              New style AUTOINC locking
          2 => No AUTOINC locking
                              (unsafe for SBR)
        
        New view:
        
          --innodb-autoinc-lock-mode=#
                              The AUTOINC lock modes supported by InnoDB:
                              0 => Old style AUTOINC locking (for backward
                              compatibility)
                              1 => New style AUTOINC locking
                              2 => No AUTOINC locking (unsafe for SBR)
        
        Looks like these strings are "automatically" wrapped by MySQL in the
        following way:
        * newlines (\n) in the string are ignored
        * newline separator (\n) is inserted every 57 or so characters.
        * lots of white space is appended to each inserted new line.
        
        Approved by:	Heikki
      storage/innobase/include/os0sync.h:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/include/read0read.h:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2188:
        branches/5.1: Remove unused field can_be_too_old from read_view_struct.
      storage/innobase/include/row0mysql.h:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2282:
        branches/5.1:
        
        Fix Bug#34053:
        * In CREATE TABLE and DROP TABLE check whether the table in question is one
          of the magic innodb_monitor tables and whether the user has enough rights
          to mess with it before doing anything else.
        * Implement a mysql-test testcase.
        
        Approved by:	Heikki
        
        
        Revision r2272:
        branches/5.1:
        
        Fix typo in comment.
      storage/innobase/include/sync0arr.h:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/include/sync0rw.h:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/include/sync0rw.ic:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/include/sync0sync.h:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/include/sync0sync.ic:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/os/os0sync.c:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/read/read0read.c:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2188:
        branches/5.1: Remove unused field can_be_too_old from read_view_struct.
      storage/innobase/row/row0mysql.c:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2282:
        branches/5.1:
        
        Fix Bug#34053:
        * In CREATE TABLE and DROP TABLE check whether the table in question is one
          of the magic innodb_monitor tables and whether the user has enough rights
          to mess with it before doing anything else.
        * Implement a mysql-test testcase.
        
        Approved by:	Heikki
        
        
        Revision r2272:
        branches/5.1:
        
        Fix typo in comment.
      storage/innobase/srv/srv0srv.c:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/sync/sync0arr.c:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/sync/sync0rw.c:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      storage/innobase/sync/sync0sync.c:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2268:
        branches/5.1: Port of r2267
        
        This is a combination of changes that forward port the scalability fix applied to 5.0
        through r1001.
        It reverts changes r149 and r122 (these were 5.1 specific changes made in lieu of
        scalability fix of 5.0)
        Then it applies r1001 to 5.0 which is the original scalability fix.
        Finally it applies r2082 which fixes an issue with the original fix.
        
        Reviewed by: Heikki
      mysql-test/r/innodb_bug34053.result:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2282:
        branches/5.1:
        
        Fix Bug#34053:
        * In CREATE TABLE and DROP TABLE check whether the table in question is one
          of the magic innodb_monitor tables and whether the user has enough rights
          to mess with it before doing anything else.
        * Implement a mysql-test testcase.
        
        Approved by:	Heikki
      mysql-test/t/innodb_bug34053.test:
        Applied InnoDB snapshot innodb-5.1-ss2298
        
        Revision r2282:
        branches/5.1:
        
        Fix Bug#34053:
        * In CREATE TABLE and DROP TABLE check whether the table in question is one
          of the magic innodb_monitor tables and whether the user has enough rights
          to mess with it before doing anything else.
        * Implement a mysql-test testcase.
        
        Approved by:	Heikki
      3858e96a
  32. 18 Feb, 2008 1 commit
  33. 15 Feb, 2008 1 commit
    • unknown's avatar
      Bug #31887: DML Select statement not returning same results · 72e48bf2
      unknown authored
      when executed in version 5
      
      Zero fill is a field attribute only. So we can't always 
      propagate  constants for zerofill fields : the values and 
      expression results don't have that flag.
      
      Fixed by converting the const value to a string and 
      using that in const propagation when the context allows it. 
      Disable const propagation for fields with ZEROFILL flag in
      all the other cases.
      
      
      mysql-test/r/compare.result:
        Bug #31887: test case
      mysql-test/t/compare.test:
        Bug #31887: test case
      sql/item.cc:
        Bug #31887: If the context allows conversion
        of an int constant to a zero-filled string constant
        put the string constant instead of the int constant
        when doing const propagation
      sql/mysql_priv.h:
        Bug #31887: a macro to get all the Field_num
        descendant fields.
      72e48bf2
  34. 06 Feb, 2008 2 commits
    • unknown's avatar
      _db_strict_keyword_ is no more · 577d3698
      unknown authored
      577d3698
    • unknown's avatar
      Fixes for running maria-recovery*.test and maria-purge.test under · 67665c97
      unknown authored
      Windows.
      
      
      include/my_dbug.h:
        a DBUG expression to force a flush of the trace file then an abort of the process
      mysql-test/include/wait_until_connected_again.inc:
        mysqladmin waits for pid file to be gone only under Unix; so
        maria_empty_logs.inc cannot wait for mysqld to be gone, so
        wait_until_connected_again.inc may send its "show status" to a 
        not-yet-dead server hence the 1053 error ("server shutdown in progress")
      mysys/my_thr_init.c:
        overload abort() under Windows, to not have an annoying CRT popup
        ("ignore/abort/retry" buttons) each time a test intentionally
        crashes mysqld
      sql/handler.cc:
        use new expression
      sql/log.cc:
        use new expression
      sql/mysql_priv.h:
        use new expression
      storage/maria/ha_maria.cc:
        use new expression
      storage/maria/ma_blockrec.c:
        use new expression
      storage/maria/ma_check.c:
        use new expression
      storage/maria/ma_checkpoint.c:
        use new expression
      storage/maria/ma_control_file.c:
        Can't yet lock control file under Windows (test suite problems,
        plus concerns about stray lock preventing a fast restart after crash).
      storage/maria/ma_loghandler.c:
        A file which should be closed, otherwise translog_purge() (the caller)
        cannot delete logs.
      67665c97
  35. 30 Jan, 2008 1 commit
    • unknown's avatar
      A fix and a test case for Bug#34166 Server crash in SHOW OPEN TABLES and · a80ec7ad
      unknown authored
      pre-locking.
      
      The crash was caused by an implicit assumption in check_table_access() that
      table_list parameter is always a part of lex->query_tables.
      
      When iterating over the passed list of tables, check_table_access() used
      to stop only when lex->query_tables_last_not_own was reached. 
      In case of pre-locking, lex->query_tables_last_own is not NULL and points
      to some element of lex->query_tables. When the parameter
      of check_table_access() was not part of lex->query_tables, loop invariant
      could never be violated and a crash would happen when the current table
      pointer would point beyond the end of the provided list.
      
      The fix is to change the signature of check_table_access() to also accept
      a numeric limit of loop iterations, similarly to check_grant(), and 
      supply this limit in all places when we want to check access of tables
      that are outside lex->query_tables, or just want to check access to one table.
      
      
      mysql-test/r/information_schema.result:
        Update test results (Bug#34166).
      mysql-test/t/information_schema.test:
        Add a test case for Bug#34166.
      sql/mysql_priv.h:
        Change signature of check_table_access() to accept a numeric limit
        of tables to check.
      sql/sp_head.cc:
        Update to the new signature of check_table_access().
      sql/sql_acl.cc:
        Improve code clarity: if there is a numeric limit, we should not need
        to look at first_not_own_table.
      sql/sql_base.cc:
        Update to the new signature of check_table_access().
      sql/sql_cache.cc:
        Update to the new signature of check_table_access().
      sql/sql_parse.cc:
        Update to the new signature of check_table_access().
        Change check_table_access() to accept an optional numeric limit of tables
        to check. A crash would happen when check_table_access() was
        passed a list of tables that is not part of lex->query_tables and
        lex->query_tables_last_own was not NULL.
      sql/sql_plugin.cc:
        Update to the new signature of check_table_access().
      sql/sql_prepare.cc:
        Update to the new signature of check_table_access().
      sql/sql_show.cc:
        Update to the new signature of check_table_access().
        Ensure that check_table_access() only checks access to the first
        table in the table list when called from list_open_tables().
        list_open_tables() supplies a table list that is created on stack,
        whereas check_table_access() used to assume that the supplied list is a part
        of thd->lex.
      sql/sql_trigger.cc:
        Update to the new signature of check_table_access().
      sql/sql_view.cc:
        Update to the new signature of check_table_access().
      a80ec7ad
  36. 28 Jan, 2008 1 commit
    • unknown's avatar
      BUG#32943: Fixed buggy lock handling of ALTER TABLE for partitioning · 1317b7c5
      unknown authored
      mysql-test/r/partition_range.result:
        Added new test cases for lock tables and ALTER TABLE for
        partitions, also added a test case with a trigger.
      mysql-test/t/partition_range.test:
        Added new test cases for lock tables and ALTER TABLE for
        partitions, also added a test case with a trigger.
      sql/mysql_priv.h:
        Added WFRM_KEEP_SHARE for use of code not to be used otherwise
      sql/sql_partition.cc:
        Removed get_name_lock and release_name_lock, use
        close_data_files_and_morph_locks which leaves an
        exclusive name lock after completing.
        Reopen table after completing if under lock tables
        Updated comments
      sql/sql_table.cc:
        Ensure that code to set partition syntax isn't used other than
        when specifically asked to do it.
      1317b7c5
  37. 10 Jan, 2008 1 commit
    • unknown's avatar
      Windows fixes · 0ac29796
      unknown authored
      -new option WITH_MARIA_STORAGE_ENGINE for config.js
      -correct build errors
      -build test executables
      -downport changes for atomic functions from 5.2
      -remove LOCK_uuid_generator from C++ files to avoid linker errors
      -new function my_uuid2str()
      
      
      BitKeeper/deleted/.del-x86-msvc.h:
        Delete: include/atomic/x86-msvc.h
      CMakeLists.txt:
        Windows fixes:
        -New option WITH_MARIA_STORAGE_ENGINE
        -Add unit tests
      include/Makefile.am:
        replace x86-msvc.h with generic-msvc.h
      include/config-win.h:
        my_chmod() support
      include/my_atomic.h:
        Downport my_atomic from 5.2 tree
      include/my_bit.h:
        Correct unresolved symbol errors on Windows
      include/my_pthread.h:
        pthread_mutex_unlock now returns 0 (was void previously)
        defined PTHREAD_STACK_MIN
      include/my_sys.h:
        New function my_uuid2str()
        define MY_UUID_STRING_LENGTH
      include/atomic/nolock.h:
        Downport my_atomic from 5.2 tree
      libmysqld/CMakeLists.txt:
        New option WITH_MARIA_STORAGE_ENGINE
      mysys/CMakeLists.txt:
        Add missing files
      mysys/lf_dynarray.c:
        Fix compiler errors on Windows
      mysys/my_getncpus.c:
        Windows port
      mysys/my_uuid.c:
        Windows fixes: there is no random() on Windows, use ANSI rand()
        New function my_uuid2str()
      mysys/my_winthread.c:
        Downport from 5.2 tree
        -Call my_thread_end() before pthread_exit()
        -Avoid crash if pthread_create is called with NULL attributes
      sql/CMakeLists.txt:
        Link mysqld with Maria storage engine
      sql/item_func.cc:
        Remove LOCK_uuid_generator from C++ to avoid linker errors.
        Use dedicated mutex for short uuids
      sql/item_strfunc.cc:
        Use my_uuid() and my_uuid2str() functions from mysys.
      sql/item_strfunc.h:
        Define MY_UUID_STRING_LENGTH in my_sys.h
      sql/mysql_priv.h:
        LOCK_uuid_generator must be declared as extern "C"
      sql/mysqld.cc:
        Init and destroy LOCK_uuid_short mutex
      storage/maria/CMakeLists.txt:
        -Use the same source files as in Makefile.am
        -Build test binaries
      storage/maria/ha_maria.cc:
        snprintf->my_snprintf
      storage/maria/lockman.c:
        Fix compiler error on Windows
      storage/maria/ma_check.c:
        Fix compiler error on Windows
      storage/maria/ma_loghandler.c:
        Fix compile errors
        my_open()/my_sync() do not work for directories on Windows
      storage/maria/ma_recovery.c:
        Fix compile error on Windows
      storage/maria/ma_test2.c:
        Rename variable to avoid naming conflict with Microsoft C runtime 
        function
      storage/maria/ma_test3.c:
        Fix build errors on Windows
      storage/maria/tablockman.c:
        Fix build errors on Windows
      storage/maria/unittest/Makefile.am:
        Add CMakeLists.txt
      storage/maria/unittest/ma_pagecache_consist.c:
        Fix build errors on Windows
        remove loop from get_len()
      storage/maria/unittest/ma_pagecache_single.c:
        Fix build errors on Windows
      storage/maria/unittest/ma_test_loghandler-t.c:
        Windows fixes
        -Avoid division by 0 in expressions like
        x/(RAND_MAX/y), where y is larger than RAND_MAX(==0x7fff on Windows)
      storage/maria/unittest/ma_test_loghandler_multigroup-t.c:
        Windows fixes
        -Avoid division by 0 in expressions like
        x/(RAND_MAX/y), where y is larger than RAND_MAX(==0x7fff on Windows)
        -remove loop in get_len()
      storage/maria/unittest/ma_test_loghandler_multithread-t.c:
        Windows fixes
        -Avoid division by 0 in expressions like
        x/(RAND_MAX/y), where y is larger than RAND_MAX(==0x7fff on Windows)
        -remove loop in get_len()
      storage/maria/unittest/ma_test_loghandler_noflush-t.c:
        Fix build errors on Windows
      storage/maria/unittest/test_file.c:
        Correct the code to get file size on Windows. 
        stat() information can be outdated and thus cannot be trusted.
        On Vista,stat() returns file size=0 until the file is closed at the
        first time.
      storage/myisam/CMakeLists.txt:
        Fix compiler errors on Windows
        Build test executables
      storage/myisam/mi_test2.c:
        Rename variable to avoid naming conflict with Microsoft C runtime 
        function
      storage/myisam/mi_test3.c:
        Fix build errors on Windows
      strings/CMakeLists.txt:
        Add missing file
      unittest/unit.pl:
        Windows:
        downport unittest changes from 5.2 bk tree
      unittest/mysys/Makefile.am:
        Windows:
        downport unittest changes from 5.2 bk tree
      unittest/mysys/my_atomic-t.c:
        Windows:
        downport unittest changes from 5.2 bk tree
      unittest/mytap/Makefile.am:
        Windows:
        downport unittest changes from 5.2 bk tree
      unittest/mytap/tap.c:
        Windows:
        downport unittest changes from 5.2 bk tree
      win/configure.js:
        Add WITH_MARIA_STORAGE_ENGINE configure option
      unittest/mytap/CMakeLists.txt:
        Add missing file
      unittest/mysys/CMakeLists.txt:
        Add missing file
      storage/maria/unittest/CMakeLists.txt:
        Add missing file
      BitKeeper/etc/ignore:
        Added comments maria-win.patch to the ignore list
      include/atomic/generic-msvc.h:
        Implement atomic operations with MSVC intrinsics
      0ac29796