From: Mattias Jonsson Date: January 10 2012 4:53pm Subject: bzr push into mysql-trunk branch (mattias.jonsson:3720) WL#4443 List-Archive: http://lists.mysql.com/commits/142360 Message-Id: <201201101653.q0AGrnJw021564@acsmt358.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3720 Mattias Jonsson 2012-01-10 [merge] WL#4443: Remove scalability problem with many lock's and external lock's on partitioned tables with many partitions Merge of completed worklog with updated mysql-trunk and 13008220 and 11761652. Replaced calls to open_and_lock_tables with calls to new functions open_query_tables and lock_query_tables to be able to prepare use of tables including pruning of partitions before locking them. open_query_tables and lock_query_tables only takes thd as argument and store its state in thd->lex (Query_tables_list). Implemented pruning of INSERTs by setting all partitions of all inserted rows to be locked before locking. Added lock pruning to EXCHANGE PARTITION and TRUNCATE PARTITION. Disabled some calls which would have evaluated subqueries during prepare. CREATE VIEW no longer lock the tables except for MDL. Added pruning in JOIN::prepare to be able to prune locks for constant conditions. added: mysql-test/r/partition_locking.result mysql-test/t/partition_locking.test modified: mysql-test/include/commit.inc mysql-test/r/commit_1innodb.result mysql-test/r/explain.result mysql-test/r/grant_cache_no_prot.result mysql-test/r/innodb_explain_non_select_none.result mysql-test/r/myisam_explain_non_select_none.result mysql-test/r/partition_binlog.result mysql-test/r/partition_datatype.result mysql-test/r/partition_error.result mysql-test/r/partition_explicit_prune.result mysql-test/r/partition_pruning.result mysql-test/r/partition_truncate.result mysql-test/r/type_date.result mysql-test/suite/binlog/r/binlog_unsafe.result mysql-test/suite/opt_trace/r/bugs_no_prot_none.result mysql-test/suite/opt_trace/r/bugs_ps_prot_none.result mysql-test/suite/parts/inc/partition-dml-1-9.inc mysql-test/suite/parts/r/partition-dml-1-9-innodb.result mysql-test/suite/parts/r/partition-dml-1-9-myisam.result mysql-test/suite/perfschema/r/stage_mdl_function.result mysql-test/t/explain.test mysql-test/t/partition_binlog.test mysql-test/t/partition_explicit_prune.test mysql-test/t/partition_pruning.test mysql-test/t/partition_truncate.test mysql-test/t/type_date.test sql/field_conv.cc sql/ha_partition.cc sql/ha_partition.h sql/handler.cc sql/handler.h sql/item_cmpfunc.cc sql/item_row.cc sql/item_strfunc.cc sql/log_event.cc sql/opt_explain.cc sql/opt_range.cc sql/opt_range.h sql/partition_info.cc sql/partition_info.h sql/share/errmsg-utf8.txt sql/sp_head.cc sql/sql_acl.cc sql/sql_base.cc sql/sql_base.h sql/sql_cache.h sql/sql_delete.cc sql/sql_executor.cc sql/sql_insert.cc sql/sql_join_buffer.cc sql/sql_lex.cc sql/sql_lex.h sql/sql_load.cc sql/sql_optimizer.cc sql/sql_parse.cc sql/sql_partition.cc sql/sql_partition_admin.cc sql/sql_prepare.cc sql/sql_resolver.cc sql/sql_select.cc sql/sql_select.h sql/sql_union.cc sql/sql_update.cc sql/sql_view.cc Diff too large for email (11378 lines, the limit is 10000). No bundle (reason: useless for push emails).