An error occurred fetching the project authors.
  1. 03 Apr, 2008 1 commit
    • unknown's avatar
      Fix paths in test and result files · 7674605d
      unknown authored
      mysql-test/r/loaddata.result:
        Update paths in result
      mysql-test/r/myisam.result:
        Update paths in result
      mysql-test/r/partition_not_windows.result:
        Update paths in result
      mysql-test/r/symlink.result:
        Update paths in result
      mysql-test/suite/binlog/r/binlog_index.result:
        Update paths in result
      mysql-test/suite/binlog/t/binlog_auto_increment_bug33029.test:
        Update paths
      mysql-test/suite/binlog/t/binlog_index.test:
        Update paths
      mysql-test/suite/rpl/t/rpl_row_mysqlbinlog.test:
        Fix merge error s/start-position/stop-position/
      mysql-test/t/drop.test:
        Update paths
      mysql-test/t/loaddata.test:
        Update paths
      mysql-test/t/myisam.test:
        Update paths
      mysql-test/t/partition_not_windows.test:
        Update paths
      mysql-test/t/symlink.test:
        Update paths
      7674605d
  2. 24 Jan, 2008 1 commit
    • unknown's avatar
      Bug#29182 - MyISAMCHK reports wrong character set · 1804046d
      unknown authored
      myisamchk did always show Character set: latin1_swedish_ci (8),
      regardless what DEFAULT CHARSET the table had.
      
      When the server created a MyISAM table, it did not copy the
      characterset number into the MyISAM create info structure.
      
      Added assignment of charset number to MI_CREATE_INFO.
      
      
      mysql-test/r/myisam.result:
        Bug#29182 - MyISAMCHK reports wrong character set
        Added test result.
      mysql-test/t/myisam.test:
        Bug#29182 - MyISAMCHK reports wrong character set
        Added test.
      storage/myisam/ha_myisam.cc:
        Bug#29182 - MyISAMCHK reports wrong character set
        Added assignment of charset number to MI_CREATE_INFO.
      1804046d
  3. 16 Jan, 2008 1 commit
    • unknown's avatar
      Bug#32705 - myisam corruption: Key in wrong position · 4fe64cf6
      unknown authored
                  at page 1024 with ucs2_bin
      Post-pushbuild fix.
      Moved test from myisam.test to ctype_ucs2_def.test.
      UCS2 is not always available.
      
      
      mysql-test/r/ctype_ucs2_def.result:
        Bug#32705 - myisam corruption: Key in wrong position
                    at page 1024 with ucs2_bin
        Moved test result from myisam.result to here.
      mysql-test/r/myisam.result:
        Bug#32705 - myisam corruption: Key in wrong position
                    at page 1024 with ucs2_bin
        Moved test result from here to ctype_ucs2_def.result.
      mysql-test/t/ctype_ucs2_def.test:
        Bug#32705 - myisam corruption: Key in wrong position
                    at page 1024 with ucs2_bin
        Moved test from myisam.test to here.
        UCS2 is not always available.
      mysql-test/t/myisam.test:
        Bug#32705 - myisam corruption: Key in wrong position
                    at page 1024 with ucs2_bin
        Moved test from here to ctype_ucs2_def.test.
        UCS2 is not always available.
      4fe64cf6
  4. 14 Jan, 2008 1 commit
    • unknown's avatar
      Bug#33222 - myisam-table drops rows when column is added · c3bf7021
      unknown authored
                 and a char-field > 128 exists
      
      CHECK TABLE (non-QUICK) and any form of repair table did wrongly rate
      records as corrupted under the following conditions:
      1. The table has dynamic row format and
      2. it has a CHAR like column > 127 bytes (but not VARCHAR)
         (for multi-byte character sets this could be less than 127
         characters) and
      3. it has records with > 127 bytes significant length in that column
         (a byte beyond byte position 127 must be non-space).
      Affected were the statements CHECK TABLE, REPAIR TABLE, OPTIMIZE TABLE,
      ALTER TABLE. CHECK TABLE reported and marked the table as crashed if any
      record was present that fulfilled condition 3. The other statements
      deleted these records.
      
      The problem was a signed/unsigned compare in MyISAM code. A
      char to uchar change became necessary after the big byte to uchar
      change.
      
      
      mysql-test/r/myisam.result:
        Bug#33222 - myisam-table drops rows when column is added
                   and a char-field > 128 exists
        Added test result.
      mysql-test/t/myisam.test:
        Bug#33222 - myisam-table drops rows when column is added
                   and a char-field > 128 exists
        Added test.
      storage/myisam/mi_dynrec.c:
        Bug#33222 - myisam-table drops rows when column is added
                   and a char-field > 128 exists
        char -> uchar became necessary after big byte -> uchar change.
        Fixed some small coding style violations near the changes.
      c3bf7021
  5. 18 Dec, 2007 1 commit
    • unknown's avatar
      Bug#32705 - myisam corruption: Key in wrong position · 53f762ab
      unknown authored
                  at page 1024 with ucs2_bin
      
      Inserting strings with a common prefix into a table with
      characterset UCS2 corrupted the table.
      
      An efficient search method was used, which compares end space
      with ASCII blank. This doesn't work for character sets like UCS2,
      which do not encode blank like ASCII does.
      
      Use the less efficient search method _mi_seq_search()
      for charsets with mbminlen > 1.
      
      
      myisam/mi_open.c:
        Bug#32705 - myisam corruption: Key in wrong position
                    at page 1024 with ucs2_bin
        Use _mi_seq_search() for charsets with mbminlen > 1.
      mysql-test/r/myisam.result:
        Bug#32705 - myisam corruption: Key in wrong position
                    at page 1024 with ucs2_bin
        Added test result.
      mysql-test/t/myisam.test:
        Bug#32705 - myisam corruption: Key in wrong position
                    at page 1024 with ucs2_bin
        Added test.
      53f762ab
  6. 26 Nov, 2007 1 commit
    • unknown's avatar
      Fix for bug #28837: MyISAM storage engine error (134) doing delete with · 67bf39f2
      unknown authored
      self-join
      
      When doing DELETE with self-join on a MyISAM or MERGE table, it could
      happen that a record being retrieved in join_read_next_same() has
      already been deleted by previous iterations. That caused the engine's
      index_next_same() method to fail with HA_ERR_RECORD_DELETED error and
      the whole DELETE query to be aborted with an error.
      
      Fixed by suppressing the HA_ERR_RECORD_DELETED error in
      hy_myisam::index_next_same() and ha_myisammrg::index_next_same(). Since
      HA_ERR_RECORD_DELETED can only be returned by MyISAM, there is no point
      in filtering this error in the SQL layer.
      
      
      mysql-test/r/merge.result:
        Added a test case for bug #28837.
      mysql-test/r/myisam.result:
        Added a test case for bug #28837.
      mysql-test/t/merge.test:
        Added a test case for bug #28837.
      mysql-test/t/myisam.test:
        Added a test case for bug #28837.
      sql/ha_myisam.cc:
        Skip HA_ERR_RECORD_DELETED silently when calling mi_rnext_same().
      sql/ha_myisammrg.cc:
        Skip HA_ERR_RECORD_DELETED silently when calling mi_rnext_same().
      67bf39f2
  7. 15 Nov, 2007 1 commit
    • unknown's avatar
      Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE · c8450b27
      unknown authored
                  corrupts a MERGE table
      Bug 26867 - LOCK TABLES + REPAIR + merge table result in
                  memory/cpu hogging
      Bug 26377 - Deadlock with MERGE and FLUSH TABLE
      Bug 25038 - Waiting TRUNCATE
      Bug 25700 - merge base tables get corrupted by
                  optimize/analyze/repair table
      Bug 30275 - Merge tables: flush tables or unlock tables
                  causes server to crash
      Bug 19627 - temporary merge table locking
      Bug 27660 - Falcon: merge table possible
      Bug 30273 - merge tables: Can't lock file (errno: 155)
      
      The problems were:
      
      Bug 26379 - Combination of FLUSH TABLE and REPAIR TABLE
                      corrupts a MERGE table
      
        1. A thread trying to lock a MERGE table performs busy waiting while
           REPAIR TABLE or a similar table administration task is ongoing on
           one or more of its MyISAM tables.
        
        2. A thread trying to lock a MERGE table performs busy waiting until all
           threads that did REPAIR TABLE or similar table administration tasks
           on one or more of its MyISAM tables in LOCK TABLES segments do UNLOCK
           TABLES. The difference against problem #1 is that the busy waiting
           takes place *after* the administration task. It is terminated by
           UNLOCK TABLES only.
        
        3. Two FLUSH TABLES within a LOCK TABLES segment can invalidate the
           lock. This does *not* require a MERGE table. The first FLUSH TABLES
           can be replaced by any statement that requires other threads to
           reopen the table. In 5.0 and 5.1 a single FLUSH TABLES can provoke
           the problem.
      
      Bug 26867 - LOCK TABLES + REPAIR + merge table result in
                  memory/cpu hogging
      
        Trying DML on a MERGE table, which has a child locked and
        repaired by another thread, made an infinite loop in the server.
      
      Bug 26377 - Deadlock with MERGE and FLUSH TABLE
      
        Locking a MERGE table and its children in parent-child order
        and flushing the child deadlocked the server.
      
      Bug 25038 - Waiting TRUNCATE
      
        Truncating a MERGE child, while the MERGE table was in use,
        let the truncate fail instead of waiting for the table to
        become free.
      
      Bug 25700 - merge base tables get corrupted by
                  optimize/analyze/repair table
      
        Repairing a child of an open MERGE table corrupted the child.
        It was necessary to FLUSH the child first.
      
      Bug 30275 - Merge tables: flush tables or unlock tables
                  causes server to crash
      
        Flushing and optimizing locked MERGE children crashed the server.
      
      Bug 19627 - temporary merge table locking
      
        Use of a temporary MERGE table with non-temporary children
        could corrupt the children.
      
        Temporary tables are never locked. So we do now prohibit
        non-temporary chidlren of a temporary MERGE table.
      
      Bug 27660 - Falcon: merge table possible
      
        It was possible to create a MERGE table with non-MyISAM children.
      
      Bug 30273 - merge tables: Can't lock file (errno: 155)
      
        This was a Windows-only bug. Table administration statements
        sometimes failed with "Can't lock file (errno: 155)".
      
      These bugs are fixed by a new implementation of MERGE table open.
      
      When opening a MERGE table in open_tables() we do now add the
      child tables to the list of tables to be opened by open_tables()
      (the "query_list"). The children are not opened in the handler at
      this stage.
      
      After opening the parent, open_tables() opens each child from the
      now extended query_list. When the last child is opened, we remove
      the children from the query_list again and attach the children to
      the parent. This behaves similar to the old open. However it does
      not open the MyISAM tables directly, but grabs them from the already
      open children.
      
      When closing a MERGE table in close_thread_table() we detach the
      children only. Closing of the children is done implicitly because
      they are in thd->open_tables.
      
      For more detail see the comment at the top of ha_myisammrg.cc.
      
      Changed from open_ltable() to open_and_lock_tables() in all places
      that can be relevant for MERGE tables. The latter can handle tables
      added to the list on the fly. When open_ltable() was used in a loop
      over a list of tables, the list must be temporarily terminated
      after every table for open_and_lock_tables().
      table_list->required_type is set to FRMTYPE_TABLE to avoid open of
      special tables. Handling of derived tables is suppressed.
      These details are handled by the new function
      open_n_lock_single_table(), which has nearly the same signature as
      open_ltable() and can replace it in most cases.
      
      In reopen_tables() some of the tables open by a thread can be
      closed and reopened. When a MERGE child is affected, the parent
      must be closed and reopened too. Closing of the parent is forced
      before the first child is closed. Reopen happens in the order of
      thd->open_tables. MERGE parents do not attach their children
      automatically at open. This is done after all tables are reopened.
      So all children are open when attaching them.
      
      Special lock handling like mysql_lock_abort() or mysql_lock_remove()
      needs to be suppressed for MERGE children or forwarded to the parent.
      This depends on the situation. In loops over all open tables one
      suppresses child lock handling. When a single table is touched,
      forwarding is done.
      
      Behavioral changes:
      ===================
      
      This patch changes the behavior of temporary MERGE tables.
      Temporary MERGE must have temporary children.
      The old behavior was wrong. A temporary table is not locked. Hence
      even non-temporary children were not locked. See
      Bug 19627 - temporary merge table locking.
      
      You cannot change the union list of a non-temporary MERGE table
      when LOCK TABLES is in effect. The following does *not* work:
      CREATE TABLE m1 ... ENGINE=MRG_MYISAM ...;
      LOCK TABLES t1 WRITE, t2 WRITE, m1 WRITE;
      ALTER TABLE m1 ... UNION=(t1,t2) ...;
      However, you can do this with a temporary MERGE table.
      
      You cannot create a MERGE table with CREATE ... SELECT, neither
      as a temporary MERGE table, nor as a non-temporary MERGE table.
      CREATE TABLE m1 ... ENGINE=MRG_MYISAM ... SELECT ...;
      Gives error message: table is not BASE TABLE.
      
      
      include/my_base.h:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added HA_EXTRA_ATTACH_CHILDREN and HA_EXTRA_DETACH_CHILDREN.
      include/myisammrg.h:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added element 'children_attached' to MYRG_INFO.
        Added declarations for myrg_parent_open(),
        myrg_attach_children() and myrg_detach_children()
        for the new MERGE table open approach.
      mysql-test/extra/binlog_tests/blackhole.test:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Preliminarily added new error message with a comment.
      mysql-test/r/create.result:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Fixed test result.
      mysql-test/r/delayed.result:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Moved test result from here to merge.result.
      mysql-test/r/merge.result:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Fixed/added test result.
      mysql-test/r/myisam.result:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Moved test result for bug 8306 from here to merge.result.
      mysql-test/suite/binlog/r/binlog_stm_blackhole.result:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Fixed test result.
      mysql-test/t/create.test:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Fixed error number.
      mysql-test/t/delayed.test:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Moved test from here to merge.test.
      mysql-test/t/merge.test:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Fixed test for new temporary MERGE table behavior.
        Exchanged error numbers by symbolic codes.
        Added tests. Included are tests for bugs
        8306 (moved from myisam.test), 26379, 19627, 25038, 25700, 26377,
        26867, 27660, 30275, and 30273.
        Fixed changes resulting from disabled CREATE...SELECT.
        Integrated tests moved from delayed.test and myisam.test to here.
      mysql-test/t/myisam.test:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Moved test for bug 8306 from here to merge.test.
      mysys/thr_lock.c:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added code to let the owner of a high priority lock (TL_WRITE_ONLY)
        to bypass its own lock.
      sql/ha_ndbcluster_binlog.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added 'thd' argument to init_tmp_table_share().
      sql/handler.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added 'thd' argument to init_tmp_table_share().
      sql/mysql_priv.h:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Removed declaration of check_merge_table_access(). It is now static
        in sql_parse.cc.
        Added declaration for fix_merge_after_open().
        Renamed open_and_lock_tables() to open_and_lock_tables_derived()
        with additional parameter 'derived'.
        Added inline functions simple_open_n_lock_tables() and
        open_and_lock_tables(), which call open_and_lock_tables_derived()
        and add the argument for 'derived'.
        Added new function open_n_lock_single_table(), which can be used
        as an replacement for open_ltable() in most situations. Internally
        it calls simple_open_n_lock_tables() so hat it is appropriate for
        MERGE tables.
        Added 'thd' argument to init_tmp_table_share().
      sql/slave.cc:
        ug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added comment.
      sql/sql_base.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        
        Defined new functions add_merge_table_list(),
        attach_merge_children(), detach_merge_children(), and
        fix_merge_after_open() for the new MERGE table open approach.
        
        Added calls of the new functions to
        close_handle_and_leave_table_as_lock(), close_thread_tables(),
        close_thread_table(), unlink_open_table(), reopen_name_locked_table(),
        reopen_table(), drop_locked_tables(), close_temporary_table(),
        and open_tables() respectively.
        
        Prevented special lock handling of merge children (like
        mysql_lock_remove, mysql_lock_merge or mysql_lock_abort)
        at many places. Some of these calls are forwarded to the
        parent table instead.
        
        Added code to set thd->some_tables_deleted for every thread that has
        a table open that we are flushing.
        Added code for MERGE tables to unlink_open_table().
        Added MERGE children to the list of unusable tables in open_table().
        Added MERGE table handling to reopen_table().
        Added lock handling and closing of a parent before the children
        in close_data_files_and_morph_locks().
        Added code for re-attaching children in reopen_tables().
        Added MYSQL_LOCK_NOTIFY_IF_NEED_REOPEN to the locking flags and
        error reporting after mysql_lock_tables() in reopen_tables().
        Added lock handling and closing of a parent before the children
        in close_old_data_files().
        Added lock handling and detaching in drop_locked_tables().
        Added code for removing the children list from the statement list
        to prepare for a repetition in open_tables().
        Added new function open_n_lock_single_table(), which can be used
        as an replacement for open_ltable() in most situations. Internally
        it calls simple_open_n_lock_tables() so hat it is appropriate for
        MERGE tables.
        Disabled use of open_ltable() for MERGE tables.
        Removed function simple_open_n_lock_tables(). It is now inline
        declared in mysql_priv.h.
        Renamed open_and_lock_tables() to open_and_lock_tables_derived()
        with additional parameter 'derived'. open_and_lock_tables() is now
        inline declared in mysql_priv.h.
        Added a check for end-of-list in two loops in lock_tables().
        Added 'thd' argument to init_tmp_table_share().
      sql/sql_insert.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Changed from open_ltable() to open_n_lock_single_table() in
        handle_delayed_insert().
        Reestablished LEX settings after lex initialization.
        Added 'thd' argument to init_tmp_table_share().
      sql/sql_parse.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Made check_merge_table_access() a static function.
        Disabled use of CREATE...SELECT for MERGE tables.
      sql/sql_partition.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Fixed comment typo.
      sql/sql_select.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added 'thd' argument to init_tmp_table_share().
      sql/sql_table.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Optimized use of mysql_ha_flush() in mysql_rm_table_part2().
        Disabled the use of MERGE tables with prepare_for_restore() and
        prepare_for_repair().
        Changed from open_ltable() to open_n_lock_single_table() in
        mysql_alter_table() and mysql_checksum_table().
        Disabled change of child list under LOCK TABLES.
        Initialized table_list->table in mysql_recreate_table().
      sql/sql_trigger.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added code for allowing CREATE TRIGGER under LOCK TABLE, to be able
        to test it with MERGE tables.
      sql/table.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added 'thd' argument to init_tmp_table_share().
        Setting table_map_id from query_id in init_tmp_table_share().
        Added member function TABLE::is_children_attached().
      sql/table.h:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added access method get_table_def_version() to TABLE_SHARE.
        Added elements for MERGE tables to TABLE and TABLE_LIST.
      storage/myisam/ha_myisam.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added an unrelated comment to the function comment of table2myisam().
      storage/myisam/ha_myisam.h:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added new member function MI_INFO::file_ptr().
      storage/myisammrg/ha_myisammrg.cc:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added callback functions to support parent open and children attach
        of MERGE tables.
        Changed ha_myisammrg::open() to initialize storage engine structures
        and create a list of child tables only. Child tables are not opened.
        Added ha_myisammrg::attach_children(), which does now the main part
        of MERGE open.
        Added ha_myisammrg::detach_children().
        Added calls to ::attach_children() and ::detach_children() to
        ::extra() on HA_EXTRA_ATTACH_CHILDREN and HA_EXTRA_DETACH_CHILDREN
        respectively.
        Added a check for matching TEMPORARY type for children against
        parent.
        Added a check for table def version.
        Added support for thd->open_options to attach_children().
        Changed child path name generation for temporary tables so that
        it does nothing special for temporary tables.
      storage/myisammrg/ha_myisammrg.h:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added elements to class ha_myisammrg to support the new
        open approach.
        Changed empty destructor definition to a declaration.
        Implemented in ha_myisammrg.cc.
        Added declaration for methods attach_children() and
        detach_children().
        Added definition for method table_ptr() for use with
        callback functions.
      storage/myisammrg/myrg_close.c:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Added a check to avoid closing of MyISAM tables when the
        child tables are not attached.
        Added freeing of rec_per_key_part when the child tables
        are not attached.
      storage/myisammrg/myrg_extra.c:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        Some ::extra() functions and ::reset() can be called when
        children are detached.
      storage/myisammrg/myrg_open.c:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE
                    corrupts a MERGE table
        
        Kept old myrg_open() for MERGE use independent from MySQL.
        Removed an always true condition in myrg_open().
        Set children_attached for independent MERGE use in myrg_open().
        
        Added myrg_parent_open(), myrg_attach_children(), and
        myrg_detach_children() for the new MERGE table open approach.
      mysql-test/r/merge-big.result:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE corrupts a MERGE table
        New test result
      mysql-test/t/merge-big.test:
        Bug#26379 - Combination of FLUSH TABLE and REPAIR TABLE corrupts a MERGE table
        New test case
      c8450b27
  8. 14 Nov, 2007 1 commit
    • unknown's avatar
      Bug#4692 - DISABLE/ENABLE KEYS waste a space · 706a8b09
      unknown authored
      Post-pushbuild fix
      
      Added a purecov comment and a test for coverage of parallel
      enable keys.
      
      
      myisam/mi_check.c:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added purecov comment.
      mysql-test/r/myisam.result:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added test result.
      mysql-test/t/myisam.test:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added test for coverage of parallel enable keys.
      706a8b09
  9. 06 Nov, 2007 2 commits
    • unknown's avatar
      Bug#4692 - DISABLE/ENABLE KEYS waste a space · a26201f8
      unknown authored
      Post-merge fix. Moved test into 5.0 section.
      
      
      a26201f8
    • unknown's avatar
      Bug#4692 - DISABLE/ENABLE KEYS waste a space · 42829c61
      unknown authored
      Disabling and enabling indexes on a non-empty table grows the
      index file.
      
      Disabling indexes just sets a flag per non-unique index and does not
      free the index blocks of the affected indexes. Re-enabling indexes
      creates new indexes with new blocks. The old blocks remain unused
      in the index file.
      
      Fixed by dropping and re-creating all indexes if non-empty disabled
      indexes exist when enabling indexes. Dropping all indexes resets
      the internal end-of-file marker to the end of the index file header.
      It also clears the root block pointers of every index and clears the
      deleted blocks chains. This way all blocks are declared as free.
      
      
      myisam/mi_check.c:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added function mi_drop_all_indexes() to support drop of all indexes
        in case we want to re-enable non-empty disabled indexes.
        Changed mi_repair(), mi_repair_by_sort(), and mi_repair_parallel()
        to use the new function instead of duplicate drop index code.
      mysql-test/r/myisam.result:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added test result.
      mysql-test/t/myisam.test:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added test.
      42829c61
  10. 26 Oct, 2007 1 commit
    • unknown's avatar
      Bug#4692 - DISABLE/ENABLE KEYS waste a space · 612bedb2
      unknown authored
      Disabling and enabling indexes on a non-empty table grows the
      index file.
      
      Disabling indexes just sets a flag per non-unique index and does not
      free the index blocks of the affected indexes. Re-enabling indexes
      creates new indexes with new blocks. The old blocks remain unused
      in the index file.
      
      Fixed by dropping and re-creating all indexes if non-empty disabled
      indexes exist when enabling indexes. Dropping all indexes resets
      the internal end-of-file marker to the end of the index file header.
      It also clears the root block pointers of every index and clears the
      deleted blocks chains. This way all blocks are declared as free.
      
      
      myisam/mi_check.c:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added function mi_drop_all_indexes() to support drop of all indexes
        in case we want to re-enable non-empty disabled indexes.
        Changed mi_repair(), mi_repair_by_sort(), and mi_repair_parallel()
        to use the new function instead of duplicate drop index code.
      mysql-test/r/myisam.result:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added test result.
      mysql-test/t/myisam.test:
        Bug#4692 - DISABLE/ENABLE KEYS waste a space
        Added test.
      612bedb2
  11. 29 Aug, 2007 1 commit
  12. 06 Jun, 2007 1 commit
    • unknown's avatar
      Bug #28842 Different 'duplicate key' error code between 5.0 and 5.1 · 0f6047e4
      unknown authored
        The patch for WL 1563 added a new duplicate key error message so that the
        key name could be provided instead of the key number. But the error code
        for the new message was used even though that did not need to change.
      
        This could cause unnecessary problems for applications that used the old
        ER_DUP_ENTRY error code to detect duplicate key errors.
      
      
      mysql-test/t/auto_increment.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/create.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/create_select_tmp.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ctype_ucs2_def.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ctype_utf8.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/delayed.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/heap.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/heap_btree.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/heap_hash.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/innodb.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/insert_select.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/insert_update.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/join_outer.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/key.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/merge.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/myisam.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_basic.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_charset.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_index_unique.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_insert.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_replace.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/ndb_update.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/replace.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/rpl_err_ignoredtable.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/rpl_ndb_do_table.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/rpl_row_create_table.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/rpl_sp.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/show_check.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/sp-error.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/sp.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/sp_trans.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/sp_trans_log.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/temp_table.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_binary.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_bit.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_bit_innodb.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_blob.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/t/type_varchar.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/r/create.result:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/r/rpl_sp.result:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/r/sp.result:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/mix1.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/mix2.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/ps_modify.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/query_cache.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/include/varchar.inc:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/binlog_tests/insert_select-binlog.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_auto_increment.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_foreign_key.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_insert_delayed.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_insert_id.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_insert_id_pk.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_loaddata.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_row_basic.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test:
        Update ER_DUP_ENTRY-related error message values
      mysql-test/extra/rpl_tests/rpl_trig004.test:
        Update ER_DUP_ENTRY-related error message values
      sql/handler.cc:
        Restore use of ER_DUP_ENTRY error code even when ER_DUP_ENTRY_WITH_KEY_NAME
        error message is being used. (Bug #28842)
      0f6047e4
  13. 22 May, 2007 1 commit
    • unknown's avatar
      Bug #28476: force index on a disabled myisam index gives error 124 · 3332b801
      unknown authored
      When processing the USE/FORCE index hints
      the optimizer was not checking if the indexes 
      specified are enabled (see ALTER TABLE).
      Fixed by:
       Backporting the fix for bug 20604 to 5.0
      
      
      mysql-test/r/key.result:
        Test for BUG 20604.
        The important part of the test is the explain output that 
        tests what indexes are used.
      mysql-test/r/myisam.result:
        Bug #28476: test cases
      mysql-test/t/key.test:
        Bug 20604: 
        The minimal test case that reveals the bug. The optimizer for 
        aggregates relies on keys disabled with ALTER TABLE ... DISABLE KEYS
        not being in the set TABLE::keys_in_use_for_query.
        When the execution engine tries to use a disabled index, MyISAM
        returns an error.
      mysql-test/t/myisam.test:
        Bug #28476: test cases
      sql/sql_base.cc:
        Bug #28476: 
         - Ignore disabled indexes in USE/FORCE index
      sql/sql_select.cc:
        Bug 20604 : The intersection operation between table->s->keys_in_use 
        and table->keys_in_use_for_query is no longer necessary.
        We can trust that the latter is a subset of the former.
      sql/table.h:
        Bug 20604:
        Added comments to TABLE_SHARE::keys_in_use and
        TABLE::keys_in_use_for_query.
      3332b801
  14. 16 Mar, 2007 1 commit
    • unknown's avatar
      Bug#26231 - select count(*) on myisam table returns wrong value · 396f84aa
      unknown authored
                  when index is used
      
      When the table contained TEXT columns with empty contents
      ('', zero length, but not NULL) _and_ strings starting with
      control characters like tabulator or newline, the empty values
      were not found in a "records in range" estimate. Hence count(*)
      missed these records.
      
      The reason was a different set of search flags used for key
      insert and key range estimation.
      
      I decided to fix the set of flags used in range estimation.
      Otherwise millions of databases around the world would require
      a repair after an upgrade.
      
      The consequence is that the manual must be fixed, which claims
      that TEXT columns are compared with "end space padding". This
      is true for CHAR/VARCHAR but wrong for TEXT. See also bug 21335.
      
      
      myisam/mi_range.c:
        Bug#26231 - select count(*) on myisam table returns wrong value
                    when index is used
        Added SEARCH_UPDATE to the search flags so that it compares
        like write/update/delete operations do. Only so it expects
        the keys at the place where they have been inserted.
      myisam/mi_search.c:
        Bug#26231 - select count(*) on myisam table returns wrong value
                    when index is used
        Added some comments to explain how _mi_get_binary_pack_key()
        works.
      mysql-test/r/myisam.result:
        Bug#26231 - select count(*) on myisam table returns wrong value
                    when index is used
        Added a test.
      mysql-test/t/myisam.test:
        Bug#26231 - select count(*) on myisam table returns wrong value
                    when index is used
        Added test result.
      396f84aa
  15. 24 Jan, 2007 2 commits
    • unknown's avatar
      Bug#24607 - MyISAM pointer size determined incorrectly · 112ef50f
      unknown authored
      Fixed test. On 32-bit machines which compile without
      -DBIG_TABLES, MAX_ROWS is truncated to a 32-bit value.
      Using a value below 4G is portable.
      
      
      mysql-test/r/myisam.result:
        Bug#24607 - MyISAM pointer size determined incorrectly
        Fixed test results.
      112ef50f
    • unknown's avatar
      After merge fix. · 5e0fd916
      unknown authored
      5e0fd916
  16. 22 Jan, 2007 1 commit
    • unknown's avatar
      Give warnings for unused objects · b4f80eed
      unknown authored
      Changed error message to be compatible with old error file
      Added new error message for new DUP_ENTRY syntax
      
      
      BUILD/SETUP.sh:
        Give warnings for unused objects
      mysql-test/extra/binlog_tests/insert_select-binlog.test:
        Changed to use new error message
      mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
        Changed to use new error message
      mysql-test/extra/rpl_tests/rpl_auto_increment.test:
        Changed to use new error message
      mysql-test/extra/rpl_tests/rpl_foreign_key.test:
        Changed to use new error message
      mysql-test/extra/rpl_tests/rpl_insert_id.test:
        Changed to use new error message
      mysql-test/extra/rpl_tests/rpl_insert_id_pk.test:
        Changed to use new error message
      mysql-test/extra/rpl_tests/rpl_loaddata.test:
        Changed to use new error message
      mysql-test/extra/rpl_tests/rpl_row_basic.test:
        Changed to use new error message
      mysql-test/extra/rpl_tests/rpl_stm_EE_err2.test:
        Changed to use new error message
      mysql-test/extra/rpl_tests/rpl_trig004.test:
        Changed to use new error message
      mysql-test/include/mix1.inc:
        Changed to use new error message
      mysql-test/include/mix2.inc:
        Changed to use new error message
      mysql-test/include/ps_modify.inc:
        Changed to use new error message
      mysql-test/include/query_cache.inc:
        Changed to use new error message
      mysql-test/include/varchar.inc:
        Changed to use new error message
      mysql-test/r/create.result:
        Changed to use new error message
      mysql-test/r/rpl_sp.result:
        Changed to use new error message
      mysql-test/r/sp.result:
        Changed to use new error message
      mysql-test/r/view.result:
        Changed to use new error message
      mysql-test/t/auto_increment.test:
        Changed to use new error message
      mysql-test/t/create.test:
        Changed to use new error message
      mysql-test/t/create_select_tmp.test:
        Changed to use new error message
      mysql-test/t/ctype_utf8.test:
        Changed to use new error message
      mysql-test/t/delayed.test:
        Changed to use new error message
      mysql-test/t/heap.test:
        Changed to use new error message
      mysql-test/t/heap_btree.test:
        Changed to use new error message
      mysql-test/t/heap_hash.test:
        Changed to use new error message
      mysql-test/t/innodb.test:
        Changed to use new error message
      mysql-test/t/insert_select.test:
        Changed to use new error message
      mysql-test/t/insert_update.test:
        Changed to use new error message
      mysql-test/t/join_outer.test:
        Changed to use new error message
      mysql-test/t/key.test:
        Changed to use new error message
      mysql-test/t/merge.test:
        Changed to use new error message
      mysql-test/t/myisam.test:
        Changed to use new error message
      mysql-test/t/ndb_charset.test:
        Changed to use new error message
      mysql-test/t/ndb_index_unique.test:
        Changed to use new error message
      mysql-test/t/ndb_insert.test:
        Changed to use new error message
      mysql-test/t/ndb_replace.test:
        Changed to use new error message
      mysql-test/t/ndb_update.test:
        Changed to use new error message
      mysql-test/t/replace.test:
        Changed to use new error message
      mysql-test/t/rpl_err_ignoredtable.test:
        Changed to use new error message
      mysql-test/t/rpl_row_create_table.test:
        Changed to use new error message
      mysql-test/t/rpl_skip_error-slave.opt:
        Changed to use new error message
      mysql-test/t/rpl_sp.test:
        Changed to use new error message
      mysql-test/t/show_check.test:
        Changed to use new error message
      mysql-test/t/sp-error.test:
        Changed to use new error message
      mysql-test/t/sp.test:
        Changed to use new error message
      mysql-test/t/sp_trans.test:
        Changed to use new error message
      mysql-test/t/temp_table.test:
        Changed to use new error message
      mysql-test/t/type_binary.test:
        Changed to use new error message
      mysql-test/t/type_bit.test:
        Changed to use new error message
      mysql-test/t/type_bit_innodb.test:
        Changed to use new error message
      mysql-test/t/type_blob.test:
        Changed to use new error message
      mysql-test/t/type_varchar.test:
        Changed to use new error message
      mysql-test/t/view.test:
        Changed to use new error message
      sql/handler.cc:
        ER_DUP_ENTRY -> ER_DUP_ENTRY_WITH_KEY_NAME
      sql/share/errmsg.txt:
        Changed error message to be compatible with old error file
        Added new error message for new DUP_ENTRY syntax
      sql/sql_table.cc:
        ER_DUP_ENTRY -> ER_DUP_ENTRY_WITH_KEY_NAME
      sql-bench/example:
        Example file for how to run tests
      b4f80eed
  17. 17 Jan, 2007 3 commits
  18. 05 Jan, 2007 1 commit
    • unknown's avatar
      Bug#24607 - MyISAM pointer size determined incorrectly · 422d6b35
      unknown authored
      The function mi_get_pointer_length() computed too small
      pointer size for very large tables.
      
      Inserted missing 'else' between the branches for very
      large tables.
      
      
      myisam/mi_create.c:
        Bug#24607 - MyISAM pointer size determined incorrectly
        Inserted missing 'else' between the branches for very
        large tables.
        Harmonized literals "(longlong) 1" and "1L" to "ULL(1)"
        where they are used for "ulonglong file_length".
      mysql-test/r/myisam.result:
        Bug#24607 - MyISAM pointer size determined incorrectly
        Added the test result.
      mysql-test/t/myisam.test:
        Bug#24607 - MyISAM pointer size determined incorrectly
        Added the test.
      422d6b35
  19. 20 Dec, 2006 1 commit
    • unknown's avatar
      BUG#21310 - Trees in SQL causing a "crashed" table with MyISAM storage engine · 9d85b0a6
      unknown authored
      An update that used a join of a table to itself and modified the
      table on one side of the join reported the table as crashed or
      updated wrong rows.
      
      Fixed by creating temporary table for self-joined multi update statement.
      
      
      mysql-test/r/myisam.result:
        A test case for BUG#21310.
      mysql-test/t/myisam.test:
        A test case for BUG#21310.
      sql/lock.cc:
        Exclude 'table' param from check.
      sql/sql_update.cc:
        Disabling record cache for self-joined multi update statement is wrong.
        The join must only see the table as it was at the beginning of the statement.
        safe_update_on_fly check if it is safe to update first table on the fly, that is
        not creating temporary table. It is possible in case a row from this table is
        never read more than once. safe_update_on_fly now detect self-joined table and
        refuse to update this table on the fly.
      9d85b0a6
  20. 19 Dec, 2006 1 commit
    • unknown's avatar
      remove hard-coded socket paths from some tests · 2eeeb9b4
      unknown authored
      mysql-test/t/grant_cache.test:
        replace hard-coded socket paths with variable containing the appropriate path
      mysql-test/t/myisam.test:
        replace hard-coded socket paths with variable containing the appropriate path
      mysql-test/t/query_cache_notembedded.test:
        replace hard-coded socket paths with variable containing the appropriate path
      mysql-test/t/rpl000015.test:
        replace hard-coded socket paths with variable containing the appropriate path
      mysql-test/t/rpl000017.test:
        replace hard-coded socket paths with variable containing the appropriate path
      mysql-test/t/rpl_rotate_logs.test:
        replace hard-coded socket paths with variable containing the appropriate path
      2eeeb9b4
  21. 14 Dec, 2006 3 commits
  22. 25 Oct, 2006 1 commit
    • unknown's avatar
      Bug#22119 - Changing MI_KEY_BLOCK_LENGTH makes a wrong myisamchk · 47efcbbd
      unknown authored
      Added the promised test case.
      
      
      mysql-test/r/myisam.result:
        Bug#22119 - Changing MI_KEY_BLOCK_LENGTH makes a wrong myisamchk
        Added test result.
      mysql-test/t/myisam.test:
        Bug#22119 - Changing MI_KEY_BLOCK_LENGTH makes a wrong myisamchk
        Added test case.
      47efcbbd
  23. 09 Oct, 2006 1 commit
    • unknown's avatar
      Bug#8283 - OPTIMIZE TABLE causes data loss · 3109da77
      unknown authored
      OPTIMIZE TABLE with myisam_repair_threads > 1 performs a non-quick 
      parallel repair. This means that it does not only rebuild all 
      indexes, but also the data file.
      
      Non-quick parallel repair works so that there is one thread per 
      index. The first of the threads rebuilds also the new data file.
      
      The problem was that all threads shared the read io cache on the
      old data file. If there were holes (deleted records) in the table,
      the first thread skipped them, writing only contiguous, non-deleted
      records to the new data file. Then it built the new index so that
      its entries pointed to the correct record positions. But the other
      threads didn't know the new record positions, but put the positions
      from the old data file into the index.
      
      The new design is so that there is a shared io cache which is filled
      by the first thread (the data file writer) with the new contiguous
      records and read by the other threads. Now they know the new record
      positions.
      
      Another problem was that for the parallel repair of compressed
      tables a common bit_buff and rec_buff was used. I changed it so
      that thread specific buffers are used for parallel repair.
      
      A similar problem existed for checksum calculation. I made this
      multi-thread safe too.
      
      
      include/my_sys.h:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Redesign of io_cache_share.
      include/myisam.h:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Redesign of checksum calculation in mi_check.c.
        'calc_checksum' is now in myisamdef.h:st_mi_sort_param.
      myisam/mi_check.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Implemented a new parallel repair design.
        Using a synchronized shared read/write cache.
        Allowed for thread specific bit_buff, rec_buff, and calc_checksum.
      myisam/mi_open.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Added DBUG output.
      myisam/mi_packrec.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Allowed for thread specific bit_buff and rec_buff.
      myisam/myisamdef.h:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Commented on checksum calculation variables.
        Allowed for thread specific bit_buff.
        Added DBUG output for better table crash detection.
      myisam/sort.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Added implications of the new parallel repair design.
        Renamed 'info' -> 'sort_param'.
        Added DBUG output.
      mysql-test/r/myisam.result:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Added test results.
      mysql-test/t/myisam.test:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Added test cases.
      mysys/mf_iocache.c:
        Bug#8283 - OPTIMIZE TABLE causes data loss
        Redesign of io_cache_share.
        We do now allow a writer to synchronize himself with the
        readers of a shared cache. When all threads join in the lock,
        the writer copies the data from his write buffer to the shared
        read buffer.
      3109da77
  24. 07 Sep, 2006 1 commit
    • unknown's avatar
      Bug#14400 - Query joins wrong rows from table which is subject of · 71314617
      unknown authored
                  "concurrent insert"
      Additional fix for full keys and test case.
      
      
      myisam/mi_rkey.c:
        Bug#14400 - Query joins wrong rows from table which is subject of
                    "concurrent insert"
        Additional fix for full keys.
      mysql-test/r/myisam.result:
        Bug#14400 - Query joins wrong rows from table which is subject of
                    "concurrent insert"
        Additional results.
      mysql-test/t/myisam.test:
        Bug#14400 - Query joins wrong rows from table which is subject of
                    "concurrent insert"
        Additional test case.
      71314617
  25. 29 Aug, 2006 1 commit
    • unknown's avatar
      Bug#14400 - Query joins wrong rows from table which is · 7d600f71
      unknown authored
                  subject of "concurrent insert"
      Better fix by Monty: "The previous bug fix didn't work
      when using partial keys."
      
      
      mysql-test/r/myisam.result:
        Bug#14400 - Query joins wrong rows from table which is
                    subject of "concurrent insert"
        Added test result
      mysql-test/t/myisam.test:
        Bug#14400 - Query joins wrong rows from table which is
                    subject of "concurrent insert"
        Added test case
      7d600f71
  26. 25 Aug, 2006 1 commit
    • unknown's avatar
      Fix running tests suite with non standard tmp dir. · db2a86ce
      unknown authored
      Default is "var/tmp" 
      
      
      mysql-test/r/myisam.result:
        Update result file
      mysql-test/t/myisam.test:
        If running test suite with a non standard tmp dir, the "show create table" will print "DATA DIRECTORY="
        Use replace_result to mask it out
        Set tmpdir to var/log to get the printout of DATA DIRECTORY also when running with standard tmpdir
      db2a86ce
  27. 10 Aug, 2006 1 commit
    • unknown's avatar
      Better bug fix for #14400 "Query joins wrong rows from table which is subject... · dcb66590
      unknown authored
      Better bug fix for #14400 "Query joins wrong rows from table which is subject of "concurrent insert""
      The previous bug fix didn't work when using partial keys.
      Don't use GNUC min/max operations are they are depricated.
      Fixed valgrind warning
      
      
      BitKeeper/etc/ignore:
        Added */.libs/*
      include/my_global.h:
        Don't use GNUC min/max operations are they are depricated
      myisam/mi_rkey.c:
        Better bug fix for #14400 "Query joins wrong rows from table which is subject of "concurrent insert""
        The previous bug fix didn't work when using partial keys.
      myisam/mi_test_all.res:
        Updated results to match mi_test_all.sh
      myisam/mi_test_all.sh:
        Removed confusing warning
      mysql-test/r/myisam.result:
        Added test case for #14400
      mysql-test/t/myisam.test:
        Added test case for #14400
      sql/sql_select.cc:
        Fixed valgrind warning (in field_string::val_int())
      dcb66590
  28. 10 Jul, 2006 2 commits
  29. 06 Jul, 2006 1 commit
    • unknown's avatar
      Bug#8706 · 854d7c4d
      unknown authored
        "temporary table with data directory option fails"
        myisam should not use user-specified table name when creating
        temporary tables and use generated connection specific real name.
        Test included.
      
      
      myisam/mi_create.c:
        Bug#8706
          When creating a temporary table with directory override, ensure that
          the real filename is using the hidden temporary name otherwise
          multiple clients cannot have same named temporary tables without
          conflict.
      mysql-test/r/myisam.result:
        Bug#8706
          Test for bug
      mysql-test/t/myisam.test:
        Bug#8706
          Test for bug
      854d7c4d
  30. 21 Jun, 2006 1 commit
    • unknown's avatar
      BUG#20357 - Got error 124 from storage engine using MIN and MAX · 5c0cdea6
      unknown authored
                  functions in queries
      
      Using MAX()/MIN() on table with disabled indexes (by ALTER TABLE)
      results in error 124 (wrong index) from storage engine.
      
      The problem was that optimizer use disabled index to optimize
      MAX()/MIN(). Normally it must skip disabled index and perform
      table scan.
      
      This patch skips disabled indexes for min/max optimization.
      
      
      mysql-test/r/myisam.result:
        Test case for BUG#20357.
      mysql-test/t/myisam.test:
        Test case for BUG#20357.
      sql/opt_sum.cc:
        Skip disabled/ignored indexes for min/max optimization.
      5c0cdea6
  31. 19 Jun, 2006 1 commit
    • unknown's avatar
      BUG#18036 - update of table joined to self reports table as crashed · 46cdd39e
      unknown authored
      Certain updates of table joined to self results in unexpected
      behavior.
      
      The problem was that record cache was mistakenly enabled for
      self-joined table updates. Normally record cache must be disabled
      for such updates.
      
      Fixed wrong condition in code that determines whether to use
      record cache for self-joined table updates.
      
      Only MyISAM tables were affected.
      
      
      mysql-test/r/myisam.result:
        Test case for BUG#18036.
      mysql-test/t/myisam.test:
        Test case for BUG#18036.
      sql/sql_update.cc:
        Fixed wrong condition in code that determines whether to use
        record cache for self-joined table updates.
      46cdd39e
  32. 08 May, 2006 1 commit
  33. 03 May, 2006 1 commit
    • unknown's avatar
      Added support for key_block_size for key and table level (WL#602) · d50ae165
      unknown authored
      Added support for key_block_size to MyISAM.
      Simplify interface to 'new Key' to make it easier to add new key options.
      mysqld option --new is used to define where key options are printed.
      (In 5.3 we should move all key options to after key part definition to avoid problem with reserved names)
      Fixed some compiler warnings and a memory leak in ssl
      
      
      include/my_base.h:
        Added flag to check if block size for key was secified
      include/my_sys.h:
        Added new support function to round up to a power of two
      include/myisam.h:
        Rename block_size -> block_size_index to avoid confusion with 'block_size'
      include/violite.h:
        Added function to free memory after new_VioSSLAcceptorFd
        (Will rename all vio_ssl functions in a future changeset)
      mysql-test/mysql-test-run.pl:
        Don't print port number info when we use --extern
      mysql-test/r/myisam.result:
        Added test for key_block_size
      mysql-test/t/myisam.test:
        Added test for key_block_size
      mysys/mf_keycache.c:
        Simplify code
      mysys/my_bit.c:
        Added new support function to round up to a power of two
      sql/ha_myisam.cc:
        Tell MyISAM to use the specified key_block_size
        MyISAM also updates the global key_block_size from the used values.
      sql/handler.cc:
        Added 'default_key_create_info' to be used as 'dummy' argument to 'new Key'
      sql/handler.h:
        Added KEY_CREATE_INFO, to be used as for general options for KEY's
      sql/item_func.h:
        Removed compiler warning
      sql/lex.h:
        Added new symbol
      sql/mysqld.cc:
        Fixed memory leak in ssl (new_VioSSLAcceptorFd)
      sql/sql_class.h:
        Change 'new Key' to use KEY_CREATE_INFO instead of 'algoritm', parser, key_page_size.
        This makes it easier to add new key options in the future.
      sql/sql_lex.h:
        Added key create options
      sql/sql_parse.cc:
        Use new interface to 'new Key'
      sql/sql_show.cc:
        Added support for key_block_size
        If --new is used, key options are printed after the key part definition.
      sql/sql_table.cc:
        Use new interface to 'new Key'
        Add support for key_block_size
      sql/sql_yacc.yy:
        Add support for key_block_size
        Allow key options before and after key_parts (In future they should be always after the key_part defintion)
        Use new interface to 'new Key'
      sql/structs.h:
        Added block_size to keys
      sql/table.cc:
        Remmeber and read key_block_size for table and key level
      sql/table.h:
        Added default key_block_size for table
      sql/unireg.cc:
        Remember key_block_size for key
      storage/myisam/ft_eval.c:
        Set block_length to 0 to get default key page size
      storage/myisam/ft_test1.c:
        Set block_length to 0 to get default key page size
      storage/myisam/mi_check.c:
        block_size -> block_size_index
      storage/myisam/mi_create.c:
        Added support for block size per key.
        Block size is rounded up to next power of two and enforced between MIN and MAX KEY_BLOCK_LENGTH.
        Align start of key block to start at an even offset of max_key_block_length to ensure key cache works good if all key pages are of same size.
      storage/myisam/mi_open.c:
        block_size -> block_size_index
      storage/myisam/mi_page.c:
        block_size -> block_size_index
      storage/myisam/mi_test1.c:
        Set block_length to 0 to get default key page size
      storage/myisam/mi_test2.c:
        Set block_length to 0 to get default key page size
      storage/myisam/mi_test3.c:
        Set block_length to 0 to get default key page size
      storage/myisam/myisamdef.h:
        block_size -> block_size_index to avoid confusion with 'block_size' in MySQL
        Added block_size as argument to MI_BLOCK_SIZE
        Added missing prototypes to get rid of compiler warnings
      storage/myisam/myisampack.c:
        Removed compiler warning
        block_size -> block_size_index
      vio/viosslfactories.c:
        Fixed memory leak in ssl (new_VioSSLAcceptorFd)
      mysql-test/r/myisam-system.result:
        New BitKeeper file ``mysql-test/r/myisam-system.result''
      mysql-test/t/myisam-system.test:
        New BitKeeper file ``mysql-test/t/myisam-system.test''
      d50ae165