List:Commits« Previous MessageNext Message »
From:Alexander Nozdrin Date:February 10 2009 8:50am
Subject:bzr push into mysql-6.0 branch (alik:2720 to 2721)
View as plain text  
 2721 Alexander Nozdrin	2009-02-10 [merge]
      Merge from 6.0
modified:
  mysql-test/r/subselect3.result
  mysql-test/r/subselect3_jcl6.result
  mysql-test/t/subselect3.test
  sql/handler.cc
  sql/handler.h
  storage/innobase/handler/ha_innodb.cc
  storage/maria/ha_maria.cc
  storage/myisam/ha_myisam.cc

 2720 Dmitry Lenev	2009-02-05 [merge]
      Merge.
removed:
  mysql-test/std_data/server-cert-des.pem
  mysql-test/std_data/server-key-des.pem
  mysql-test/t/wait_timeout-master.opt
  sql/backup/debug.h
added:
  mysql-test/include/blackhole.inc
  mysql-test/r/join_optimizer.result
  mysql-test/r/myisam_keycache_coverage.result
  mysql-test/suite/backup/r/backup_datatypes.result
  mysql-test/suite/backup/r/backup_myisam.result
  mysql-test/suite/backup/r/backup_myisam_coverage.result
  mysql-test/suite/backup/r/backup_stream_errors.result
  mysql-test/suite/backup/t/backup_datatypes.test
  mysql-test/suite/backup/t/backup_myisam.test
  mysql-test/suite/backup/t/backup_myisam_coverage.test
  mysql-test/suite/backup/t/backup_stream_errors.test
  mysql-test/suite/backup_engines/r/backup_partitioning.result
  mysql-test/suite/backup_engines/t/backup_partitioning.test
  mysql-test/suite/binlog/r/binlog_tmp_table.result
  mysql-test/suite/binlog/t/binlog_tmp_table.test
  mysql-test/suite/bugs/r/rpl_bug36391.result
  mysql-test/suite/bugs/t/rpl_bug36391-master.opt
  mysql-test/suite/bugs/t/rpl_bug36391.test
  mysql-test/suite/rpl/r/rpl_cross_version.result
  mysql-test/suite/rpl/t/rpl_cross_version-master.opt
  mysql-test/suite/rpl/t/rpl_cross_version.test
  mysql-test/t/join_optimizer.test
  mysql-test/t/myisam_keycache_coverage.test
renamed:
  mysql-test/suite/backup/r/backup_myisam1.result => mysql-test/suite/backup/r/backup_myisam_extlocking.result
  mysql-test/suite/backup/r/backup_myisam2.result => mysql-test/suite/backup/r/backup_myisam_sync.result
  mysql-test/suite/backup/t/backup_myisam1-master.opt => mysql-test/suite/backup/t/backup_myisam_extlocking-master.opt
  mysql-test/suite/backup/t/backup_myisam1.test => mysql-test/suite/backup/t/backup_myisam_extlocking.test
  mysql-test/suite/backup/t/backup_myisam2.test => mysql-test/suite/backup/t/backup_myisam_sync.test
modified:
  .bzr-mysql/default.conf
  .bzrignore
  client/mysql.cc
  client/mysqltest.cc
  include/m_string.h
  include/my_pthread.h
  include/myisam.h
  mysql-test/Makefile.am
  mysql-test/extra/rpl_tests/rpl_log.test
  mysql-test/include/concurrent.inc
  mysql-test/include/mrr_tests.inc
  mysql-test/include/mtr_check.sql
  mysql-test/include/setup_fake_relay_log.inc
  mysql-test/lib/mtr_report.pm
  mysql-test/mysql-test-run.pl
  mysql-test/r/archive_aio_posix.result
  mysql-test/r/comment_index.result
  mysql-test/r/concurrent_innodb_safelog.result
  mysql-test/r/concurrent_innodb_unsafelog.result
  mysql-test/r/ctype_ldml.result
  mysql-test/r/func_compress.result
  mysql-test/r/grant4.result
  mysql-test/r/have_outfile.require
  mysql-test/r/implicit_commit.result
  mysql-test/r/init_file.result
  mysql-test/r/innodb_bug34300.result
  mysql-test/r/innodb_mrr.result
  mysql-test/r/join_cache.result
  mysql-test/r/join_nested_jcl6.result
  mysql-test/r/maria_mrr.result
  mysql-test/r/myisam_mrr.result
  mysql-test/r/myisampack.result
  mysql-test/r/not_embedded_server.result
  mysql-test/r/null_key.result
  mysql-test/r/openssl_1.result
  mysql-test/r/order_by.result
  mysql-test/r/outfile.result
  mysql-test/r/status.result
  mysql-test/r/subselect.result
  mysql-test/r/subselect3.result
  mysql-test/r/subselect3_jcl6.result
  mysql-test/r/subselect_no_mat.result
  mysql-test/r/subselect_no_opts.result
  mysql-test/r/subselect_no_semijoin.result
  mysql-test/r/subselect_sj.result
  mysql-test/r/subselect_sj2_jcl6.result
  mysql-test/r/subselect_sj_jcl6.result
  mysql-test/r/type_timestamp.result
  mysql-test/r/user_var.result
  mysql-test/r/variables.result
  mysql-test/r/view.result
  mysql-test/r/wait_timeout.result
  mysql-test/std_data/cacert.pem
  mysql-test/std_data/client-cert.pem
  mysql-test/std_data/client-key.pem
  mysql-test/std_data/server-cert.pem
  mysql-test/std_data/server-key.pem
  mysql-test/std_data/server8k-cert.pem
  mysql-test/std_data/server8k-key.pem
  mysql-test/suite/backup/r/backup_errors.result
  mysql-test/suite/backup/r/backup_logs.result
  mysql-test/suite/backup/r/backup_logs_purge.result
  mysql-test/suite/backup/r/backup_vp_nontx.result
  mysql-test/suite/backup/t/backup.test
  mysql-test/suite/backup/t/backup_errors.test
  mysql-test/suite/backup/t/backup_logs.test
  mysql-test/suite/backup/t/backup_logs_purge.test
  mysql-test/suite/backup/t/backup_vp_nontx.test
  mysql-test/suite/backup/t/disabled.def
  mysql-test/suite/binlog/r/binlog_stm_row.result
  mysql-test/suite/binlog/t/binlog_stm_row.test
  mysql-test/suite/federated/federated.inc
  mysql-test/suite/federated/federated.result
  mysql-test/suite/federated/federated_archive.result
  mysql-test/suite/federated/federated_bug_13118.result
  mysql-test/suite/federated/federated_bug_25714.result
  mysql-test/suite/federated/federated_bug_25714.test
  mysql-test/suite/federated/federated_cleanup.inc
  mysql-test/suite/federated/federated_innodb.result
  mysql-test/suite/federated/federated_server.result
  mysql-test/suite/funcs_1/datadict/charset_collation.inc
  mysql-test/suite/funcs_1/datadict/is_key_column_usage.inc
  mysql-test/suite/funcs_1/datadict/is_routines.inc
  mysql-test/suite/funcs_1/datadict/is_schemata.inc
  mysql-test/suite/funcs_1/datadict/is_tables.inc
  mysql-test/suite/funcs_1/datadict/is_triggers.inc
  mysql-test/suite/funcs_1/datadict/is_views.inc
  mysql-test/suite/funcs_1/datadict/statistics.inc
  mysql-test/suite/funcs_1/datadict/table_constraints.inc
  mysql-test/suite/funcs_1/datadict/tables.inc
  mysql-test/suite/funcs_1/datadict/tables1.inc
  mysql-test/suite/funcs_1/include/falcon_tb1.inc
  mysql-test/suite/funcs_1/include/falcon_tb2.inc
  mysql-test/suite/funcs_1/include/falcon_tb3.inc
  mysql-test/suite/funcs_1/include/falcon_tb4.inc
  mysql-test/suite/funcs_1/include/innodb_tb1.inc
  mysql-test/suite/funcs_1/include/innodb_tb2.inc
  mysql-test/suite/funcs_1/include/innodb_tb3.inc
  mysql-test/suite/funcs_1/include/innodb_tb4.inc
  mysql-test/suite/funcs_1/include/memory_tb1.inc
  mysql-test/suite/funcs_1/include/memory_tb2.inc
  mysql-test/suite/funcs_1/include/memory_tb3.inc
  mysql-test/suite/funcs_1/include/memory_tb4.inc
  mysql-test/suite/funcs_1/include/myisam_tb1.inc
  mysql-test/suite/funcs_1/include/myisam_tb2.inc
  mysql-test/suite/funcs_1/include/myisam_tb3.inc
  mysql-test/suite/funcs_1/include/myisam_tb4.inc
  mysql-test/suite/funcs_1/include/ndb_tb1.inc
  mysql-test/suite/funcs_1/include/ndb_tb2.inc
  mysql-test/suite/funcs_1/include/ndb_tb3.inc
  mysql-test/suite/funcs_1/include/ndb_tb4.inc
  mysql-test/suite/funcs_1/include/sp_tb.inc
  mysql-test/suite/funcs_1/include/tb3.inc
  mysql-test/suite/funcs_1/r/charset_collation_1.result
  mysql-test/suite/funcs_1/r/charset_collation_2.result
  mysql-test/suite/funcs_1/r/charset_collation_3.result
  mysql-test/suite/funcs_1/r/falcon_func_view.result
  mysql-test/suite/funcs_1/r/falcon_storedproc_02.result
  mysql-test/suite/funcs_1/r/falcon_storedproc_03.result
  mysql-test/suite/funcs_1/r/falcon_storedproc_06.result
  mysql-test/suite/funcs_1/r/falcon_storedproc_07.result
  mysql-test/suite/funcs_1/r/falcon_storedproc_08.result
  mysql-test/suite/funcs_1/r/falcon_storedproc_10.result
  mysql-test/suite/funcs_1/r/falcon_trig_0102.result
  mysql-test/suite/funcs_1/r/falcon_trig_0407.result
  mysql-test/suite/funcs_1/r/falcon_trig_09.result
  mysql-test/suite/funcs_1/r/falcon_trig_1011ext.result
  mysql-test/suite/funcs_1/r/falcon_views.result
  mysql-test/suite/funcs_1/r/innodb_func_view.result
  mysql-test/suite/funcs_1/r/innodb_storedproc_02.result
  mysql-test/suite/funcs_1/r/innodb_storedproc_03.result
  mysql-test/suite/funcs_1/r/innodb_storedproc_06.result
  mysql-test/suite/funcs_1/r/innodb_storedproc_07.result
  mysql-test/suite/funcs_1/r/innodb_storedproc_08.result
  mysql-test/suite/funcs_1/r/innodb_storedproc_10.result
  mysql-test/suite/funcs_1/r/innodb_trig_0102.result
  mysql-test/suite/funcs_1/r/innodb_trig_0407.result
  mysql-test/suite/funcs_1/r/innodb_trig_09.result
  mysql-test/suite/funcs_1/r/innodb_trig_1011ext.result
  mysql-test/suite/funcs_1/r/innodb_views.result
  mysql-test/suite/funcs_1/r/is_columns_falcon.result
  mysql-test/suite/funcs_1/r/is_columns_innodb.result
  mysql-test/suite/funcs_1/r/is_columns_is_embedded.result
  mysql-test/suite/funcs_1/r/is_columns_memory.result
  mysql-test/suite/funcs_1/r/is_columns_myisam.result
  mysql-test/suite/funcs_1/r/is_columns_myisam_embedded.result
  mysql-test/suite/funcs_1/r/is_columns_mysql_embedded.result
  mysql-test/suite/funcs_1/r/is_columns_ndb.result
  mysql-test/suite/funcs_1/r/is_statistics_mysql_embedded.result
  mysql-test/suite/funcs_1/r/is_table_constraints_mysql_embedded.result
  mysql-test/suite/funcs_1/r/is_tables_myisam_embedded.result
  mysql-test/suite/funcs_1/r/is_tables_mysql_embedded.result
  mysql-test/suite/funcs_1/r/memory_func_view.result
  mysql-test/suite/funcs_1/r/memory_storedproc_02.result
  mysql-test/suite/funcs_1/r/memory_storedproc_03.result
  mysql-test/suite/funcs_1/r/memory_storedproc_06.result
  mysql-test/suite/funcs_1/r/memory_storedproc_07.result
  mysql-test/suite/funcs_1/r/memory_storedproc_08.result
  mysql-test/suite/funcs_1/r/memory_storedproc_10.result
  mysql-test/suite/funcs_1/r/memory_trig_0102.result
  mysql-test/suite/funcs_1/r/memory_trig_0407.result
  mysql-test/suite/funcs_1/r/memory_trig_09.result
  mysql-test/suite/funcs_1/r/memory_trig_1011ext.result
  mysql-test/suite/funcs_1/r/memory_views.result
  mysql-test/suite/funcs_1/r/myisam_func_view.result
  mysql-test/suite/funcs_1/r/myisam_storedproc_02.result
  mysql-test/suite/funcs_1/r/myisam_storedproc_03.result
  mysql-test/suite/funcs_1/r/myisam_storedproc_06.result
  mysql-test/suite/funcs_1/r/myisam_storedproc_07.result
  mysql-test/suite/funcs_1/r/myisam_storedproc_08.result
  mysql-test/suite/funcs_1/r/myisam_storedproc_10.result
  mysql-test/suite/funcs_1/r/myisam_trig_0102.result
  mysql-test/suite/funcs_1/r/myisam_trig_0407.result
  mysql-test/suite/funcs_1/r/myisam_trig_09.result
  mysql-test/suite/funcs_1/r/myisam_trig_1011ext.result
  mysql-test/suite/funcs_1/r/myisam_views.result
  mysql-test/suite/funcs_1/r/ndb_func_view.result
  mysql-test/suite/funcs_1/r/ndb_storedproc_02.result
  mysql-test/suite/funcs_1/r/ndb_storedproc_03.result
  mysql-test/suite/funcs_1/r/ndb_storedproc_06.result
  mysql-test/suite/funcs_1/r/ndb_storedproc_07.result
  mysql-test/suite/funcs_1/r/ndb_storedproc_08.result
  mysql-test/suite/funcs_1/r/ndb_storedproc_10.result
  mysql-test/suite/funcs_1/r/ndb_trig_0102.result
  mysql-test/suite/funcs_1/r/ndb_trig_0407.result
  mysql-test/suite/funcs_1/r/ndb_trig_09.result
  mysql-test/suite/funcs_1/r/ndb_trig_1011ext.result
  mysql-test/suite/funcs_1/r/ndb_views.result
  mysql-test/suite/funcs_1/r/storedproc.result
  mysql-test/suite/funcs_1/storedproc/load_sp_tb.inc
  mysql-test/suite/funcs_1/storedproc/storedproc_06.inc
  mysql-test/suite/funcs_1/storedproc/storedproc_10.inc
  mysql-test/suite/funcs_1/t/disabled.def
  mysql-test/suite/funcs_1/t/is_basics_mixed.test
  mysql-test/suite/funcs_1/t/is_column_privileges.test
  mysql-test/suite/funcs_1/t/is_column_privileges_is_mysql_test.test
  mysql-test/suite/funcs_1/t/is_columns.test
  mysql-test/suite/funcs_1/t/is_schema_privileges.test
  mysql-test/suite/funcs_1/t/is_schema_privileges_is_mysql_test.test
  mysql-test/suite/funcs_1/t/is_schemata_is_mysql_test.test
  mysql-test/suite/funcs_1/t/is_statistics.test
  mysql-test/suite/funcs_1/t/is_table_constraints.test
  mysql-test/suite/funcs_1/t/is_table_privileges.test
  mysql-test/suite/funcs_1/t/is_user_privileges.test
  mysql-test/suite/funcs_1/t/storedproc.test
  mysql-test/suite/funcs_1/triggers/triggers_03.inc
  mysql-test/suite/funcs_1/triggers/triggers_03e_columns.inc
  mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc
  mysql-test/suite/funcs_1/triggers/triggers_03e_db_table_mix.inc
  mysql-test/suite/funcs_1/triggers/triggers_03e_definer.inc
  mysql-test/suite/funcs_1/triggers/triggers_03e_global_db_mix.inc
  mysql-test/suite/funcs_1/triggers/triggers_03e_prepare.inc
  mysql-test/suite/funcs_1/triggers/triggers_03e_table_level.inc
  mysql-test/suite/funcs_1/triggers/triggers_03e_transaction.inc
  mysql-test/suite/funcs_1/triggers/triggers_0407.inc
  mysql-test/suite/funcs_1/triggers/triggers_08.inc
  mysql-test/suite/funcs_1/triggers/triggers_09.inc
  mysql-test/suite/funcs_1/triggers/triggers_1011ext.inc
  mysql-test/suite/funcs_1/views/func_view.inc
  mysql-test/suite/jp/r/jp_create_db_sjis.result
  mysql-test/suite/jp/r/jp_create_db_ucs2.result
  mysql-test/suite/jp/r/jp_create_db_ujis.result
  mysql-test/suite/jp/r/jp_create_db_utf8.result
  mysql-test/suite/jp/t/jp_create_db_sjis.test
  mysql-test/suite/jp/t/jp_create_db_ucs2.test
  mysql-test/suite/jp/t/jp_create_db_ujis.test
  mysql-test/suite/jp/t/jp_create_db_utf8.test
  mysql-test/suite/parts/inc/partition_key_32col.inc
  mysql-test/suite/parts/inc/partition_layout_check1.inc
  mysql-test/suite/parts/inc/partition_layout_check2.inc
  mysql-test/suite/parts/r/ndb_dd_backuprestore.result
  mysql-test/suite/parts/r/partition_special_innodb.result
  mysql-test/suite/parts/r/partition_special_myisam.result
  mysql-test/suite/parts/r/rpl_partition.result
  mysql-test/suite/parts/t/disabled.def
  mysql-test/suite/parts/t/partition_recover_myisam.test
  mysql-test/suite/parts/t/partition_repair_myisam.test
  mysql-test/suite/parts/t/rpl_partition.test
  mysql-test/suite/rpl/r/rpl_backup.result
  mysql-test/suite/rpl/r/rpl_blackhole.result
  mysql-test/suite/rpl/r/rpl_row_log.result
  mysql-test/suite/rpl/r/rpl_row_log_innodb.result
  mysql-test/suite/rpl/r/rpl_stm_log.result
  mysql-test/suite/rpl/r/rpl_trigger.result
  mysql-test/suite/rpl/t/disabled.def
  mysql-test/suite/rpl/t/rpl_backup.test
  mysql-test/suite/rpl/t/rpl_blackhole.test
  mysql-test/suite/rpl/t/rpl_heartbeat.test
  mysql-test/suite/rpl/t/rpl_trigger.test
  mysql-test/suite/rpl_ndb/r/rpl_ndb_circular_2ch.result
  mysql-test/suite/rpl_ndb/r/rpl_ndb_mixed_tables.result
  mysql-test/suite/rpl_ndb/t/disabled.def
  mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.cnf
  mysql-test/suite/rpl_ndb/t/rpl_ndb_circular_2ch.test
  mysql-test/suite/rpl_ndb/t/rpl_ndb_mixed_tables.test
  mysql-test/suite/sys_vars/inc/key_buffer_size_basic.inc
  mysql-test/suite/sys_vars/inc/query_cache_size_basic.inc
  mysql-test/suite/sys_vars/inc/query_prealloc_size_basic.inc
  mysql-test/suite/sys_vars/inc/timestamp_basic.inc
  mysql-test/suite/sys_vars/r/character_set_database_func.result
  mysql-test/suite/sys_vars/r/innodb_max_dirty_pages_pct_func.result
  mysql-test/suite/sys_vars/r/key_buffer_size_basic_32.result
  mysql-test/suite/sys_vars/r/key_buffer_size_basic_64.result
  mysql-test/suite/sys_vars/r/query_alloc_block_size_basic_32.result
  mysql-test/suite/sys_vars/r/query_cache_size_basic_32.result
  mysql-test/suite/sys_vars/r/query_cache_size_basic_64.result
  mysql-test/suite/sys_vars/r/query_prealloc_size_basic_32.result
  mysql-test/suite/sys_vars/t/character_set_database_func.test
  mysql-test/suite/sys_vars/t/disabled.def
  mysql-test/suite/sys_vars/t/innodb_max_dirty_pages_pct_func.test
  mysql-test/suite/sys_vars/t/rpl_max_binlog_size_func.test
  mysql-test/t/archive_aio_posix.test
  mysql-test/t/comment_index.test
  mysql-test/t/ctype_ldml.test
  mysql-test/t/disabled.def
  mysql-test/t/func_compress.test
  mysql-test/t/grant4.test
  mysql-test/t/implicit_commit.test
  mysql-test/t/init_file.test
  mysql-test/t/innodb_bug34300.test
  mysql-test/t/innodb_mrr.test
  mysql-test/t/join_cache.test
  mysql-test/t/maria_mrr.test
  mysql-test/t/myisam_mrr.test
  mysql-test/t/myisampack.test
  mysql-test/t/not_embedded_server.test
  mysql-test/t/openssl_1.test
  mysql-test/t/query_cache_notembedded.test
  mysql-test/t/status.test
  mysql-test/t/subselect.test
  mysql-test/t/subselect3.test
  mysql-test/t/subselect_sj.test
  mysql-test/t/system_mysql_db_fix30020.test
  mysql-test/t/type_timestamp.test
  mysql-test/t/user_limits.test
  mysql-test/t/user_var.test
  mysql-test/t/variables.test
  mysql-test/t/wait_timeout.test
  mysys/charset.c
  mysys/mf_keycache.c
  mysys/my_delete.c
  mysys/my_init.c
  mysys/my_thr_init.c
  sql/backup/Doxyfile
  sql/backup/api_types.h
  sql/backup/backup_aux.h
  sql/backup/backup_engine.h
  sql/backup/backup_info.cc
  sql/backup/backup_info.h
  sql/backup/backup_kernel.h
  sql/backup/backup_test.cc
  sql/backup/be_default.cc
  sql/backup/be_default.h
  sql/backup/be_logical.h
  sql/backup/be_native.h
  sql/backup/be_nodata.cc
  sql/backup/be_nodata.h
  sql/backup/be_snapshot.cc
  sql/backup/be_snapshot.h
  sql/backup/be_thread.cc
  sql/backup/be_thread.h
  sql/backup/buffer_iterator.cc
  sql/backup/buffer_iterator.h
  sql/backup/data_backup.cc
  sql/backup/error.h
  sql/backup/image_info.cc
  sql/backup/image_info.h
  sql/backup/kernel.cc
  sql/backup/logger.cc
  sql/backup/logger.h
  sql/backup/restore_info.h
  sql/backup/stream.cc
  sql/backup/stream.h
  sql/backup/stream_v1.c
  sql/backup/stream_v1.h
  sql/backup/stream_v1_transport.c
  sql/handler.cc
  sql/handler.h
  sql/item.cc
  sql/item_cmpfunc.cc
  sql/item_func.cc
  sql/item_func.h
  sql/log_event.cc
  sql/mysql_priv.h
  sql/mysqld.cc
  sql/opt_range.cc
  sql/opt_range.h
  sql/parse_file.cc
  sql/set_var.cc
  sql/share/errmsg.txt
  sql/si_objects.cc
  sql/si_objects.h
  sql/sql_cache.cc
  sql/sql_class.cc
  sql/sql_delete.cc
  sql/sql_join_cache.cc
  sql/sql_lex.cc
  sql/sql_lex.h
  sql/sql_parse.cc
  sql/sql_repl.cc
  sql/sql_repl.h
  sql/sql_select.cc
  sql/sql_select.h
  sql/sql_table.cc
  sql/unireg.cc
  storage/falcon/ha_falcon.cpp
  storage/maria/ha_maria.h
  storage/maria/ma_key.c
  storage/myisam/ft_parser.c
  storage/myisam/ftdefs.h
  storage/myisam/ha_myisam.cc
  storage/myisam/ha_myisam.h
  storage/myisam/mi_check.c
  storage/myisam/mi_close.c
  storage/myisam/mi_key.c
  storage/myisam/mi_open.c
  storage/myisam/myisam_backup_engine.cc
  storage/myisam/myisamdef.h
  mysql-test/suite/backup/r/backup_myisam_extlocking.result
  mysql-test/suite/backup/r/backup_myisam_sync.result
  mysql-test/suite/backup/t/backup_myisam_extlocking.test
  mysql-test/suite/backup/t/backup_myisam_sync.test

=== modified file 'mysql-test/r/subselect3.result'
--- a/mysql-test/r/subselect3.result	2009-01-30 14:13:39 +0000
+++ b/mysql-test/r/subselect3.result	2009-02-04 11:27:06 +0000
@@ -1219,6 +1219,21 @@ id	select_type	table	type	possible_keys	
 1	PRIMARY	Z	ALL	NULL	NULL	NULL	NULL	6	End materialize; Using join buffer
 drop table t0,t1,t2;
 
+BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307
+
+CREATE TABLE t1 (
+`pk` int(11) NOT NULL AUTO_INCREMENT,
+`int_key` int(11) DEFAULT NULL,
+PRIMARY KEY (`pk`),
+KEY `int_key` (`int_key`)
+) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1,9),(2,3),(3,8),(4,6),(5,9),(6,5),(7,5),(8,9),(9,1),(10,10);
+SELECT `pk` FROM t1 AS OUTR WHERE `int_key` = ALL (
+SELECT `int_key` FROM t1 AS INNR WHERE INNR . `pk` >= 9
+);
+pk
+DROP TABLE t1;
+
 BUG#40118 Crash when running Batched Key Access and requiring one match for each key
 
 create table t0(a int);

=== modified file 'mysql-test/r/subselect3_jcl6.result'
--- a/mysql-test/r/subselect3_jcl6.result	2009-02-03 09:16:53 +0000
+++ b/mysql-test/r/subselect3_jcl6.result	2009-02-04 11:27:06 +0000
@@ -1224,6 +1224,21 @@ id	select_type	table	type	possible_keys	
 1	PRIMARY	Z	ALL	NULL	NULL	NULL	NULL	6	End materialize; Using join buffer
 drop table t0,t1,t2;
 
+BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307
+
+CREATE TABLE t1 (
+`pk` int(11) NOT NULL AUTO_INCREMENT,
+`int_key` int(11) DEFAULT NULL,
+PRIMARY KEY (`pk`),
+KEY `int_key` (`int_key`)
+) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1,9),(2,3),(3,8),(4,6),(5,9),(6,5),(7,5),(8,9),(9,1),(10,10);
+SELECT `pk` FROM t1 AS OUTR WHERE `int_key` = ALL (
+SELECT `int_key` FROM t1 AS INNR WHERE INNR . `pk` >= 9
+);
+pk
+DROP TABLE t1;
+
 BUG#40118 Crash when running Batched Key Access and requiring one match for each key
 
 create table t0(a int);

=== modified file 'mysql-test/t/subselect3.test'
--- a/mysql-test/t/subselect3.test	2009-01-30 14:13:39 +0000
+++ b/mysql-test/t/subselect3.test	2009-02-04 11:27:06 +0000
@@ -989,6 +989,21 @@ explain select * from t1 where (a,b,c) i
 
 drop table t0,t1,t2;
 
+--echo
+--echo BUG#37842: Assertion in DsMrr_impl::dsmrr_init, at handler.cc:4307
+--echo
+CREATE TABLE t1 (
+  `pk` int(11) NOT NULL AUTO_INCREMENT,
+  `int_key` int(11) DEFAULT NULL,
+  PRIMARY KEY (`pk`),
+  KEY `int_key` (`int_key`)
+) ENGINE=MyISAM;
+INSERT INTO t1 VALUES (1,9),(2,3),(3,8),(4,6),(5,9),(6,5),(7,5),(8,9),(9,1),(10,10);
+SELECT `pk` FROM t1 AS OUTR WHERE `int_key` = ALL (
+ SELECT `int_key` FROM t1 AS INNR WHERE INNR . `pk` >= 9
+);
+DROP TABLE t1;
+
 --echo 
 --echo BUG#40118 Crash when running Batched Key Access and requiring one match for each key
 --echo

=== modified file 'sql/handler.cc'
--- a/sql/handler.cc	2009-02-04 10:49:16 +0000
+++ b/sql/handler.cc	2009-02-05 08:22:22 +0000
@@ -4362,17 +4362,20 @@ scan_it_again:
   @retval other Error
 */
 
-int DsMrr_impl::dsmrr_init(handler *h, KEY *key,
-                           RANGE_SEQ_IF *seq_funcs, void *seq_init_param,
-                           uint n_ranges, uint mode, HANDLER_BUFFER *buf)
+int DsMrr_impl::dsmrr_init(handler *h_arg, RANGE_SEQ_IF *seq_funcs, 
+                           void *seq_init_param, uint n_ranges, uint mode,
+                           HANDLER_BUFFER *buf)
 {
   uint elem_size;
-  uint keyno;
   Item *pushed_cond= NULL;
   handler *new_h2= 0;
   DBUG_ENTER("DsMrr_impl::dsmrr_init");
-  keyno= h->active_index;
 
+  /*
+    index_merge may invoke a scan on an object for which dsmrr_info[_const]
+    has not been called, so set the owner handler here as well.
+  */
+  h= h_arg;
   if (mode & HA_MRR_USE_DEFAULT_IMPL || mode & HA_MRR_SORTED)
   {
     use_default_impl= TRUE;
@@ -4393,17 +4396,28 @@ int DsMrr_impl::dsmrr_init(handler *h, K
                       elem_size;
   rowids_buf_end= rowids_buf_last;
 
+    /*
+    There can be two cases:
+    - This is the first call since index_init(), h2==NULL
+       Need to setup h2 then.
+    - This is not the first call, h2 is initalized and set up appropriately.
+       The caller might have called h->index_init(), need to switch h to
+       rnd_pos calls.
+  */
   if (!h2)
   {
     /* Create a separate handler object to do rndpos() calls. */
     THD *thd= current_thd;
+    /*
+      ::clone() takes up a lot of stack, especially on 64 bit platforms.
+      The constant 5 is an empiric result.
+    */
+    if (check_stack_overrun(thd, 5*STACK_MIN_SIZE, (uchar*) &new_h2))
+      DBUG_RETURN(1);
+    DBUG_ASSERT(h->active_index != MAX_KEY);
+    uint mrr_keyno= h->active_index;
 
-  /*
-    ::clone() takes up a lot of stack, especially on 64 bit platforms.
-    The constant 5 is an empiric result.
-  */
-  if (check_stack_overrun(thd, 5*STACK_MIN_SIZE, (uchar*) &new_h2))
-    DBUG_RETURN(1);
+    /* Create a separate handler object to do rndpos() calls. */
     if (!(new_h2= h->clone(thd->mem_root)) || 
         new_h2->ha_external_lock(thd, F_RDLCK))
     {
@@ -4411,31 +4425,55 @@ int DsMrr_impl::dsmrr_init(handler *h, K
       DBUG_RETURN(1);
     }
 
-    if (keyno == h->pushed_idx_cond_keyno)
+    if (mrr_keyno == h->pushed_idx_cond_keyno)
       pushed_cond= h->pushed_idx_cond;
+
+    /*
+      Caution: this call will invoke this->dsmrr_close(). Do not put the
+      created secondary table handler into this->h2 or it will delete it.
+    */
     if (h->ha_index_end())
     {
-      new_h2= h2;
+      h2=new_h2;
       goto error;
     }
 
-    h2= new_h2;
+    h2= new_h2; /* Ok, now can put it into h2 */
     table->prepare_for_position();
-    new_h2->extra(HA_EXTRA_KEYREAD);
+    h2->extra(HA_EXTRA_KEYREAD);
   
-    if (h2->ha_index_init(keyno, FALSE))
+    if (h2->ha_index_init(mrr_keyno, FALSE))
+      goto error;
+
+    use_default_impl= FALSE;
+    if (pushed_cond)
+      h2->idx_cond_push(mrr_keyno, pushed_cond);
+  }
+  else
+  {
+    /* 
+      We get here when the access alternates betwen MRR scan(s) and non-MRR
+      scans.
+
+      Calling h->index_end() will invoke dsmrr_close() for this object,
+      which will delete h2. We need to keep it, so save put it away and dont
+      let it be deleted:
+    */
+    handler *save_h2= h2;
+    h2= NULL;
+    int res= (h->inited == handler::INDEX && h->ha_index_end());
+    h2= save_h2;
+    use_default_impl= FALSE;
+    if (res)
       goto error;
   }
 
   if (h2->handler::multi_range_read_init(seq_funcs, seq_init_param, n_ranges,
-                                         mode, buf))
-    goto error;
-  
-  if (pushed_cond)
-    h2->idx_cond_push(keyno, pushed_cond);
-  if (dsmrr_fill_buffer(new_h2))
+                                          mode, buf) || 
+      dsmrr_fill_buffer())
+  {
     goto error;
-
+  }
   /*
     If the above call has scanned through all intervals in *seq, then
     adjust *buf to indicate that the remaining buffer space will not be used.
@@ -4504,7 +4542,7 @@ static int rowid_cmp(void *h, uchar *a, 
   @retval other  Error
 */
 
-int DsMrr_impl::dsmrr_fill_buffer(handler *unused)
+int DsMrr_impl::dsmrr_fill_buffer()
 {
   char *range_info;
   int res;
@@ -4551,7 +4589,7 @@ int DsMrr_impl::dsmrr_fill_buffer(handle
   DS-MRR implementation: multi_range_read_next() function
 */
 
-int DsMrr_impl::dsmrr_next(handler *h, char **range_info)
+int DsMrr_impl::dsmrr_next(char **range_info)
 {
   int res;
   uchar *cur_range_info= 0;
@@ -4569,8 +4607,7 @@ int DsMrr_impl::dsmrr_next(handler *h, c
         res= HA_ERR_END_OF_FILE;
         goto end;
       }
-
-      res= dsmrr_fill_buffer(h);
+    res= dsmrr_fill_buffer();
       if (res)
         goto end;
     }

=== modified file 'sql/handler.h'
--- a/sql/handler.h	2009-01-29 21:17:59 +0000
+++ b/sql/handler.h	2009-02-02 14:12:27 +0000
@@ -2461,14 +2461,15 @@ public:
 
   DsMrr_impl()
     : h2(NULL) {};
-
-  handler *h; /* The "owner" handler object. It is used for scanning the index */
-  TABLE *table; /* Always equal to h->table */
-private:
+  
   /*
-    Secondary handler object. It is used to retrieve full table rows by
-    calling rnd_pos().
+    The "owner" handler object (the one that calls dsmrr_XXX functions.
+    It is used to retrieve full table rows by calling rnd_pos().
   */
+  handler *h;
+  TABLE *table; /* Always equal to h->table */
+private:
+  /* Secondary handler object.  It is used for scanning the index */
   handler *h2;
 
   /* Buffer to store rowids, or (rowid, range_id) pairs */
@@ -2489,12 +2490,11 @@ public:
     h= h_arg; 
     table= table_arg;
   }
-  int dsmrr_init(handler *h, KEY *key, RANGE_SEQ_IF *seq_funcs, 
-                 void *seq_init_param, uint n_ranges, uint mode, 
-                 HANDLER_BUFFER *buf);
+  int dsmrr_init(handler *h, RANGE_SEQ_IF *seq_funcs, void *seq_init_param, 
+                 uint n_ranges, uint mode, HANDLER_BUFFER *buf);
   void dsmrr_close();
-  int dsmrr_fill_buffer(handler *h);
-  int dsmrr_next(handler *h, char **range_info);
+  int dsmrr_fill_buffer();
+  int dsmrr_next(char **range_info);
 
   ha_rows dsmrr_info(uint keyno, uint n_ranges, uint keys, uint *bufsz,
                      uint *flags, COST_VECT *cost);

=== modified file 'storage/innobase/handler/ha_innodb.cc'
--- a/storage/innobase/handler/ha_innodb.cc	2009-01-31 16:21:19 +0000
+++ b/storage/innobase/handler/ha_innodb.cc	2009-02-05 08:22:22 +0000
@@ -3468,7 +3468,6 @@ skip_field:
           prebuilt->idx_cond_func= NULL;
           prebuilt->n_index_fields= n_requested_fields;
         }
-       // file->in_range_read= FALSE;
 
 	if (index != clust_index && prebuilt->need_to_access_clustered) {
 		/* Change rec_field_no's to correspond to the clustered index
@@ -6675,7 +6674,6 @@ ha_innobase::extra(
                         /* Reset index condition pushdown state */
                         pushed_idx_cond= FALSE;
                         pushed_idx_cond_keyno= MAX_KEY;
-                        //in_range_read= FALSE;
                         prebuilt->idx_cond_func= NULL;
 			break;
 		case HA_EXTRA_NO_KEYREAD:
@@ -8497,13 +8495,12 @@ mysql_declare_plugin_end;
 int ha_innobase::multi_range_read_init(RANGE_SEQ_IF *seq, void *seq_init_param,
                           uint n_ranges, uint mode, HANDLER_BUFFER *buf)
 {
-  return ds_mrr.dsmrr_init(this, &table->key_info[active_index], 
-                           seq, seq_init_param, n_ranges, mode, buf);
+  return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf);
 }
 
 int ha_innobase::multi_range_read_next(char **range_info)
 {
-  return ds_mrr.dsmrr_next(this, range_info);
+  return ds_mrr.dsmrr_next(range_info);
 }
 
 ha_rows ha_innobase::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,
@@ -8539,7 +8536,7 @@ C_MODE_START
 static my_bool index_cond_func_innodb(void *arg)
 {
   ha_innobase *h= (ha_innobase*)arg;
-  if (h->end_range) //was: h->in_range_read
+  if (h->end_range)
   {
     if (h->compare_key2(h->end_range) > 0)
       return 2; /* caller should return HA_ERR_END_OF_FILE already */
@@ -8569,11 +8566,7 @@ int ha_innobase::read_range_first(const 
                                 bool sorted /* ignored */)
 {
   int res;
-  //if (!eq_range_arg)
-    //in_range_read= TRUE;
   res= handler::read_range_first(start_key, end_key, eq_range_arg, sorted);
-  //if (res)
-  //  in_range_read= FALSE;
   return res;
 }
 
@@ -8581,8 +8574,6 @@ int ha_innobase::read_range_first(const 
 int ha_innobase::read_range_next()
 {
   int res= handler::read_range_next();
-  //if (res)
-  //  in_range_read= FALSE;
   return res;
 }
 

=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc	2009-02-02 13:57:39 +0000
+++ b/storage/maria/ha_maria.cc	2009-02-05 08:22:22 +0000
@@ -3198,13 +3198,12 @@ int ha_maria::multi_range_read_init(RANG
                                      uint n_ranges, uint mode, 
                                      HANDLER_BUFFER *buf)
 {
-  return ds_mrr.dsmrr_init(this, &table->key_info[active_index], 
-                           seq, seq_init_param, n_ranges, mode, buf);
+  return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf);
 }
 
 int ha_maria::multi_range_read_next(char **range_info)
 {
-  return ds_mrr.dsmrr_next(this, range_info);
+  return ds_mrr.dsmrr_next(range_info);
 }
 
 ha_rows ha_maria::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,

=== modified file 'storage/myisam/ha_myisam.cc'
--- a/storage/myisam/ha_myisam.cc	2009-02-04 10:49:16 +0000
+++ b/storage/myisam/ha_myisam.cc	2009-02-05 08:22:22 +0000
@@ -2013,13 +2013,12 @@ int ha_myisam::multi_range_read_init(RAN
                                      uint n_ranges, uint mode, 
                                      HANDLER_BUFFER *buf)
 {
-  return ds_mrr.dsmrr_init(this, &table->key_info[active_index], 
-                           seq, seq_init_param, n_ranges, mode, buf);
+  return ds_mrr.dsmrr_init(this, seq, seq_init_param, n_ranges, mode, buf);
 }
 
 int ha_myisam::multi_range_read_next(char **range_info)
 {
-  return ds_mrr.dsmrr_next(this, range_info);
+  return ds_mrr.dsmrr_next(range_info);
 }
 
 ha_rows ha_myisam::multi_range_read_info_const(uint keyno, RANGE_SEQ_IF *seq,

Thread
bzr push into mysql-6.0 branch (alik:2720 to 2721)Alexander Nozdrin10 Feb