3764 Marko Mäkelä 2012-05-02
Non-functional changes.
dict_mem_table_create(): Remove bogus comment about clustered tables,
which were never implemented in InnoDB.
create_table_def(): Remove unnecessary type casts.
modified:
storage/innobase/dict/dict0mem.cc
storage/innobase/handler/ha_innodb.cc
storage/innobase/include/dict0mem.h
3763 Rohit Kalhans 2012-05-02 [merge]
WL#5597: Using batch operations when there is no index in RBR
CONTEXT
-------
With RBR, if a table has no indexes, the slave does a full table scan for each
row changed (i.e. updated or deleted). This can be extremely time consuming
when there is a high number of rows to be updated.
SOLUTION
---------
When there is a table without a PK or an INDEX, create a temporary in-memory
index (e.g. in-memory hash table) and store the rows to be update in it. Then for
each row in the table, check if the row exists in the hash table. If there is a
match, do the operation, i.e. update or delete.
removed:
mysql-test/suite/rpl/r/rpl_row_find_row_debug.result
mysql-test/suite/rpl/t/rpl_row_find_row_debug.test
added:
mysql-test/extra/rpl_tests/rpl_row_idempotency.test
mysql-test/include/rpl_hash_scan_assertion.inc
mysql-test/suite/rpl/r/rpl_row_hash_scan.result
mysql-test/suite/rpl/r/rpl_row_hash_scan_sanity.result
mysql-test/suite/rpl/t/rpl_row_hash_scan.test
mysql-test/suite/rpl/t/rpl_row_hash_scan_sanity.test
mysql-test/suite/sys_vars/r/slave_rows_search_algorithms_basic.result
mysql-test/suite/sys_vars/t/slave_rows_search_algorithms_basic.test
modified:
mysql-test/collections/default.daily
mysql-test/extra/rpl_tests/rpl_record_compare.test
mysql-test/r/mysqld--help-notwin.result
mysql-test/r/mysqld--help-win.result
mysql-test/suite/rpl/r/rpl_bug26395.result
mysql-test/suite/rpl/r/rpl_parallel_start_stop.result
mysql-test/suite/rpl/r/rpl_relayrotate.result
mysql-test/suite/rpl/r/rpl_row_idempotency.result
mysql-test/suite/rpl/r/rpl_row_rec_comp_innodb.result
mysql-test/suite/rpl/r/rpl_row_rec_comp_myisam.result
mysql-test/suite/rpl/t/rpl_bug26395.test
mysql-test/suite/rpl/t/rpl_parallel_start_stop.test
mysql-test/suite/rpl/t/rpl_relayrotate.test
mysql-test/suite/rpl/t/rpl_row_idempotency.test
sql/handler.h
sql/log_event.cc
sql/log_event.h
sql/mysqld.cc
sql/mysqld.h
sql/rpl_utility.cc
sql/rpl_utility.h
sql/sql_class.h
sql/sys_vars.cc
storage/blackhole/ha_blackhole.h
=== modified file 'storage/innobase/dict/dict0mem.cc'
--- a/storage/innobase/dict/dict0mem.cc revid:rohit.kalhans@stripped
+++ b/storage/innobase/dict/dict0mem.cc revid:marko.makela@stripped-20120502130958-34c6majx9v4ic2w2
@@ -61,9 +61,7 @@ dict_mem_table_create(
/*==================*/
const char* name, /*!< in: table name */
ulint space, /*!< in: space where the clustered index of
- the table is placed; this parameter is
- ignored if the table is made a member of
- a cluster */
+ the table is placed */
ulint n_cols, /*!< in: number of columns */
ulint flags, /*!< in: table flags */
ulint flags2) /*!< in: table flags2 */
@@ -117,8 +115,6 @@ dict_mem_table_create(
table->fts = fts_create(table);
table->fts->cache = fts_cache_create(table);
fts_optimize_add_table(table);
- } else {
- table->fts = NULL;
}
#endif /* !UNIV_HOTBACKUP */
=== modified file 'storage/innobase/handler/ha_innodb.cc'
--- a/storage/innobase/handler/ha_innodb.cc revid:rohit.kalhans@strippedz3fs8
+++ b/storage/innobase/handler/ha_innodb.cc revid:marko.makela@stripped
@@ -8177,7 +8177,7 @@ create_table_def(
"column type and try to re-create "
"the table with an appropriate "
"column type.",
- table->name, (char*) field->field_name);
+ table->name, field->field_name);
goto err_col;
}
@@ -8241,7 +8241,7 @@ err_col:
}
dict_mem_table_add_col(table, heap,
- (char*) field->field_name,
+ field->field_name,
col_type,
dtype_form_prtype(
(ulint) field->type()
=== modified file 'storage/innobase/include/dict0mem.h'
--- a/storage/innobase/include/dict0mem.h revid:rohit.kalhans@strippedm-20120502120442-peoh8beloy7z3fs8
+++ b/storage/innobase/include/dict0mem.h revid:marko.makela@stripped130958-34c6majx9v4ic2w2
@@ -226,9 +226,7 @@ dict_mem_table_create(
/*==================*/
const char* name, /*!< in: table name */
ulint space, /*!< in: space where the clustered index
- of the table is placed; this parameter
- is ignored if the table is made
- a member of a cluster */
+ of the table is placed */
ulint n_cols, /*!< in: number of columns */
ulint flags, /*!< in: table flags */
ulint flags2); /*!< in: table flags2 */
No bundle (reason: useless for push emails).| Thread |
|---|
| • bzr push into mysql-trunk branch (marko.makela:3763 to 3764) | marko.makela | 2 May |