Skip to content

Commit 8dbdf52

Browse files
author
dlenev@mysql.com
committed
Merge mysql.com:/home/dlenev/src/mysql-5.0-bg13525
into mysql.com:/home/dlenev/src/mysql-5.1-merges2
2 parents 1f30b15 + 3d6839d commit 8dbdf52

25 files changed

+698
-60
lines changed

client/mysqltest.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -3662,8 +3662,10 @@ DYNAMIC_ARRAY patterns;
36623662
static void init_win_path_patterns()
36633663
{
36643664
/* List of string patterns to match in order to find paths */
3665-
const char* paths[] = { "$MYSQL_TEST_DIR", "./test/", 0 };
3666-
int num_paths= 2;
3665+
const char* paths[] = { "$MYSQL_TEST_DIR",
3666+
"$MYSQL_TMP_DIR",
3667+
"./test/", 0 };
3668+
int num_paths= 3;
36673669
int i;
36683670
char* p;
36693671

include/my_global.h

+9
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,15 @@
4343
#define HAVE_ERRNO_AS_DEFINE
4444
#endif /* __CYGWIN__ */
4545

46+
#if defined(__QNXNTO__) && !defined(FD_SETSIZE)
47+
#define FD_SETSIZE 1024 /* Max number of file descriptor bits in
48+
fd_set, used when calling 'select'
49+
Must be defined before including
50+
"sys/select.h" and "sys/time.h"
51+
*/
52+
#endif
53+
54+
4655
/* to make command line shorter we'll define USE_PRAGMA_INTERFACE here */
4756
#ifdef USE_PRAGMA_IMPLEMENTATION
4857
#define USE_PRAGMA_INTERFACE

mysql-test/mysql-test-run.pl

+2-1
Original file line numberDiff line numberDiff line change
@@ -1156,6 +1156,7 @@ ()
11561156
$ENV{'USE_RUNNING_SERVER'}= $glob_use_running_server;
11571157
$ENV{'MYSQL_TEST_DIR'}= $glob_mysql_test_dir;
11581158
$ENV{'MYSQLTEST_VARDIR'}= $opt_vardir;
1159+
$ENV{'MYSQL_TMP_DIR'}= $opt_tmpdir;
11591160
$ENV{'MASTER_MYSOCK'}= $master->[0]->{'path_mysock'};
11601161
$ENV{'MASTER_MYSOCK1'}= $master->[1]->{'path_mysock'};
11611162
$ENV{'MASTER_MYPORT'}= $master->[0]->{'path_myport'};
@@ -2876,7 +2877,7 @@ ($)
28762877
if ( $opt_debug )
28772878
{
28782879
$cmdline_mysqlcheck .=
2879-
" --debug=d:t:A,$opt_vardir_trace/log/mysqldump.trace";
2880+
" --debug=d:t:A,$opt_vardir_trace/log/mysqlcheck.trace";
28802881
}
28812882

28822883
my $cmdline_mysqldump= "$exe_mysqldump --no-defaults -uroot " .

mysql-test/mysql-test-run.sh

+1
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@ SYST=0
202202
REALT=0
203203
FAST_START=""
204204
MYSQL_TMP_DIR=$MYSQL_TEST_DIR/var/tmp
205+
export MYSQL_TMP_DIR
205206

206207
# Use a relative path for where the slave will find the dumps
207208
# generated by "LOAD DATA" on the master. The path is relative

mysql-test/r/index_merge.result

+22
Original file line numberDiff line numberDiff line change
@@ -402,3 +402,25 @@ explain select * from t1 force index(cola,colb) WHERE cola = 'foo' AND colb = 'b
402402
id select_type table type possible_keys key key_len ref rows Extra
403403
1 SIMPLE t1 index_merge cola,colb cola,colb 3,3 NULL 24 Using intersect(cola,colb); Using where
404404
drop table t1;
405+
create table t0 (a int);
406+
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
407+
create table t1 (
408+
a int, b int,
409+
filler1 char(200), filler2 char(200),
410+
key(a),key(b)
411+
);
412+
insert into t1 select @v:= A.a, @v, 't1', 'filler2' from t0 A, t0 B, t0 C;
413+
create table t2 like t1;
414+
create table t3 (
415+
a int, b int,
416+
filler1 char(200), filler2 char(200),
417+
key(a),key(b)
418+
) engine=merge union=(t1,t2);
419+
explain select * from t1 where a=1 and b=1;
420+
id select_type table type possible_keys key key_len ref rows Extra
421+
1 SIMPLE t1 index_merge a,b a,b 5,5 NULL # Using intersect(a,b); Using where
422+
explain select * from t3 where a=1 and b=1;
423+
id select_type table type possible_keys key key_len ref rows Extra
424+
1 SIMPLE t3 index_merge a,b a,b 5,5 NULL # Using intersect(a,b); Using where
425+
drop table t3;
426+
drop table t0, t1, t2;

mysql-test/r/merge.result

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ a b
5656
4 Testing
5757
5 table
5858
5 table
59-
6 t1
6059
6 t2
60+
6 t1
6161
7 Testing
6262
7 Testing
6363
8 table

mysql-test/r/ps.result

+14
Original file line numberDiff line numberDiff line change
@@ -859,6 +859,20 @@ count(*)
859859
5
860860
deallocate prepare stmt;
861861
drop table t1;
862+
prepare stmt from 'create table t1 (a varchar(10) character set utf8)';
863+
execute stmt;
864+
insert into t1 (a) values (repeat('a', 20));
865+
select length(a) from t1;
866+
length(a)
867+
10
868+
drop table t1;
869+
execute stmt;
870+
insert into t1 (a) values (repeat('a', 20));
871+
select length(a) from t1;
872+
length(a)
873+
10
874+
drop table t1;
875+
deallocate prepare stmt;
862876
create table t1 (id int);
863877
prepare ins_call from "insert into t1 (id) values (1)";
864878
execute ins_call;

mysql-test/r/trigger.result

+102-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
drop table if exists t1, t2, t3;
1+
drop table if exists t1, t2, t3, t4;
22
drop view if exists v1;
33
drop database if exists mysqltest;
44
drop function if exists f1;
@@ -785,6 +785,107 @@ create trigger test.t1_bi before insert on t1 for each row set @a:=0;
785785
ERROR 3D000: No database selected
786786
drop trigger t1_bi;
787787
ERROR 3D000: No database selected
788+
create table t1 (id int);
789+
create trigger t1_bi before insert on t1 for each row set @a:=new.id;
790+
insert into t1 values (101);
791+
select @a;
792+
@a
793+
101
794+
select trigger_schema, trigger_name, event_object_schema,
795+
event_object_table, action_statement from information_schema.triggers
796+
where event_object_schema = 'test';
797+
trigger_schema trigger_name event_object_schema event_object_table action_statement
798+
test t1_bi test t1 set @a:=new.id
799+
rename table t1 to t2;
800+
insert into t2 values (102);
801+
select @a;
802+
@a
803+
102
804+
select trigger_schema, trigger_name, event_object_schema,
805+
event_object_table, action_statement from information_schema.triggers
806+
where event_object_schema = 'test';
807+
trigger_schema trigger_name event_object_schema event_object_table action_statement
808+
test t1_bi test t2 set @a:=new.id
809+
alter table t2 rename to t3;
810+
insert into t3 values (103);
811+
select @a;
812+
@a
813+
103
814+
select trigger_schema, trigger_name, event_object_schema,
815+
event_object_table, action_statement from information_schema.triggers
816+
where event_object_schema = 'test';
817+
trigger_schema trigger_name event_object_schema event_object_table action_statement
818+
test t1_bi test t3 set @a:=new.id
819+
alter table t3 rename to t4, add column val int default 0;
820+
insert into t4 values (104, 1);
821+
select @a;
822+
@a
823+
104
824+
select trigger_schema, trigger_name, event_object_schema,
825+
event_object_table, action_statement from information_schema.triggers
826+
where event_object_schema = 'test';
827+
trigger_schema trigger_name event_object_schema event_object_table action_statement
828+
test t1_bi test t4 set @a:=new.id
829+
drop trigger t1_bi;
830+
drop table t4;
831+
create database mysqltest;
832+
use mysqltest;
833+
create table t1 (id int);
834+
create trigger t1_bi before insert on t1 for each row set @a:=new.id;
835+
insert into t1 values (101);
836+
select @a;
837+
@a
838+
101
839+
select trigger_schema, trigger_name, event_object_schema,
840+
event_object_table, action_statement from information_schema.triggers
841+
where event_object_schema = 'test' or event_object_schema = 'mysqltest';
842+
trigger_schema trigger_name event_object_schema event_object_table action_statement
843+
mysqltest t1_bi mysqltest t1 set @a:=new.id
844+
rename table t1 to test.t2;
845+
ERROR HY000: Trigger in wrong schema
846+
insert into t1 values (102);
847+
select @a;
848+
@a
849+
102
850+
select trigger_schema, trigger_name, event_object_schema,
851+
event_object_table, action_statement from information_schema.triggers
852+
where event_object_schema = 'test' or event_object_schema = 'mysqltest';
853+
trigger_schema trigger_name event_object_schema event_object_table action_statement
854+
mysqltest t1_bi mysqltest t1 set @a:=new.id
855+
drop trigger test.t1_bi;
856+
ERROR HY000: Trigger does not exist
857+
drop trigger t1_bi;
858+
drop table t1;
859+
drop database mysqltest;
860+
use test;
861+
create table t1 (id int);
862+
create trigger t1_bi before insert on t1 for each row set @a:=new.id;
863+
create trigger t1_ai after insert on t1 for each row set @b:=new.id;
864+
insert into t1 values (101);
865+
select @a, @b;
866+
@a @b
867+
101 101
868+
select trigger_schema, trigger_name, event_object_schema,
869+
event_object_table, action_statement from information_schema.triggers
870+
where event_object_schema = 'test';
871+
trigger_schema trigger_name event_object_schema event_object_table action_statement
872+
test t1_bi test t1 set @a:=new.id
873+
test t1_ai test t1 set @b:=new.id
874+
rename table t1 to t2;
875+
ERROR HY000: Can't create/write to file './test/t1_ai.TRN~' (Errcode: 13)
876+
insert into t1 values (102);
877+
select @a, @b;
878+
@a @b
879+
102 102
880+
select trigger_schema, trigger_name, event_object_schema,
881+
event_object_table, action_statement from information_schema.triggers
882+
where event_object_schema = 'test';
883+
trigger_schema trigger_name event_object_schema event_object_table action_statement
884+
test t1_bi test t1 set @a:=new.id
885+
test t1_ai test t1 set @b:=new.id
886+
drop trigger t1_bi;
887+
drop trigger t1_ai;
888+
drop table t1;
788889
create table t1 (i int);
789890
create trigger t1_bi before insert on t1 for each row return 0;
790891
ERROR 42000: RETURN is only allowed in a FUNCTION

mysql-test/r/view.result

+10
Original file line numberDiff line numberDiff line change
@@ -2529,3 +2529,13 @@ Warnings:
25292529
Warning 1052 Column 'x' in group statement is ambiguous
25302530
DROP VIEW v1;
25312531
DROP TABLE t1;
2532+
drop table if exists t1;
2533+
drop view if exists v1;
2534+
create table t1 (id int);
2535+
create view v1 as select * from t1;
2536+
drop table t1;
2537+
show create view v1;
2538+
drop view v1;
2539+
//
2540+
View Create View
2541+
v1 CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER VIEW `v1` AS select sql_no_cache `test`.`t1`.`id` AS `id` from `t1`

mysql-test/t/index_merge.test

+26
Original file line numberDiff line numberDiff line change
@@ -357,3 +357,29 @@ explain select * from t1 WHERE cola = 'foo' AND colb = 'bar';
357357
explain select * from t1 force index(cola,colb) WHERE cola = 'foo' AND colb = 'bar';
358358
drop table t1;
359359

360+
#
361+
# BUG#17314: Index_merge/intersection not choosen by the optimizer for MERGE tables
362+
#
363+
create table t0 (a int);
364+
insert into t0 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
365+
create table t1 (
366+
a int, b int,
367+
filler1 char(200), filler2 char(200),
368+
key(a),key(b)
369+
);
370+
insert into t1 select @v:= A.a, @v, 't1', 'filler2' from t0 A, t0 B, t0 C;
371+
create table t2 like t1;
372+
373+
create table t3 (
374+
a int, b int,
375+
filler1 char(200), filler2 char(200),
376+
key(a),key(b)
377+
) engine=merge union=(t1,t2);
378+
379+
--replace_column 9 #
380+
explain select * from t1 where a=1 and b=1;
381+
--replace_column 9 #
382+
explain select * from t3 where a=1 and b=1;
383+
384+
drop table t3;
385+
drop table t0, t1, t2;

mysql-test/t/ps.test

+21
Original file line numberDiff line numberDiff line change
@@ -900,6 +900,27 @@ execute stmt using @like;
900900
deallocate prepare stmt;
901901
drop table t1;
902902

903+
#
904+
# Bug#13134 "Length of VARCHAR() utf8 column is increasing when table is
905+
# recreated with PS/SP"
906+
#
907+
908+
prepare stmt from 'create table t1 (a varchar(10) character set utf8)';
909+
execute stmt;
910+
--disable_warnings
911+
insert into t1 (a) values (repeat('a', 20));
912+
--enable_warnings
913+
select length(a) from t1;
914+
drop table t1;
915+
execute stmt;
916+
--disable_warnings
917+
insert into t1 (a) values (repeat('a', 20));
918+
--enable_warnings
919+
# Check that the data is truncated to the same length
920+
select length(a) from t1;
921+
drop table t1;
922+
deallocate prepare stmt;
923+
903924
# End of 4.1 tests
904925

905926
#

mysql-test/t/trigger.test

+86-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#
44

55
--disable_warnings
6-
drop table if exists t1, t2, t3;
6+
drop table if exists t1, t2, t3, t4;
77
drop view if exists v1;
88
drop database if exists mysqltest;
99
drop function if exists f1;
@@ -959,6 +959,91 @@ create trigger test.t1_bi before insert on t1 for each row set @a:=0;
959959
drop trigger t1_bi;
960960
connection default;
961961

962+
#
963+
# Test for bug #13525 "Rename table does not keep info of triggers"
964+
#
965+
create table t1 (id int);
966+
create trigger t1_bi before insert on t1 for each row set @a:=new.id;
967+
insert into t1 values (101);
968+
select @a;
969+
select trigger_schema, trigger_name, event_object_schema,
970+
event_object_table, action_statement from information_schema.triggers
971+
where event_object_schema = 'test';
972+
rename table t1 to t2;
973+
# Trigger should work after rename
974+
insert into t2 values (102);
975+
select @a;
976+
select trigger_schema, trigger_name, event_object_schema,
977+
event_object_table, action_statement from information_schema.triggers
978+
where event_object_schema = 'test';
979+
# Let us check that the same works for simple ALTER TABLE ... RENAME
980+
alter table t2 rename to t3;
981+
insert into t3 values (103);
982+
select @a;
983+
select trigger_schema, trigger_name, event_object_schema,
984+
event_object_table, action_statement from information_schema.triggers
985+
where event_object_schema = 'test';
986+
# And for more complex ALTER TABLE
987+
alter table t3 rename to t4, add column val int default 0;
988+
insert into t4 values (104, 1);
989+
select @a;
990+
select trigger_schema, trigger_name, event_object_schema,
991+
event_object_table, action_statement from information_schema.triggers
992+
where event_object_schema = 'test';
993+
# .TRN file should be updated with new table name
994+
drop trigger t1_bi;
995+
drop table t4;
996+
# Rename between different databases if triggers exist should fail
997+
create database mysqltest;
998+
use mysqltest;
999+
create table t1 (id int);
1000+
create trigger t1_bi before insert on t1 for each row set @a:=new.id;
1001+
insert into t1 values (101);
1002+
select @a;
1003+
select trigger_schema, trigger_name, event_object_schema,
1004+
event_object_table, action_statement from information_schema.triggers
1005+
where event_object_schema = 'test' or event_object_schema = 'mysqltest';
1006+
--error ER_TRG_IN_WRONG_SCHEMA
1007+
rename table t1 to test.t2;
1008+
insert into t1 values (102);
1009+
select @a;
1010+
select trigger_schema, trigger_name, event_object_schema,
1011+
event_object_table, action_statement from information_schema.triggers
1012+
where event_object_schema = 'test' or event_object_schema = 'mysqltest';
1013+
# There should be no fantom .TRN files
1014+
--error ER_TRG_DOES_NOT_EXIST
1015+
drop trigger test.t1_bi;
1016+
drop trigger t1_bi;
1017+
drop table t1;
1018+
drop database mysqltest;
1019+
use test;
1020+
# And now let us check that the properly handle rename if there is some
1021+
# error during it (that we rollback such renames completely).
1022+
create table t1 (id int);
1023+
create trigger t1_bi before insert on t1 for each row set @a:=new.id;
1024+
create trigger t1_ai after insert on t1 for each row set @b:=new.id;
1025+
insert into t1 values (101);
1026+
select @a, @b;
1027+
select trigger_schema, trigger_name, event_object_schema,
1028+
event_object_table, action_statement from information_schema.triggers
1029+
where event_object_schema = 'test';
1030+
# Trick which makes update of second .TRN file impossible
1031+
system echo dummy >var/master-data/test/t1_ai.TRN~;
1032+
system chmod 000 var/master-data/test/t1_ai.TRN~;
1033+
--error 1
1034+
rename table t1 to t2;
1035+
# 't1' should be still there and triggers should work correctly
1036+
insert into t1 values (102);
1037+
select @a, @b;
1038+
select trigger_schema, trigger_name, event_object_schema,
1039+
event_object_table, action_statement from information_schema.triggers
1040+
where event_object_schema = 'test';
1041+
system chmod 600 var/master-data/test/t1_ai.TRN;
1042+
# Let us check that updates to .TRN files were rolled back too
1043+
drop trigger t1_bi;
1044+
drop trigger t1_ai;
1045+
drop table t1;
1046+
9621047
# Test for bug #16829 "Firing trigger with RETURN crashes the server"
9631048
# RETURN is not supposed to be used anywhere except functions, so error
9641049
# should be returned when one attempts to create trigger with RETURN.

0 commit comments

Comments
 (0)