mirror of
https://github.com/MariaDB/server.git
synced 2025-08-26 01:44:06 +03:00
Fix mysql-test-run.pl to not terminate early when warnings in error logs are detected during server shutdown. Instead, give a nice summary report at the end of the failures. Fix code to make 100% sure no failures will go undetected. Revert earlier wrong change. Fix race with port allocation semaphore file permissions. Adjust testsuite to copy with new PBXT engine now in the tree. The PBXT engine causes an extra table to appear in the INFORMATION_SCHEMA. This causes different output for a few test cases. dbug/dbug.c: If DbugParse() is called multiple times, the stack->keywords for the top stack frame could be overwritten without being freed, causing a memory leak reported by Valgrind. include/my_global.h: Add useful macro for different values when Valgrind (HAVE_purify) and not. mysql-test/extra/rpl_tests/rpl_auto_increment.test: Omit pbxt variables from show variables output. mysql-test/include/have_pbxt.inc: Add facility to disable test if PBXT engine is not available. mysql-test/lib/mtr_report.pm: Give a nice summary report at the end of tests of any warnings seen in logs during server shutdowns. mysql-test/lib/mtr_unique.pm: Move chmod 777 to greatly reduce the risk of leaving the port semaphore file unaccessible bu other users. mysql-test/mysql-test-run.pl: Don't abort in case of warnings detected, instead give a nice summary report. Fix code to make 100% sure no failures will go undetected. Revert earlier wrong change when master disconnects early. mysql-test/r/information_schema.result: Omit PBXT INFORMATION_SCHEMA table from output. Move part of test to information_schema_all_engines. mysql-test/r/information_schema_all_engines.result: New file for information_schema tests that depend on which engines are available. mysql-test/r/information_schema_db.result: Move part of test to information_schema_all_engines. mysql-test/r/innodb-autoinc.result: Omit pbxt variables from show variables output. mysql-test/r/mysqlshow.result: Move part of test to information_schema_all_engines. mysql-test/suite/rpl/r/rpl_auto_increment.result: Omit pbxt variables from show variables output. mysql-test/t/information_schema.test: Omit PBXT INFORMATION_SCHEMA table from output. Move part of test to information_schema_all_engines. mysql-test/t/information_schema_all_engines.test: New file for information_schema tests that depend on which engines are available. mysql-test/t/information_schema_db.test: Move part of test to information_schema_all_engines. mysql-test/t/innodb-autoinc.test: Omit pbxt variables from show variables output. mysql-test/t/mysqlshow.test: Move part of test to information_schema_all_engines. mysql-test/valgrind.supp: Add variant suppression (different system library versions). Add suppression for problem with inet_ntoa(). sql/mysqld.cc: Fix missing DBUG_RETURN. Fix uninitialised thd->connect_utime, likely introduced by pool_of_threads. sql/set_var.cc: Fix one-byte buffer overflow in several places. Fix unsafe use of String::c_ptr() of stack-allocated String buffer. sql/sql_select.cc: Silence valgrind warning due to GCC bug. sql/sql_string.h: Document potential problem with String::c_ptr() and String() constructor with caller-supplied buffer. storage/archive/azio.c: Silence Valgrind false warning for libz.
168 lines
4.8 KiB
Plaintext
168 lines
4.8 KiB
Plaintext
#
|
|
# Test of auto_increment with offset
|
|
#
|
|
#####################################
|
|
# By: JBM
|
|
# Date: 2006-02-10
|
|
# Change: NDB does not support auto inc
|
|
# in this usage. Currently there is no
|
|
# plan to implment. Skipping test when
|
|
# NDB is default engine.
|
|
#####################################
|
|
-- source include/not_ndb_default.inc
|
|
-- source include/master-slave.inc
|
|
|
|
eval create table t1 (a int not null auto_increment,b int, primary key (a)) engine=$engine_type2 auto_increment=3;
|
|
insert into t1 values (NULL,1),(NULL,2),(NULL,3);
|
|
select * from t1;
|
|
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
connection master;
|
|
drop table t1;
|
|
|
|
eval create table t1 (a int not null auto_increment,b int, primary key (a)) engine=$engine_type2;
|
|
insert into t1 values (1,1),(NULL,2),(3,3),(NULL,4);
|
|
delete from t1 where b=4;
|
|
insert into t1 values (NULL,5),(NULL,6);
|
|
select * from t1;
|
|
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
connection master;
|
|
|
|
drop table t1;
|
|
|
|
set @@session.auto_increment_increment=100, @@session.auto_increment_offset=10;
|
|
show variables like "auto_inc%";
|
|
|
|
eval create table t1 (a int not null auto_increment, primary key (a)) engine=$engine_type2;
|
|
# Insert with 2 insert statements to get better testing of logging
|
|
insert into t1 values (NULL),(5),(NULL);
|
|
insert into t1 values (250),(NULL);
|
|
select * from t1;
|
|
insert into t1 values (1000);
|
|
set @@insert_id=400;
|
|
insert into t1 values(NULL),(NULL);
|
|
select * from t1;
|
|
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
connection master;
|
|
drop table t1;
|
|
|
|
#
|
|
# Same test with innodb (as the innodb code is a bit different)
|
|
#
|
|
eval create table t1 (a int not null auto_increment, primary key (a)) engine=$engine_type;
|
|
# Insert with 2 insert statements to get better testing of logging
|
|
insert into t1 values (NULL),(5),(NULL);
|
|
insert into t1 values (250),(NULL);
|
|
select * from t1;
|
|
insert into t1 values (1000);
|
|
set @@insert_id=400;
|
|
insert into t1 values(NULL),(NULL);
|
|
select * from t1;
|
|
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
connection master;
|
|
drop table t1;
|
|
|
|
set @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;
|
|
eval create table t1 (a int not null auto_increment, primary key (a)) engine=$engine_type2;
|
|
# Insert with 2 insert statements to get better testing of logging
|
|
insert into t1 values (NULL),(5),(NULL),(NULL);
|
|
insert into t1 values (500),(NULL),(502),(NULL),(NULL);
|
|
select * from t1;
|
|
set @@insert_id=600;
|
|
--error ER_DUP_ENTRY
|
|
insert into t1 values(600),(NULL),(NULL);
|
|
set @@insert_id=600;
|
|
insert ignore into t1 values(600),(NULL),(NULL),(610),(NULL);
|
|
select * from t1;
|
|
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
connection master;
|
|
drop table t1;
|
|
|
|
#
|
|
# Test that auto-increment works when slave has rows in the table
|
|
#
|
|
set @@session.auto_increment_increment=10, @@session.auto_increment_offset=1;
|
|
|
|
eval create table t1 (a int not null auto_increment, primary key (a)) engine=$engine_type2;
|
|
|
|
sync_slave_with_master;
|
|
insert into t1 values(2),(12),(22),(32),(42);
|
|
connection master;
|
|
|
|
insert into t1 values (NULL),(NULL);
|
|
insert into t1 values (3),(NULL),(NULL);
|
|
select * from t1;
|
|
|
|
sync_slave_with_master;
|
|
select * from t1;
|
|
|
|
# Test for BUG#20524 "auto_increment_* not observed when inserting
|
|
# a too large value". When an autogenerated value was bigger than the
|
|
# maximum possible value of the field, it was truncated to that max
|
|
# possible value, without being "rounded down" to still honour
|
|
# auto_increment_* variables.
|
|
|
|
connection master;
|
|
drop table t1;
|
|
create table t1 (a tinyint not null auto_increment primary key) engine=myisam;
|
|
insert into t1 values(103);
|
|
set auto_increment_increment=11;
|
|
set auto_increment_offset=4;
|
|
insert into t1 values(null);
|
|
insert into t1 values(null);
|
|
--error ER_DUP_ENTRY
|
|
insert into t1 values(null);
|
|
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t1 order by a;
|
|
|
|
# same but with a larger value
|
|
create table t2 (a tinyint unsigned not null auto_increment primary key) engine=myisam;
|
|
set auto_increment_increment=10;
|
|
set auto_increment_offset=1;
|
|
set insert_id=1000;
|
|
insert into t2 values(null);
|
|
select a, mod(a-@@auto_increment_offset,@@auto_increment_increment) from t2 order by a;
|
|
|
|
# An offset so big that even first value does not fit
|
|
create table t3 like t1;
|
|
set auto_increment_increment=1000;
|
|
set auto_increment_offset=700;
|
|
insert into t3 values(null);
|
|
select * from t3 order by a;
|
|
sync_slave_with_master;
|
|
select * from t1 order by a;
|
|
select * from t2 order by a;
|
|
select * from t3 order by a;
|
|
|
|
connection master;
|
|
|
|
drop table t1,t2,t3;
|
|
sync_slave_with_master;
|
|
|
|
#
|
|
# BUG#41986 Replication slave does not pick up proper AUTO_INCREMENT value for Innodb tables
|
|
#
|
|
connection master;
|
|
set auto_increment_increment=1;
|
|
set auto_increment_offset=1;
|
|
CREATE TABLE t1 (id MEDIUMINT NOT NULL AUTO_INCREMENT PRIMARY KEY) ENGINE=innodb;
|
|
INSERT INTO t1 VALUES (NULL), (NULL), (NULL);
|
|
show create table t1;
|
|
|
|
sync_slave_with_master;
|
|
show create table t1;
|
|
|
|
connection master;
|
|
drop table t1;
|
|
|
|
# End cleanup
|
|
sync_slave_with_master;
|