5.6.34-79.1

This commit is contained in:
Sergei Golubchik 2016-12-02 10:24:00 +01:00
parent d9787aa29a
commit d4f0686cd8
7 changed files with 171 additions and 1 deletions

View file

@ -1,4 +1,4 @@
SET(TOKUDB_VERSION 5.6.33-79.0)
SET(TOKUDB_VERSION 5.6.34-79.1)
# PerconaFT only supports x86-64 and cmake-2.8.9+
IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64" AND
NOT CMAKE_VERSION VERSION_LESS "2.8.9")

View file

@ -3695,6 +3695,8 @@ int ha_tokudb::do_uniqueness_checks(uchar* record, DB_TXN* txn, THD* thd) {
// first do uniqueness checks
//
if (share->has_unique_keys && do_unique_checks(thd, in_rpl_write_rows)) {
DBUG_EXECUTE_IF("tokudb_crash_if_rpl_does_uniqueness_check",
DBUG_ASSERT(0););
for (uint keynr = 0; keynr < table_share->keys; keynr++) {
bool is_unique_key = (table->key_info[keynr].flags & HA_NOSAME) || (keynr == primary_key);
bool is_unique = false;
@ -5915,6 +5917,7 @@ int ha_tokudb::rnd_pos(uchar * buf, uchar * pos) {
// test rpl slave by inducing a delay before the point query
THD *thd = ha_thd();
if (thd->slave_thread && (in_rpl_delete_rows || in_rpl_update_rows)) {
DBUG_EXECUTE_IF("tokudb_crash_if_rpl_looks_up_row", DBUG_ASSERT(0););
uint64_t delay_ms = tokudb::sysvars::rpl_lookup_rows_delay(thd);
if (delay_ms)
usleep(delay_ms * 1000);

View file

@ -0,0 +1,48 @@
SET @default_storage_engine_old = @@session.default_storage_engine;
SET SESSION default_storage_engine = TOKUDB;
FLUSH INDEX_STATISTICS;
FLUSH TABLE_STATISTICS;
SET @userstat_old= @@userstat;
SET GLOBAL userstat=ON;
CREATE TABLE t1 (id int(10), PRIMARY KEY (id));
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10);
SELECT COUNT(*) FROM t1;
COUNT(*)
10
SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
ROWS_READ
10
SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
ROWS_READ
10
FLUSH TABLE_STATISTICS;
SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
ROWS_READ
SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
ROWS_READ
10
FLUSH INDEX_STATISTICS;
SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
ROWS_READ
SELECT COUNT(*) FROM t1;
COUNT(*)
10
SELECT ROWS_READ FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t1';
ROWS_READ
10
SELECT ROWS_READ FROM INFORMATION_SCHEMA.INDEX_STATISTICS WHERE TABLE_NAME='t1';
ROWS_READ
10
DROP TABLE t1;
CREATE TABLE t2 (c1 INT UNSIGNED);
ALTER TABLE t2 MODIFY c1 FLOAT;
SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t2';
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
DROP TABLE t2;
CREATE TABLE t2 (c1 INT UNSIGNED) ENGINE=InnoDB;
ALTER TABLE t2 MODIFY c1 FLOAT;
SELECT * FROM INFORMATION_SCHEMA.TABLE_STATISTICS WHERE TABLE_NAME='t2';
TABLE_SCHEMA TABLE_NAME ROWS_READ ROWS_CHANGED ROWS_CHANGED_X_INDEXES
DROP TABLE t2;
SET GLOBAL userstat= @userstat_old;
SET SESSION default_storage_engine = @default_storage_engine_old;

View file

@ -0,0 +1,8 @@
--source include/have_tokudb.inc
SET @default_storage_engine_old = @@session.default_storage_engine;
SET SESSION default_storage_engine = TOKUDB;
--source include/percona_table_index_statistics.inc
SET SESSION default_storage_engine = @default_storage_engine_old;

View file

@ -0,0 +1,36 @@
include/master-slave.inc
Warnings:
Note #### Sending passwords in plain text without SSL/TLS is extremely insecure.
Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
[connection master]
call mtr.add_suppression(".*read free replication is disabled for TokuDB table.*continue with rows lookup");
CREATE TABLE t1 (id int(11) NOT NULL, pid int(11), PRIMARY KEY (id)) ENGINE=TokuDB
PARTITION BY RANGE (id)
(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB,
PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB,
PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB);
insert into t1 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13);
CREATE TABLE t2 (id int(11) NOT NULL, pid int(11), key idx_1(id)) ENGINE=TokuDB
PARTITION BY RANGE (id)
(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB,
PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB,
PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB);
insert into t2 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13);
include/stop_slave.inc
set global debug= "+d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check";
include/start_slave.inc
insert into t1 values(21, 21);
delete from t1 where id = 11;
update t1 set pid = 2 where id = 1;
include/diff_tables.inc [master:test.t1, slave:test.t1]
insert into t2 values(21, 21);
delete from t2 where id = 11;
update t2 set pid = 2 where id = 1;
include/diff_tables.inc [master:test.t2, slave:test.t2]
drop table t1;
drop table t2;
include/stop_slave.inc
set global debug= "-d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check";
set global debug= @saved_debug;
include/start_slave.inc
include/rpl_end.inc

View file

@ -0,0 +1 @@
--read-only=ON --loose-tokudb-rpl-unique-checks=OFF --loose-tokudb-rpl-lookup-rows=OFF

View file

@ -0,0 +1,74 @@
# test tokudb read free replication feature with partition table
--source include/have_debug.inc
--source include/have_tokudb.inc
--source include/have_binlog_format_row.inc
--source include/master-slave.inc
call mtr.add_suppression(".*read free replication is disabled for TokuDB table.*continue with rows lookup");
connection master;
# partition table with explicit PK
CREATE TABLE t1 (id int(11) NOT NULL, pid int(11), PRIMARY KEY (id)) ENGINE=TokuDB
PARTITION BY RANGE (id)
(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB,
PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB,
PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB);
insert into t1 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13);
# partition table without explicit PK
CREATE TABLE t2 (id int(11) NOT NULL, pid int(11), key idx_1(id)) ENGINE=TokuDB
PARTITION BY RANGE (id)
(PARTITION p_1 VALUES LESS THAN (10) ENGINE = TokuDB,
PARTITION p_2 VALUES LESS THAN (20) ENGINE = TokuDB,
PARTITION p_all VALUES LESS THAN MAXVALUE ENGINE = TokuDB);
insert into t2 values (1, 1), (2, 2), (3, 3), (11, 11), (12, 12), (13, 13);
--sync_slave_with_master
# set tokudb rfr crash/assert conditions if we enter lookup code
# to make sure no unique checks or row lookups is invoked
connection slave;
--source include/stop_slave.inc
let $saved_debug = `select @@debug`;
set global debug= "+d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check";
--source include/start_slave.inc
connection master;
insert into t1 values(21, 21);
delete from t1 where id = 11;
update t1 set pid = 2 where id = 1;
sync_slave_with_master;
connection master;
--let $diff_tables= master:test.t1, slave:test.t1
--source include/diff_tables.inc
# print rfr disabled warning in errlog
connection master;
insert into t2 values(21, 21);
delete from t2 where id = 11;
update t2 set pid = 2 where id = 1;
sync_slave_with_master;
--let $diff_tables= master:test.t2, slave:test.t2
--source include/diff_tables.inc
connection master;
drop table t1;
drop table t2;
sync_slave_with_master;
connection slave;
--source include/stop_slave.inc
set global debug= "-d,tokudb_crash_if_rpl_looks_up_row,tokudb_crash_if_rpl_does_uniqueness_check";
set global debug= @saved_debug;
--source include/start_slave.inc
--source include/rpl_end.inc