diff options
Diffstat (limited to 'mysql-test/suite/versioning/common.inc')
-rw-r--r-- | mysql-test/suite/versioning/common.inc | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/mysql-test/suite/versioning/common.inc b/mysql-test/suite/versioning/common.inc new file mode 100644 index 00000000..9b901846 --- /dev/null +++ b/mysql-test/suite/versioning/common.inc @@ -0,0 +1,123 @@ +if (!$TEST_VERSIONING_SO) +{ + --skip needs test_versioning plugin +} +source include/have_innodb.inc; +--disable_query_log + +set @@session.time_zone='+00:00'; +set @@global.time_zone='+00:00'; +select ifnull(max(transaction_id), 0) into @start_trx_id from mysql.transaction_registry; +set @test_start=now(6); + +delimiter ~~; +create procedure if not exists verify_trt() +begin + set @i= 0; + select + @i:= @i + 1 as No, + transaction_id > 0 as A, + commit_id > transaction_id as B, + begin_timestamp > @test_start as C, + commit_timestamp >= begin_timestamp as D + from mysql.transaction_registry + where transaction_id > @start_trx_id; + select ifnull(max(transaction_id), 0) + into @start_trx_id + from mysql.transaction_registry; +end~~ + +create procedure if not exists verify_trt_dummy(recs int) +begin + declare i int default 1; + create temporary table tmp (No int, A bool, B bool, C bool, D bool); + while i <= recs do + insert into tmp values (i, 1, 1, 1, 1); + set i= i + 1; + end while; + select * from tmp; + drop table tmp; +end~~ + +delimiter ;~~ + +let $default_engine= `select @@default_storage_engine`; +let $non_default_engine= `select if(@@default_storage_engine = 'InnoDB', 'MyISAM', 'InnoDB')`; +let $sys_datatype_expl= timestamp(6); +let $sys_datatype_expl_uc= TIMESTAMP(6); +let $sys_datatype_max= TIMESTAMP'2038-01-19 03:14:07.999999'; + +if ($MTR_COMBINATION_MYISAM) +{ + --let $MTR_COMBINATION_TIMESTAMP= 1 +} +if ($MTR_COMBINATION_TRADITIONAL) +{ + --let $MTR_COMBINATION_TIMESTAMP= 1 +} +if ($MTR_COMBINATION_HEAP) +{ + --let $MTR_COMBINATION_TIMESTAMP= 1 +} +if ($MTR_COMBINATION_TRX_ID) +{ + let $sys_datatype_expl= bigint(20) unsigned; + let $sys_datatype_expl_uc= BIGINT(20) UNSIGNED; + let $sys_datatype_max= 18446744073709551615; +} + +eval create or replace function current_row(sys_trx_end $sys_datatype_expl) +returns int +deterministic + return sys_trx_end = $sys_datatype_max; + +eval create or replace function current_row_ts(sys_trx_end timestamp(6)) +returns int +deterministic + return convert_tz(sys_trx_end, '+00:00', @@time_zone) = TIMESTAMP'2038-01-19 03:14:07.999999'; + +delimiter ~~; +eval create or replace function check_row(row_start $sys_datatype_expl, row_end $sys_datatype_expl) +returns varchar(255) +deterministic +begin + if row_end < row_start then + return "ERROR: row_end < row_start"; + elseif row_end = row_start then + return "ERROR: row_end == row_start"; + elseif current_row(row_end) then + return "CURRENT ROW"; + end if; + return "HISTORICAL ROW"; +end~~ +delimiter ;~~ + +delimiter ~~; +eval create or replace function check_row_slave(row_start $sys_datatype_expl, row_end $sys_datatype_expl) +returns varchar(255) +deterministic +begin + if current_row(row_end) then + return "CURRENT ROW"; + end if; + return "HISTORICAL ROW"; +end~~ +delimiter ;~~ + +delimiter ~~; +eval create or replace function check_row_ts(row_start timestamp(6), row_end timestamp(6)) +returns varchar(255) +deterministic +begin + if row_end < row_start then + return "ERROR: row_end < row_start"; + elseif row_end = row_start then + return "ERROR: row_end == row_start"; + elseif current_row_ts(row_end) then + return "CURRENT ROW"; + end if; + return "HISTORICAL ROW"; +end~~ +delimiter ;~~ + +--enable_query_log |