List:Commits« Previous MessageNext Message »
From:lars-erik.bjork Date:May 11 2009 9:04am
Subject:bzr push into mysql-6.0-falcon-team branch (lars-erik.bjork:2700 to 2701)
Bug#43630
View as plain text  
 2701 lars-erik.bjork@stripped	2009-05-09
      This is one of at least two patches for bug#43630 
      'A SELECT using ORDER BY and LIMIT sometimes returns no rows'
      
      The index walker logic does not handle if an index page is empty. In
      loads with lots of updates, we may get empty pages. When walking the
      index we will stop at the first empty index page, even though this is
      not the end of the level. In this test, this has often been the first
      page, resulting in no rows returned.
      
      This patch makes the search proceed to the next page when an empty
      index page that is not the end of the level is encountered.
      
      === modified file 'storage/falcon/WalkIndex.cpp'
      WalkIndex::getNextNode has been changed to reposition the index to the
      next page when an index page with BUCKET_END as it first node is
      encountered.
      modified:
        storage/falcon/WalkIndex.cpp

 2700 Olav.Sandstaa@stripped	2009-05-07 [merge]
      Merging...
      removed:
        mysql-test/include/wait_for_status_var.inc
        mysql-test/suite/rpl/t/rpl_000015-slave.sh
      added:
        mysql-test/collections/mysql-6.0-bugteam.push
        mysql-test/include/diff_master_slave.inc
        mysql-test/include/kill_query.inc
        mysql-test/include/kill_query_and_diff_master_slave.inc
        mysql-test/include/wait_for_status_var.inc
        mysql-test/r/myisam_crash_before_flush_keys.result
        mysql-test/r/myisam_debug.result
        mysql-test/r/parser_not_embedded.result
        mysql-test/std_data/bug37631.MYD
        mysql-test/std_data/bug37631.MYI
        mysql-test/std_data/bug37631.frm
        mysql-test/suite/bugs/r/rpl_bug38205.result
        mysql-test/suite/bugs/t/rpl_bug38205.test
        mysql-test/suite/ibmdb2i/
        mysql-test/suite/ibmdb2i/include/
        mysql-test/suite/ibmdb2i/include/have_i61.inc
        mysql-test/suite/ibmdb2i/include/have_ibmdb2i.inc
        mysql-test/suite/ibmdb2i/r/
        mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44020.result
        mysql-test/suite/ibmdb2i/r/ibmdb2i_bug_44025.result
        mysql-test/suite/ibmdb2i/t/
        mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44020.test
        mysql-test/suite/ibmdb2i/t/ibmdb2i_bug_44025.test
        mysql-test/suite/rpl/r/rpl_bug38694.result
        mysql-test/suite/rpl/r/rpl_init_slave_errors.result
        mysql-test/suite/rpl/r/rpl_killed_ddl.result
        mysql-test/suite/rpl/r/rpl_name_const.result
        mysql-test/suite/rpl/t/rpl_bug38694-slave.opt
        mysql-test/suite/rpl/t/rpl_bug38694.test
        mysql-test/suite/rpl/t/rpl_init_slave_errors.test
        mysql-test/suite/rpl/t/rpl_killed_ddl-master.opt
        mysql-test/suite/rpl/t/rpl_killed_ddl.test
        mysql-test/suite/rpl/t/rpl_name_const.test
        mysql-test/suite/rpl/t/rpl_start_stop_slave-slave.opt
        mysql-test/t/myisam_crash_before_flush_keys-master.opt
        mysql-test/t/myisam_crash_before_flush_keys.test
        mysql-test/t/myisam_debug.test
        mysql-test/t/parser_not_embedded.test
      modified:
        .bzr-mysql/default.conf
        BUILD/compile-alpha-ccc
        BUILD/compile-alpha-debug
        BUILD/compile-dist
        BUILD/compile-solaris-amd64
        BUILD/compile-solaris-sparc
        BUILD/compile-solaris-sparc-debug
        BUILD/compile-solaris-sparc-purify
        client/mysql.cc
        cmd-line-utils/libedit/readline/readline.h
        cmd-line-utils/libedit/term.c
        cmd-line-utils/libedit/vi.c
        config/ac-macros/libevent_configure.m4
        config/ac-macros/misc.m4
        configure.in
        extra/libevent/epoll.c
        include/my_global.h
        include/my_pthread.h
        include/thr_lock.h
        libmysql/Makefile.shared
        mysql-test/extra/rpl_tests/rpl_deadlock.test
        mysql-test/include/handler.inc
        mysql-test/include/mix1.inc
        mysql-test/lib/My/SafeProcess/Makefile.am
        mysql-test/mysql-test-run.pl
        mysql-test/r/count_distinct3.result
        mysql-test/r/ctype_utf32.result
        mysql-test/r/fulltext.result
        mysql-test/r/func_des_encrypt.result
        mysql-test/r/func_encrypt.result
        mysql-test/r/func_misc.result
        mysql-test/r/func_sapdb.result
        mysql-test/r/func_set.result
        mysql-test/r/func_str.result
        mysql-test/r/gis-rtree.result
        mysql-test/r/gis.result
        mysql-test/r/handler_innodb.result
        mysql-test/r/handler_myisam.result
        mysql-test/r/innodb.result
        mysql-test/r/innodb_mysql.result
        mysql-test/r/insert.result
        mysql-test/r/lock_multi.result
        mysql-test/r/merge.result
        mysql-test/r/myisam.result
        mysql-test/r/myisampack.result
        mysql-test/r/mysqlbinlog_row_big.result
        mysql-test/r/mysqldump.result
        mysql-test/r/not_embedded_server.result
        mysql-test/r/parser.result
        mysql-test/r/partition.result
        mysql-test/r/partition_mgm.result
        mysql-test/r/perror.result
        mysql-test/r/ps_1general.result
        mysql-test/r/repair.result
        mysql-test/r/shm.result
        mysql-test/r/sp-ucs2.result
        mysql-test/r/sp.result
        mysql-test/r/trigger.result
        mysql-test/r/type_time.result
        mysql-test/r/union.result
        mysql-test/r/upgrade.result
        mysql-test/r/varbinary.result
        mysql-test/r/variables-big.result
        mysql-test/r/variables-notembedded.result
        mysql-test/r/xml.result
        mysql-test/suite/binlog/r/binlog_stm_ps.result
        mysql-test/suite/binlog/r/binlog_unsafe.result
        mysql-test/suite/binlog/t/binlog_unsafe.test
        mysql-test/suite/funcs_1/t/disabled.def
        mysql-test/suite/funcs_2/charset/charset_master.test
        mysql-test/suite/rpl/include/rpl_mixed_ddl.inc
        mysql-test/suite/rpl/r/rpl_bug33931.result
        mysql-test/suite/rpl/r/rpl_deadlock_innodb.result
        mysql-test/suite/rpl/r/rpl_heartbeat.result
        mysql-test/suite/rpl/r/rpl_idempotency.result
        mysql-test/suite/rpl/r/rpl_skip_error.result
        mysql-test/suite/rpl/r/rpl_start_stop_slave.result
        mysql-test/suite/rpl/r/rpl_stm_loadfile.result
        mysql-test/suite/rpl/r/rpl_sync.result
        mysql-test/suite/rpl/r/rpl_udf.result
        mysql-test/suite/rpl/t/disabled.def
        mysql-test/suite/rpl/t/rpl_binlog_corruption.test
        mysql-test/suite/rpl/t/rpl_bug33931.test
        mysql-test/suite/rpl/t/rpl_heartbeat.test
        mysql-test/suite/rpl/t/rpl_idempotency.test
        mysql-test/suite/rpl/t/rpl_skip_error.test
        mysql-test/suite/rpl/t/rpl_start_stop_slave.test
        mysql-test/suite/rpl/t/rpl_sync.test
        mysql-test/suite/rpl/t/rpl_temp_table_mix_row.test
        mysql-test/suite/sys_vars/r/binlog_cache_size_basic_64.result
        mysql-test/suite/sys_vars/r/bulk_insert_buffer_size_basic_64.result
        mysql-test/suite/sys_vars/r/delayed_insert_limit_basic_64.result
        mysql-test/suite/sys_vars/r/delayed_queue_size_basic_64.result
        mysql-test/suite/sys_vars/r/join_buffer_size_basic_64.result
        mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
        mysql-test/suite/sys_vars/r/log_warnings_basic_64.result
        mysql-test/suite/sys_vars/r/max_binlog_cache_size_basic_64.result
        mysql-test/suite/sys_vars/r/max_connect_errors_basic_64.result
        mysql-test/suite/sys_vars/r/max_heap_table_size_basic_64.result
        mysql-test/suite/sys_vars/r/max_seeks_for_key_basic_64.result
        mysql-test/suite/sys_vars/r/max_tmp_tables_basic_64.result
        mysql-test/suite/sys_vars/r/max_write_lock_count_basic_64.result
        mysql-test/suite/sys_vars/r/min_examined_row_limit_basic_64.result
        mysql-test/suite/sys_vars/r/myisam_max_sort_file_size_basic_64.result
        mysql-test/suite/sys_vars/r/myisam_repair_threads_basic_64.result
        mysql-test/suite/sys_vars/r/myisam_sort_buffer_size_basic_64.result
        mysql-test/suite/sys_vars/r/net_retry_count_basic_64.result
        mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_64.result
        mysql-test/suite/sys_vars/r/query_cache_limit_basic_64.result
        mysql-test/suite/sys_vars/r/query_cache_min_res_unit_basic_64.result
        mysql-test/suite/sys_vars/r/query_cache_size_basic_64.result
        mysql-test/suite/sys_vars/r/query_prealloc_size_basic_64.result
        mysql-test/suite/sys_vars/r/range_alloc_block_size_basic_64.result
        mysql-test/suite/sys_vars/r/rpl_recovery_rank_basic_64.result
        mysql-test/suite/sys_vars/r/slave_transaction_retries_basic_64.result
        mysql-test/suite/sys_vars/r/sync_binlog_basic_64.result
        mysql-test/suite/sys_vars/r/tmp_table_size_basic.result
        mysql-test/suite/sys_vars/r/transaction_prealloc_size_basic_64.result
        mysql-test/suite/sys_vars/r/wait_timeout_basic_64.result
        mysql-test/suite/sys_vars/t/disabled.def
        mysql-test/suite/sys_vars/t/tmp_table_size_basic.test
        mysql-test/t/count_distinct3.test
        mysql-test/t/ctype_utf32.test
        mysql-test/t/disabled.def
        mysql-test/t/fulltext.test
        mysql-test/t/func_des_encrypt.test
        mysql-test/t/func_encrypt.test
        mysql-test/t/func_misc.test
        mysql-test/t/func_sapdb.test
        mysql-test/t/func_set.test
        mysql-test/t/func_str.test
        mysql-test/t/gis-rtree.test
        mysql-test/t/gis.test
        mysql-test/t/innodb_mysql.test
        mysql-test/t/insert.test
        mysql-test/t/lock_multi.test
        mysql-test/t/merge.test
        mysql-test/t/myisam.test
        mysql-test/t/myisampack.test
        mysql-test/t/mysqlbinlog_row_big.test
        mysql-test/t/mysqldump.test
        mysql-test/t/not_embedded_server.test
        mysql-test/t/parser.test
        mysql-test/t/partition.test
        mysql-test/t/partition_mgm.test
        mysql-test/t/plugin_notembedded.test
        mysql-test/t/ps_1general.test
        mysql-test/t/shm.test
        mysql-test/t/sp-ucs2.test
        mysql-test/t/sp.test
        mysql-test/t/sp_trans_log.test
        mysql-test/t/trigger.test
        mysql-test/t/type_time.test
        mysql-test/t/union.test
        mysql-test/t/upgrade.test
        mysql-test/t/variables-big.test
        mysql-test/t/variables-notembedded-master.opt
        mysql-test/t/xml.test
        mysys/charset.c
        mysys/mf_keycache.c
        mysys/my_init.c
        mysys/my_thr_init.c
        mysys/thr_mutex.c
        scripts/mysql_install_db.sh
        scripts/mysql_setpermission.sh
        scripts/mysqld_multi.sh
        scripts/mysqlhotcopy.sh
        sql/backup/backup_info.cc
        sql/backup/stream_v1.c
        sql/backup/stream_v1.h
        sql/backup/stream_v1_transport.c
        sql/events.cc
        sql/field.cc
        sql/handler.cc
        sql/item.cc
        sql/item_cmpfunc.cc
        sql/item_func.cc
        sql/item_geofunc.cc
        sql/item_strfunc.cc
        sql/item_strfunc.h
        sql/item_timefunc.cc
        sql/item_xmlfunc.cc
        sql/log.cc
        sql/log_event.cc
        sql/mysql_priv.h
        sql/parse_file.cc
        sql/parse_file.h
        sql/rpl_filter.cc
        sql/share/errmsg.txt
        sql/slave.cc
        sql/sp.cc
        sql/sp_head.cc
        sql/sp_head.h
        sql/sp_pcontext.cc
        sql/sp_pcontext.h
        sql/sql_acl.cc
        sql/sql_base.cc
        sql/sql_class.cc
        sql/sql_crypt.cc
        sql/sql_crypt.h
        sql/sql_db.cc
        sql/sql_delete.cc
        sql/sql_handler.cc
        sql/sql_lex.cc
        sql/sql_lex.h
        sql/sql_parse.cc
        sql/sql_partition.cc
        sql/sql_rename.cc
        sql/sql_repl.cc
        sql/sql_select.cc
        sql/sql_table.cc
        sql/sql_test.cc
        sql/sql_view.cc
        sql/sql_view.h
        sql/sql_yacc.yy
        storage/falcon/Interlock.h
        storage/falcon/plug.in
        storage/ibmdb2i/Makefile.am
        storage/ibmdb2i/db2i_collationSupport.cc
        storage/ibmdb2i/db2i_misc.h
        storage/ibmdb2i/ha_ibmdb2i.cc
        storage/myisam/CMakeLists.txt
        storage/myisam/ft_boolean_search.c
        storage/myisam/ha_myisam.cc
        storage/myisam/mi_close.c
        storage/myisam/mi_delete.c
        storage/myisam/mi_dynrec.c
        storage/myisam/mi_open.c
        storage/myisam/mi_packrec.c
        storage/myisam/mi_write.c
        storage/myisam/myisamchk.c
        storage/myisammrg/ha_myisammrg.cc
        storage/ndb/tools/restore/consumer_restore.cpp
        storage/ndb/tools/restore/consumer_restorem.cpp
        support-files/mysql.spec.sh
        tests/mysql_client_test.c
        vio/viosocket.c
        win/Makefile.am

=== modified file 'storage/falcon/WalkIndex.cpp'
--- a/storage/falcon/WalkIndex.cpp	2009-03-02 08:16:53 +0000
+++ b/storage/falcon/WalkIndex.cpp	2009-05-09 11:25:17 +0000
@@ -88,9 +88,21 @@ int32 WalkIndex::getNextNode(void)
 			recordNumber = node.getNumber();
 			
 			if (recordNumber >= 0)
+				{
 				return recordNumber;
-			else if (recordNumber == END_LEVEL || recordNumber == END_BUCKET)
+				}
+			else if (recordNumber == END_BUCKET)
+				{
+				// This page is empty, proceed to next page
+				IndexRootPage::repositionIndex(index->dbb, index->indexId, this);
+				continue;
+				}
+			else if (recordNumber == END_LEVEL)
+				{
 				return -1;
+				}
+
+			ASSERT (false);
 			}
 			
 		node.getNext(endNodes);

Thread
bzr push into mysql-6.0-falcon-team branch (lars-erik.bjork:2700 to 2701)Bug#43630lars-erik.bjork11 May