mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
Merge bk-internal:/home/bk/mysql-5.1-new-maint
into neptunus.(none):/home/msvensson/mysql/mysql-5.1-new-maint
This commit is contained in:
commit
5728fbb552
9 changed files with 111 additions and 98 deletions
|
@ -692,6 +692,7 @@ mysql-test/*.ds?
|
|||
mysql-test/*.vcproj
|
||||
mysql-test/gmon.out
|
||||
mysql-test/install_test_db
|
||||
mysql-test/mtr
|
||||
mysql-test/mysql-test-run
|
||||
mysql-test/mysql-test-run.log
|
||||
mysql-test/mysql_test_run_new
|
||||
|
|
|
@ -24,7 +24,7 @@ benchdir_root= $(prefix)
|
|||
testdir = $(benchdir_root)/mysql-test
|
||||
EXTRA_SCRIPTS = mysql-test-run.sh install_test_db.sh valgrind.supp $(PRESCRIPTS)
|
||||
EXTRA_DIST = $(EXTRA_SCRIPTS)
|
||||
GENSCRIPTS = mysql-test-run install_test_db
|
||||
GENSCRIPTS = mysql-test-run install_test_db mtr
|
||||
PRESCRIPTS = mysql-test-run.pl
|
||||
test_SCRIPTS = $(GENSCRIPTS) $(PRESCRIPTS)
|
||||
test_DATA = std_data/client-key.pem std_data/client-cert.pem \
|
||||
|
@ -113,6 +113,10 @@ install-data-local:
|
|||
uninstall-local:
|
||||
@RM@ -f -r $(DESTDIR)$(testdir)
|
||||
|
||||
# mtr - a shortcut for executing mysql-test-run.pl
|
||||
mtr:
|
||||
$(RM) -f mtr
|
||||
$(LN_S) mysql-test-run.pl mtr
|
||||
|
||||
SUFFIXES = .sh
|
||||
|
||||
|
|
|
@ -469,14 +469,6 @@ sub collect_one_test_case($$$$$$$) {
|
|||
{
|
||||
mtr_options_from_test_file($tinfo,"$testdir/${tname}.test");
|
||||
|
||||
if ( ! $tinfo->{'innodb_test'} )
|
||||
{
|
||||
# mtr_verbose("Adding '--skip-innodb' to $tinfo->{'name'}");
|
||||
# FIXME activate the --skip-innodb only when running with
|
||||
# selected test cases
|
||||
# push(@{$tinfo->{'master_opt'}}, "--skip-innodb");
|
||||
}
|
||||
|
||||
if ( $tinfo->{'big_test'} and ! $::opt_big_test )
|
||||
{
|
||||
$tinfo->{'skip'}= 1;
|
||||
|
|
|
@ -139,6 +139,8 @@ sub mtr_copy_dir($$) {
|
|||
my $from_dir= shift;
|
||||
my $to_dir= shift;
|
||||
|
||||
# mtr_verbose("Copying from $from_dir to $to_dir");
|
||||
|
||||
mkpath("$to_dir");
|
||||
opendir(DIR, "$from_dir")
|
||||
or mtr_error("Can't find $from_dir$!");
|
||||
|
|
|
@ -258,6 +258,7 @@ our $opt_result_ext;
|
|||
our $opt_skip;
|
||||
our $opt_skip_rpl;
|
||||
our $use_slaves;
|
||||
our $use_innodb;
|
||||
our $opt_skip_test;
|
||||
our $opt_skip_im;
|
||||
|
||||
|
@ -357,6 +358,7 @@ sub run_benchmarks ($);
|
|||
sub initialize_servers ();
|
||||
sub mysql_install_db ();
|
||||
sub install_db ($$);
|
||||
sub copy_install_db ($$);
|
||||
sub run_testcase ($);
|
||||
sub run_testcase_stop_servers ($$$);
|
||||
sub run_testcase_start_servers ($);
|
||||
|
@ -427,6 +429,7 @@ sub main () {
|
|||
$need_ndbcluster||= $test->{ndb_test};
|
||||
$need_im||= $test->{component_id} eq 'im';
|
||||
$use_slaves||= $test->{slave_num};
|
||||
$use_innodb||= $test->{'innodb_test'};
|
||||
}
|
||||
$opt_skip_ndbcluster= $opt_skip_ndbcluster_slave= 1
|
||||
unless $need_ndbcluster;
|
||||
|
@ -2235,9 +2238,10 @@ sub initialize_servers () {
|
|||
|
||||
sub mysql_install_db () {
|
||||
|
||||
# FIXME not exactly true I think, needs improvements
|
||||
install_db('master', $master->[0]->{'path_myddir'});
|
||||
install_db('master', $master->[1]->{'path_myddir'});
|
||||
|
||||
# FIXME check if testcase really is using second master
|
||||
copy_install_db('master', $master->[1]->{'path_myddir'});
|
||||
|
||||
if ( $use_slaves )
|
||||
{
|
||||
|
@ -2251,10 +2255,8 @@ sub mysql_install_db () {
|
|||
im_prepare_env($instance_manager);
|
||||
}
|
||||
|
||||
|
||||
my $cluster_started_ok= 1; # Assume it can be started
|
||||
|
||||
|
||||
if (ndbcluster_start_install($clusters->[0]) ||
|
||||
$use_slaves && ndbcluster_start_install($clusters->[1]))
|
||||
{
|
||||
|
@ -2262,7 +2264,6 @@ sub mysql_install_db () {
|
|||
$cluster_started_ok= 0;
|
||||
}
|
||||
|
||||
|
||||
foreach my $cluster (@{$clusters})
|
||||
{
|
||||
|
||||
|
@ -2302,6 +2303,18 @@ sub mysql_install_db () {
|
|||
}
|
||||
|
||||
|
||||
sub copy_install_db ($$) {
|
||||
my $type= shift;
|
||||
my $data_dir= shift;
|
||||
|
||||
mtr_report("Installing \u$type Database");
|
||||
|
||||
# Just copy the installed db from first master
|
||||
mtr_copy_dir($master->[0]->{'path_myddir'}, $data_dir);
|
||||
|
||||
}
|
||||
|
||||
|
||||
sub install_db ($$) {
|
||||
my $type= shift;
|
||||
my $data_dir= shift;
|
||||
|
@ -2456,7 +2469,7 @@ sub im_prepare_data_dir($) {
|
|||
|
||||
foreach my $instance (@{$instance_manager->{'instances'}})
|
||||
{
|
||||
install_db(
|
||||
copy_install_db(
|
||||
'im_mysqld_' . $instance->{'server_id'},
|
||||
$instance->{'path_datadir'});
|
||||
}
|
||||
|
@ -2890,7 +2903,7 @@ sub mysqld_arguments ($$$$$) {
|
|||
mtr_add_arg($args, "%s--datadir=%s", $prefix,
|
||||
$master->[$idx]->{'path_myddir'});
|
||||
|
||||
if ( $idx > 0 )
|
||||
if ( $idx > 0 or !$use_innodb)
|
||||
{
|
||||
mtr_add_arg($args, "%s--skip-innodb", $prefix);
|
||||
}
|
||||
|
|
|
@ -446,52 +446,6 @@ INSERT INTO t1 VALUES(1, 1);
|
|||
ALTER TABLE t1 CHANGE t1 t1 INT(10) auto_increment;
|
||||
ERROR 23000: ALTER TABLE causes auto_increment resequencing, resulting in duplicate entry '1' for key 'PRIMARY'
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE `t2` (
|
||||
`k` int(11) NOT NULL auto_increment,
|
||||
`a` int(11) default NULL,
|
||||
`c` int(11) default NULL,
|
||||
PRIMARY KEY (`k`),
|
||||
UNIQUE KEY `idx_1` (`a`)
|
||||
) ENGINE=InnoDB;
|
||||
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
insert into t2 ( a ) values ( 7 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
2
|
||||
select * from t2;
|
||||
k a c
|
||||
1 6 NULL
|
||||
2 7 NULL
|
||||
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
1
|
||||
select * from t2;
|
||||
k a c
|
||||
1 6 1
|
||||
2 7 NULL
|
||||
insert ignore into t2 values (null,6,1),(10,8,1);
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
1
|
||||
insert ignore into t2 values (null,6,1),(null,8,1),(null,15,1),(null,20,1);
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
11
|
||||
select * from t2;
|
||||
k a c
|
||||
1 6 1
|
||||
2 7 NULL
|
||||
10 8 1
|
||||
11 15 1
|
||||
12 20 1
|
||||
drop table t2;
|
||||
create table t1 (a int primary key auto_increment, b int, c int, d timestamp default current_timestamp, unique(b),unique(c));
|
||||
insert into t1 values(null,1,1,now());
|
||||
insert into t1 values(null,0,0,null);
|
||||
|
|
|
@ -367,3 +367,49 @@ Warnings:
|
|||
Warning 1071 Specified key was too long; max key length is 765 bytes
|
||||
insert into t1 values('aaa');
|
||||
drop table t1;
|
||||
CREATE TABLE `t2` (
|
||||
`k` int(11) NOT NULL auto_increment,
|
||||
`a` int(11) default NULL,
|
||||
`c` int(11) default NULL,
|
||||
PRIMARY KEY (`k`),
|
||||
UNIQUE KEY `idx_1` (`a`)
|
||||
) ENGINE=InnoDB;
|
||||
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
insert into t2 ( a ) values ( 7 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
2
|
||||
select * from t2;
|
||||
k a c
|
||||
1 6 NULL
|
||||
2 7 NULL
|
||||
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
1
|
||||
select * from t2;
|
||||
k a c
|
||||
1 6 1
|
||||
2 7 NULL
|
||||
insert ignore into t2 values (null,6,1),(10,8,1);
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
1
|
||||
insert ignore into t2 values (null,6,1),(null,8,1),(null,15,1),(null,20,1);
|
||||
select last_insert_id();
|
||||
last_insert_id()
|
||||
11
|
||||
select * from t2;
|
||||
k a c
|
||||
1 6 1
|
||||
2 7 NULL
|
||||
10 8 1
|
||||
11 15 1
|
||||
12 20 1
|
||||
drop table t2;
|
||||
|
|
|
@ -304,42 +304,6 @@ INSERT INTO t1 VALUES(1, 1);
|
|||
ALTER TABLE t1 CHANGE t1 t1 INT(10) auto_increment;
|
||||
DROP TABLE t1;
|
||||
|
||||
# Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY
|
||||
# UPDATE": now LAST_INSERT_ID() will return the id of the updated
|
||||
# row.
|
||||
CREATE TABLE `t2` (
|
||||
`k` int(11) NOT NULL auto_increment,
|
||||
`a` int(11) default NULL,
|
||||
`c` int(11) default NULL,
|
||||
PRIMARY KEY (`k`),
|
||||
UNIQUE KEY `idx_1` (`a`)
|
||||
) ENGINE=InnoDB;
|
||||
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
insert into t2 ( a ) values ( 7 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
select last_insert_id();
|
||||
select * from t2;
|
||||
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
select last_insert_id();
|
||||
select * from t2;
|
||||
|
||||
# Test of LAST_INSERT_ID() when autogenerated will fail:
|
||||
# last_insert_id() should not change
|
||||
insert ignore into t2 values (null,6,1),(10,8,1);
|
||||
select last_insert_id();
|
||||
# First and second autogenerated will fail, last_insert_id() should
|
||||
# point to third
|
||||
insert ignore into t2 values (null,6,1),(null,8,1),(null,15,1),(null,20,1);
|
||||
select last_insert_id();
|
||||
select * from t2;
|
||||
|
||||
drop table t2;
|
||||
|
||||
# Test of REPLACE when it does INSERT+DELETE and not UPDATE:
|
||||
# see if it sets LAST_INSERT_ID() ok
|
||||
create table t1 (a int primary key auto_increment, b int, c int, d timestamp default current_timestamp, unique(b),unique(c));
|
||||
|
|
|
@ -320,3 +320,40 @@ create table t1(f1 varchar(800) binary not null, key(f1)) engine = innodb
|
|||
character set utf8 collate utf8_general_ci;
|
||||
insert into t1 values('aaa');
|
||||
drop table t1;
|
||||
|
||||
# Fix for BUG#19243 "wrong LAST_INSERT_ID() after ON DUPLICATE KEY
|
||||
# UPDATE": now LAST_INSERT_ID() will return the id of the updated
|
||||
# row.
|
||||
CREATE TABLE `t2` (
|
||||
`k` int(11) NOT NULL auto_increment,
|
||||
`a` int(11) default NULL,
|
||||
`c` int(11) default NULL,
|
||||
PRIMARY KEY (`k`),
|
||||
UNIQUE KEY `idx_1` (`a`)
|
||||
) ENGINE=InnoDB;
|
||||
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
insert into t2 ( a ) values ( 7 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
select last_insert_id();
|
||||
select * from t2;
|
||||
insert into t2 ( a ) values ( 6 ) on duplicate key update c =
|
||||
ifnull( c,
|
||||
0 ) + 1;
|
||||
select last_insert_id();
|
||||
select * from t2;
|
||||
|
||||
# Test of LAST_INSERT_ID() when autogenerated will fail:
|
||||
# last_insert_id() should not change
|
||||
insert ignore into t2 values (null,6,1),(10,8,1);
|
||||
select last_insert_id();
|
||||
# First and second autogenerated will fail, last_insert_id() should
|
||||
# point to third
|
||||
insert ignore into t2 values (null,6,1),(null,8,1),(null,15,1),(null,20,1);
|
||||
select last_insert_id();
|
||||
select * from t2;
|
||||
|
||||
drop table t2;
|
||||
|
||||
|
|
Loading…
Reference in a new issue