diff options
author | Ingo Struewing <ingo.struewing@sun.com> | 2008-11-26 17:15:00 +0100 |
---|---|---|
committer | Ingo Struewing <ingo.struewing@sun.com> | 2008-11-26 17:15:00 +0100 |
commit | fd06e3e2ad03e3167bd6081f40514cec7256ad7c (patch) | |
tree | 7d8274415caaf9970154efc02242b7ed1b065c34 /mysql-test | |
parent | 3fb68b5f94b8827526c71b82e0d7572cef960707 (diff) | |
parent | ee660618219d0775fd5ad0c12f3ad99e5f763062 (diff) | |
download | mariadb-git-fd06e3e2ad03e3167bd6081f40514cec7256ad7c.tar.gz |
merge
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/events_scheduling.result | 9 | ||||
-rw-r--r-- | mysql-test/r/events_time_zone.result | 11 | ||||
-rw-r--r-- | mysql-test/r/group_concat_max_len_func.result | 74 | ||||
-rw-r--r-- | mysql-test/r/multi_update.result | 23 | ||||
-rw-r--r-- | mysql-test/r/multi_update2.result | 25 | ||||
-rw-r--r-- | mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc | 2 | ||||
-rw-r--r-- | mysql-test/t/events_scheduling.test | 33 | ||||
-rw-r--r-- | mysql-test/t/events_time_zone.test | 83 | ||||
-rw-r--r-- | mysql-test/t/group_concat_max_len_func.test | 83 | ||||
-rw-r--r-- | mysql-test/t/multi_update.test | 57 | ||||
-rw-r--r-- | mysql-test/t/multi_update2-master.opt | 1 | ||||
-rw-r--r-- | mysql-test/t/multi_update2.test | 43 |
12 files changed, 261 insertions, 183 deletions
diff --git a/mysql-test/r/events_scheduling.result b/mysql-test/r/events_scheduling.result index b7d4578bede..63140bffaa4 100644 --- a/mysql-test/r/events_scheduling.result +++ b/mysql-test/r/events_scheduling.result @@ -1,7 +1,8 @@ CREATE DATABASE IF NOT EXISTS events_test; USE events_test; +SET @event_scheduler=@@global.event_scheduler; SET GLOBAL event_scheduler=OFF; -Try agian to make sure it's allowed +Try again to make sure it's allowed SET GLOBAL event_scheduler=OFF; SHOW VARIABLES LIKE 'event_scheduler'; Variable_name Value @@ -64,8 +65,8 @@ INSERT INTO table_4 VALUES (1); SELECT IF(SUM(a) >= 4, 'OK', 'ERROR') FROM table_1; IF(SUM(a) >= 4, 'OK', 'ERROR') OK -SELECT IF(SUM(a) >= 5, 'OK', 'ERROR') FROM table_2; -IF(SUM(a) >= 5, 'OK', 'ERROR') +SELECT IF(SUM(a) >= 4, 'OK', 'ERROR') FROM table_2; +IF(SUM(a) >= 4, 'OK', 'ERROR') OK SELECT IF(SUM(a) >= 1, 'OK', 'ERROR') FROM table_3; IF(SUM(a) >= 1, 'OK', 'ERROR') @@ -94,4 +95,4 @@ DROP TABLE table_2; DROP TABLE table_3; DROP TABLE table_4; DROP DATABASE events_test; -SET GLOBAL event_scheduler=OFF; +SET GLOBAL event_scheduler=@event_scheduler; diff --git a/mysql-test/r/events_time_zone.result b/mysql-test/r/events_time_zone.result index b20aa445183..155a9d155af 100644 --- a/mysql-test/r/events_time_zone.result +++ b/mysql-test/r/events_time_zone.result @@ -14,6 +14,7 @@ RETURN FLOOR((i % (step * n) + 0.1) / step); END// SET @step3= @step * 3; SET @step6= @step * 6; +SET @unix_time= UNIX_TIMESTAMP() - 1; SET @unix_time= @unix_time - @unix_time % @step6; INSERT INTO mysql.time_zone VALUES (NULL, 'N'); SET @tzid= LAST_INSERT_ID(); @@ -21,7 +22,7 @@ INSERT INTO mysql.time_zone_transition_type VALUES (@tzid, 0, 0, 0, 'b16420_0'); INSERT INTO mysql.time_zone_transition_type VALUES (@tzid, 1, @step3 - @step, 1, 'b16420_1'); -INSERT INTO mysql.time_zone_name VALUES ('bug16420', @tzid); +INSERT INTO mysql.time_zone_name VALUES ('<TZ_NAME_1>', @tzid); CREATE TABLE t1 (count INT, unix_time INT, local_time INT, comment CHAR(80)); CREATE TABLE t2 (count INT); INSERT INTO t2 VALUES (1); @@ -48,7 +49,7 @@ END// SET TIME_ZONE= '+00:00'; CREATE EVENT e1 ON SCHEDULE EVERY @step SECOND STARTS FROM_UNIXTIME(@unix_time) DO SELECT f1("<e1>"); -SET TIME_ZONE= 'bug16420'; +SET TIME_ZONE= '<TZ_NAME_1>'; CREATE EVENT e2 ON SCHEDULE EVERY @step SECOND STARTS FROM_UNIXTIME(@unix_time) DO SELECT f1("<e2>"); SET GLOBAL EVENT_SCHEDULER= ON; @@ -86,6 +87,7 @@ DELETE FROM mysql.time_zone_name WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone_transition_type WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone_transition WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone WHERE time_zone_id = @tzid; +ALTER TABLE mysql.time_zone AUTO_INCREMENT = 6; SET TIME_ZONE= '+00:00'; CREATE TABLE t1 (event CHAR(2), dt DATE, offset INT); INSERT INTO mysql.time_zone VALUES (NULL, 'N'); @@ -111,8 +113,8 @@ INSERT INTO mysql.time_zone_transition VALUES (@tzid, @now + 7 * @step, 2); INSERT INTO mysql.time_zone_transition VALUES (@tzid, @now + 12 * @step, 3); -INSERT INTO mysql.time_zone_name VALUES ('bug16420_2', @tzid); -SET TIME_ZONE= 'bug16420_2'; +INSERT INTO mysql.time_zone_name VALUES ('<TZ_NAME_2>', @tzid); +SET TIME_ZONE= '<TZ_NAME_2>'; SET GLOBAL EVENT_SCHEDULER= ON; SET GLOBAL EVENT_SCHEDULER= OFF; Below we should see the following: @@ -143,6 +145,7 @@ DELETE FROM mysql.time_zone_name WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone_transition_type WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone_transition WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone WHERE time_zone_id = @tzid; +ALTER TABLE mysql.time_zone AUTO_INCREMENT = 6; DROP FUNCTION round_to_step; DROP TABLE t_step; DROP DATABASE mysqltest_db1; diff --git a/mysql-test/r/group_concat_max_len_func.result b/mysql-test/r/group_concat_max_len_func.result index 715a84ce72b..52d67b8d274 100644 --- a/mysql-test/r/group_concat_max_len_func.result +++ b/mysql-test/r/group_concat_max_len_func.result @@ -1,31 +1,41 @@ SET @save = @@global.group_concat_max_len; -drop table if exists t1; +DROP TABLE IF EXISTS t1; ## Creating new table t1 ## CREATE TABLE t1 ( -id INT NOT NULL auto_increment, +id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), -rollno int NOT NULL, +rollno INT NOT NULL, name VARCHAR(30) ); '#--------------------FN_DYNVARS_034_01-------------------------#' -## Setting initial value of variable to 4 ## +## Setting initial value of variable to 4 ## SET @@global.group_concat_max_len = 4; -## Inserting some rows in table ## -INSERT into t1(rollno, name) values(1, 'Record_1'); -INSERT into t1(rollno, name) values(2, 'Record_2'); -INSERT into t1(rollno, name) values(1, 'Record_3'); -INSERT into t1(rollno, name) values(3, 'Record_4'); -INSERT into t1(rollno, name) values(1, 'Record_5'); -INSERT into t1(rollno, name) values(3, 'Record_6'); -INSERT into t1(rollno, name) values(4, 'Record_7'); -INSERT into t1(rollno, name) values(4, 'Record_8'); -## Creating two new connections ## +## Inserting some rows in table ## +INSERT INTO t1(rollno, name) VALUES(1, 'Record_1'); +INSERT INTO t1(rollno, name) VALUES(2, 'Record_2'); +INSERT INTO t1(rollno, name) VALUES(1, 'Record_3'); +INSERT INTO t1(rollno, name) VALUES(3, 'Record_4'); +INSERT INTO t1(rollno, name) VALUES(1, 'Record_5'); +INSERT INTO t1(rollno, name) VALUES(3, 'Record_6'); +INSERT INTO t1(rollno, name) VALUES(4, 'Record_7'); +INSERT INTO t1(rollno, name) VALUES(4, 'Record_8'); +SELECT * FROM t1 ORDER BY id; +id rollno name +1 1 Record_1 +2 2 Record_2 +3 1 Record_3 +4 3 Record_4 +5 1 Record_5 +6 3 Record_6 +7 4 Record_7 +8 4 Record_8 +## Creating two new connections ## '#--------------------FN_DYNVARS_034_02-------------------------#' ## Connecting with test_con1 ## -## Accessing data and using group_concat on column whose value is greater than 4 ## -SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; -id rollno group_concat(name) +## Accessing data and using group_concat on column whose value is greater than 4 ## +SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno; +id rollno GROUP_CONCAT(name) 1 1 Reco 2 2 Reco 4 3 Reco @@ -33,10 +43,10 @@ id rollno group_concat(name) Warnings: Warning 1260 4 line(s) were cut by GROUP_CONCAT() ## Changing session value of variable and verifying its behavior, ## -## warning should come here ## +## warning should come here ## SET @@session.group_concat_max_len = 10; -SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; -id rollno group_concat(name) +SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno; +id rollno GROUP_CONCAT(name) 1 1 Record_1,R 2 2 Record_2 4 3 Record_4,R @@ -44,18 +54,18 @@ id rollno group_concat(name) Warnings: Warning 1260 3 line(s) were cut by GROUP_CONCAT() '#--------------------FN_DYNVARS_034_03-------------------------#' -## Connecting with new connection test_con2 ## -## Verifying initial value of variable. It should be 4 ## +## Connecting with new connection test_con2 ## +## Verifying initial value of variable. It should be 4 ## SELECT @@session.group_concat_max_len = 4; @@session.group_concat_max_len = 4 1 -## Setting session value of variable to 20 and verifying variable is concating ## -## column's value to 20 or not ## +## Setting session value of variable to 20 and verifying variable is concating ## +## column's value to 20 or not ## SET @@session.group_concat_max_len = 20; ## Verifying value of name column, it should not me more than 20 characters ## ## Warning should come here ## -SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; -id rollno group_concat(name) +SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno; +id rollno GROUP_CONCAT(name) 1 1 Record_1,Record_3,Re 2 2 Record_2 4 3 Record_4,Record_6 @@ -63,17 +73,17 @@ id rollno group_concat(name) Warnings: Warning 1260 1 line(s) were cut by GROUP_CONCAT() '#--------------------FN_DYNVARS_034_04-------------------------#' -## Setting session value of variable to 26. No warning should appear here ## -## because the value after concatination is less than 30 ## +## Setting session value of variable to 26. No warning should appear here ## +## because the value after concatination is less than 30 ## SET @@session.group_concat_max_len = 26; -## Verifying value of name column, it should not give warning now ## -SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; -id rollno group_concat(name) +## Verifying value of name column, it should not give warning now ## +SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno; +id rollno GROUP_CONCAT(name) 1 1 Record_1,Record_3,Record_5 2 2 Record_2 4 3 Record_4,Record_6 7 4 Record_7,Record_8 ## Dropping table t1 ## -DROP table t1; +DROP TABLE t1; ## Disconnecting both the connection ## SET @@global.group_concat_max_len = @save; diff --git a/mysql-test/r/multi_update.result b/mysql-test/r/multi_update.result index aa88b44f5b4..b8f6aa9e4d4 100644 --- a/mysql-test/r/multi_update.result +++ b/mysql-test/r/multi_update.result @@ -378,29 +378,6 @@ where 0=1; delete t1, t2 from t2,t1 where t1.id1=t2.id2 and 0=1; drop table t1,t2; -create table t1 ( a int not null, b int not null) ; -alter table t1 add index i1(a); -delete from t1 where a > 2000000; -create table t2 like t1; -insert into t2 select * from t1; -select 't2 rows before small delete', count(*) from t1; -t2 rows before small delete count(*) -t2 rows before small delete 2000000 -delete t1,t2 from t1,t2 where t1.b=t2.a and t1.a < 2; -select 't2 rows after small delete', count(*) from t2; -t2 rows after small delete count(*) -t2 rows after small delete 1999999 -select 't1 rows after small delete', count(*) from t1; -t1 rows after small delete count(*) -t1 rows after small delete 1999999 -delete t1,t2 from t1,t2 where t1.b=t2.a and t1.a < 100*1000; -select 't2 rows after big delete', count(*) from t2; -t2 rows after big delete count(*) -t2 rows after big delete 1900001 -select 't1 rows after big delete', count(*) from t1; -t1 rows after big delete count(*) -t1 rows after big delete 1900001 -drop table t1,t2; CREATE TABLE t1 ( a int ); CREATE TABLE t2 ( a int ); DELETE t1 FROM t1, t2 AS t3; diff --git a/mysql-test/r/multi_update2.result b/mysql-test/r/multi_update2.result new file mode 100644 index 00000000000..3712e638f40 --- /dev/null +++ b/mysql-test/r/multi_update2.result @@ -0,0 +1,25 @@ +DROP TABLE IF EXISTS t1,t2; +CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL) ; +# The protocolling of many inserts into t1 is suppressed. +ALTER TABLE t1 ADD INDEX i1(a); +DELETE FROM t1 WHERE a > 2000000; +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 SELECT * FROM t1; +SELECT 't2 rows before small delete', COUNT(*) FROM t1; +t2 rows before small delete COUNT(*) +t2 rows before small delete 2000000 +DELETE t1,t2 FROM t1,t2 WHERE t1.b=t2.a AND t1.a < 2; +SELECT 't2 rows after small delete', COUNT(*) FROM t2; +t2 rows after small delete COUNT(*) +t2 rows after small delete 1999999 +SELECT 't1 rows after small delete', COUNT(*) FROM t1; +t1 rows after small delete COUNT(*) +t1 rows after small delete 1999999 +DELETE t1,t2 FROM t1,t2 WHERE t1.b=t2.a AND t1.a < 100*1000; +SELECT 't2 rows after big delete', COUNT(*) FROM t2; +t2 rows after big delete COUNT(*) +t2 rows after big delete 1900001 +SELECT 't1 rows after big delete', COUNT(*) FROM t1; +t1 rows after big delete COUNT(*) +t1 rows after big delete 1900001 +DROP TABLE t1,t2; diff --git a/mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc b/mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc index e3012ed0ca0..e5933eb84a8 100644 --- a/mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc +++ b/mysql-test/suite/funcs_1/triggers/triggers_03e_db_level.inc @@ -185,7 +185,7 @@ let $message= use db with trigger privilege on db level and without...:; select f1 from t1 order by f1; --disable_warnings disconnect no_privs; - --enable warnings + --enable_warnings connection yes_privs; select current_user; diff --git a/mysql-test/t/events_scheduling.test b/mysql-test/t/events_scheduling.test index a5133166495..87cfa42e283 100644 --- a/mysql-test/t/events_scheduling.test +++ b/mysql-test/t/events_scheduling.test @@ -1,11 +1,12 @@ -# Can't test with embedded server that doesn't support grants +# Can't test with embedded server that doesn't support events -- source include/not_embedded.inc CREATE DATABASE IF NOT EXISTS events_test; USE events_test; +SET @event_scheduler=@@global.event_scheduler; SET GLOBAL event_scheduler=OFF; ---echo Try agian to make sure it's allowed +--echo Try again to make sure it's allowed SET GLOBAL event_scheduler=OFF; SHOW VARIABLES LIKE 'event_scheduler'; SET GLOBAL event_scheduler=1; @@ -57,34 +58,44 @@ ON COMPLETION PRESERVE DO INSERT INTO table_4 VALUES (1); +# Wait for the events to fire and check the data afterwards + # Let event_1 insert at least 4 records into the table let $wait_condition=select count(*) >= 4 from table_1; --source include/wait_condition.inc +# Minimum of passed time is 6 seconds assuming +# - event executions starts immediate after creation +# - 4 times event_1 means an insert at ect, ect+2, ect+4, ect+6 +# ect = event creation time -# Let event_2 reach the end of its execution interval +# Let event_2 reach the end of its execution interval let $wait_condition=select count(*) = 0 from information_schema.events where event_name='event_2' and status='enabled'; --source include/wait_condition.inc +# Minimum of passed time is 6 seconds. +# See wait_condition for event_1 above and ENDS condition for event_2. -# Let event_3, which is ON COMPLETION NOT PRESERVE execute and drop itself +# Let event_3, which is ON COMPLETION NOT PRESERVE execute and drop itself let $wait_condition=select count(*) = 0 from information_schema.events where event_name='event_3'; --source include/wait_condition.inc -# Let event_4 reach the end of its execution interval +# Let event_4 reach the end of its execution interval let $wait_condition=select count(*) = 0 from information_schema.events where event_name='event_4' and status='enabled'; --source include/wait_condition.inc -# Wait for the events to fire and check the data afterwards - let $wait_condition=SELECT SUM(a) >= 4 FROM table_1; source include/wait_condition.inc; SELECT IF(SUM(a) >= 4, 'OK', 'ERROR') FROM table_1; -let $wait_condition=SELECT SUM(a) >= 5 FROM table_2; +# In case of a testing box under heavy load it cannot be guaranteed that +# it is really often enough checked if event_2 has to be executed. +# -> Bug#39854 events_scheduling fails sporadically on pushbuild +# Therefore we lowered here the original expectation of 5 to 4. +let $wait_condition=SELECT SUM(a) >= 4 FROM table_2; source include/wait_condition.inc; -SELECT IF(SUM(a) >= 5, 'OK', 'ERROR') FROM table_2; +SELECT IF(SUM(a) >= 4, 'OK', 'ERROR') FROM table_2; let $wait_condition=SELECT SUM(a) >= 1 FROM table_3; source include/wait_condition.inc; @@ -112,9 +123,9 @@ DROP TABLE table_2; DROP TABLE table_3; DROP TABLE table_4; DROP DATABASE events_test; -SET GLOBAL event_scheduler=OFF; +SET GLOBAL event_scheduler=@event_scheduler; -# +# # End of tests # diff --git a/mysql-test/t/events_time_zone.test b/mysql-test/t/events_time_zone.test index af3466a339c..ccae7847618 100644 --- a/mysql-test/t/events_time_zone.test +++ b/mysql-test/t/events_time_zone.test @@ -1,11 +1,40 @@ -# This test case is sensitive to execution timing. You may control -# this sensitivity by the parameter below. Small values will result -# in fast but more unstable execution, large values will improve -# stability at the cost of speed. Basically, N is a number of seconds -# to wait for operation to complete. Should be positive. Test runs -# about 25*N seconds (it sleeps most of the time, so CPU speed is not -# relevant). +# 1. This test case is sensitive to execution timing. You may control +# this sensitivity by the parameter below. Small values will result +# in fast but more unstable execution, large values will improve +# stability at the cost of speed. Basically, N is a number of seconds +# to wait for operation to complete. Should be positive. Test runs +# about 25*N seconds (it sleeps most of the time, so CPU speed is not +# relevant). let $N = 5; +# +# 2. Some subtests +# - create a new time zone +# - run some statements +# - delete the new time zone. +# But the time zone name used gets somewhere cached and it cannot be +# "reused" later in the same or another session for a new time zone. +# Experiments (2008-11 MySQL 5.1) showed that none of the available +# RESET/FLUSH commands removes these entries. +# 2008-11 MySQL 5.1 Bug#39979 main.events_time_zone does not clean up +# second bad effect +# Therefore we compute unique and unusual timezone names to minimize +# the likelihood that a later test uses the same name. +# +# 3. The subtests mentioned in 2. cause that the AUTO_INCREMENT value +# within "SHOW CREATE TABLE mysql.timezone" differ from the initial one. +# (Bug#39979 main.events_time_zone does not clean up) +# Therefore we reset this value after each of these subtests. +# +# Note(mleich): +# There is a significant likelihood that future improvements of the server +# cause that the solutions for the issues mentioned in 2. and 3. will no +# more work. +# A mysql-test-run.pl feature which allows to enforce +# 1. Server shutdown (-> Problem mentioned in 2. disappears) +# 2. Reset all data to initial state (-> Problem mentioned in 3. disappears) +# 3. Server start +# after a tests would be a perfect replacement. +# --source include/big_test.inc @@ -73,19 +102,15 @@ delimiter ;// SET @step3= @step * 3; SET @step6= @step * 6; -# Disable query log to hide current time. ---disable_query_log SET @unix_time= UNIX_TIMESTAMP() - 1; ---enable_query_log - SET @unix_time= @unix_time - @unix_time % @step6; INSERT INTO mysql.time_zone VALUES (NULL, 'N'); SET @tzid= LAST_INSERT_ID(); INSERT INTO mysql.time_zone_transition_type - VALUES (@tzid, 0, 0, 0, 'b16420_0'); + VALUES (@tzid, 0, 0, 0, 'b16420_0'); INSERT INTO mysql.time_zone_transition_type - VALUES (@tzid, 1, @step3 - @step, 1, 'b16420_1'); + VALUES (@tzid, 1, @step3 - @step, 1, 'b16420_1'); let $transition_unix_time= `SELECT @unix_time`; let $count= 30; @@ -99,7 +124,9 @@ while ($count) dec $count; } --enable_query_log -INSERT INTO mysql.time_zone_name VALUES ('bug16420', @tzid); +let $tz_name = `SELECT CONCAT('b16420_a',UNIX_TIMESTAMP())`; +--replace_result $tz_name <TZ_NAME_1> +eval INSERT INTO mysql.time_zone_name VALUES ('$tz_name', @tzid); CREATE TABLE t1 (count INT, unix_time INT, local_time INT, comment CHAR(80)); CREATE TABLE t2 (count INT); @@ -135,7 +162,8 @@ SET TIME_ZONE= '+00:00'; CREATE EVENT e1 ON SCHEDULE EVERY @step SECOND STARTS FROM_UNIXTIME(@unix_time) DO SELECT f1("<e1>"); -SET TIME_ZONE= 'bug16420'; +--replace_result $tz_name <TZ_NAME_1> +eval SET TIME_ZONE= '$tz_name'; CREATE EVENT e2 ON SCHEDULE EVERY @step SECOND STARTS FROM_UNIXTIME(@unix_time) DO SELECT f1("<e2>"); @@ -196,6 +224,8 @@ DELETE FROM mysql.time_zone_name WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone_transition_type WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone_transition WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone WHERE time_zone_id = @tzid; +let $time_zone_auto_inc = `SELECT MAX(Time_zone_id) + 1 FROM mysql.time_zone`; +eval ALTER TABLE mysql.time_zone AUTO_INCREMENT = $time_zone_auto_inc; #---------------------------------------------------------------------- @@ -216,13 +246,13 @@ SET @offset_month_03= UNIX_TIMESTAMP('2030-03-31 12:00:00') - @now - 5*@step; SET @offset_month_04= UNIX_TIMESTAMP('2030-04-30 12:00:00') - @now - 13*@step; INSERT INTO mysql.time_zone_transition_type - VALUES (@tzid, 0, @offset_month_01, 0, 'b16420_0'); + VALUES (@tzid, 0, @offset_month_01, 0, 'b16420_0'); INSERT INTO mysql.time_zone_transition_type - VALUES (@tzid, 1, @offset_month_02, 1, 'b16420_1'); + VALUES (@tzid, 1, @offset_month_02, 1, 'b16420_1'); INSERT INTO mysql.time_zone_transition_type - VALUES (@tzid, 2, @offset_month_03, 1, 'b16420_2'); + VALUES (@tzid, 2, @offset_month_03, 1, 'b16420_2'); INSERT INTO mysql.time_zone_transition_type - VALUES (@tzid, 3, @offset_month_04, 1, 'b16420_3'); + VALUES (@tzid, 3, @offset_month_04, 1, 'b16420_3'); INSERT INTO mysql.time_zone_transition VALUES (@tzid, @now, 0); INSERT INTO mysql.time_zone_transition @@ -231,11 +261,12 @@ INSERT INTO mysql.time_zone_transition VALUES (@tzid, @now + 7 * @step, 2); INSERT INTO mysql.time_zone_transition VALUES (@tzid, @now + 12 * @step, 3); -# We have to user a new time zone name, because 'bug16420' has been -# cached already. -INSERT INTO mysql.time_zone_name VALUES ('bug16420_2', @tzid); +let $tz_name = `SELECT CONCAT('b16420_b',UNIX_TIMESTAMP())`; +--replace_result $tz_name <TZ_NAME_2> +eval INSERT INTO mysql.time_zone_name VALUES ('$tz_name', @tzid); -SET TIME_ZONE= 'bug16420_2'; +--replace_result $tz_name <TZ_NAME_2> +eval SET TIME_ZONE= '$tz_name'; SET GLOBAL EVENT_SCHEDULER= ON; @@ -280,6 +311,8 @@ DELETE FROM mysql.time_zone_name WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone_transition_type WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone_transition WHERE time_zone_id = @tzid; DELETE FROM mysql.time_zone WHERE time_zone_id = @tzid; +let $time_zone_auto_inc = `SELECT MAX(Time_zone_id) + 1 FROM mysql.time_zone`; +eval ALTER TABLE mysql.time_zone AUTO_INCREMENT = $time_zone_auto_inc; DROP FUNCTION round_to_step; DROP TABLE t_step; @@ -291,8 +324,8 @@ eval USE $old_db; --enable_query_log let $wait_condition= - select count(*) = 0 from information_schema.processlist - where db='mysqltest_db1' and command = 'Connect' and user=current_user(); + SELECT COUNT(*) = 0 FROM information_schema.processlist + WHERE db='mysqltest_db1' AND command = 'Connect' AND user=current_user(); --source include/wait_condition.inc --echo End of 5.1 tests. diff --git a/mysql-test/t/group_concat_max_len_func.test b/mysql-test/t/group_concat_max_len_func.test index d1dc8df43a0..29a4ff5becb 100644 --- a/mysql-test/t/group_concat_max_len_func.test +++ b/mysql-test/t/group_concat_max_len_func.test @@ -11,18 +11,23 @@ # Creation Date: 2008-03-07 # # Author: Salman Rawala # # # +# Last modification: # +# 2008-11-14 mleich Fix Bug#40644 main.group_concat_max_len_func random # +# failures # +# + minor improvements # +# # # Description: Test Cases of Dynamic System Variable group_concat_max_len # # that checks the functionality of this variable # # # -# Reference: http://dev.mysql.com/doc/refman/5.1/en/ # -# server-system-variables.html # +# Reference: # +# http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html # # # ############################################################################### SET @save = @@global.group_concat_max_len; --disable_warnings -drop table if exists t1; +DROP TABLE IF EXISTS t1; --enable_warnings ######################### @@ -32,34 +37,38 @@ drop table if exists t1; --echo ## Creating new table t1 ## CREATE TABLE t1 ( -id INT NOT NULL auto_increment, +id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id), -rollno int NOT NULL, +rollno INT NOT NULL, name VARCHAR(30) ); --echo '#--------------------FN_DYNVARS_034_01-------------------------#' ######################################################################## # Setting initial value of group_concat_max_len, inserting some rows -# & creating 2 new connections +# & creating 2 new connections ######################################################################## ---echo ## Setting initial value of variable to 4 ## +--echo ## Setting initial value of variable to 4 ## SET @@global.group_concat_max_len = 4; ---echo ## Inserting some rows in table ## -INSERT into t1(rollno, name) values(1, 'Record_1'); -INSERT into t1(rollno, name) values(2, 'Record_2'); -INSERT into t1(rollno, name) values(1, 'Record_3'); -INSERT into t1(rollno, name) values(3, 'Record_4'); -INSERT into t1(rollno, name) values(1, 'Record_5'); -INSERT into t1(rollno, name) values(3, 'Record_6'); -INSERT into t1(rollno, name) values(4, 'Record_7'); -INSERT into t1(rollno, name) values(4, 'Record_8'); - ---echo ## Creating two new connections ## -CONNECT (test_con1,localhost,root,,); -CONNECT (test_con2,localhost,root,,); +--echo ## Inserting some rows in table ## +INSERT INTO t1(rollno, name) VALUES(1, 'Record_1'); +INSERT INTO t1(rollno, name) VALUES(2, 'Record_2'); +INSERT INTO t1(rollno, name) VALUES(1, 'Record_3'); +INSERT INTO t1(rollno, name) VALUES(3, 'Record_4'); +INSERT INTO t1(rollno, name) VALUES(1, 'Record_5'); +INSERT INTO t1(rollno, name) VALUES(3, 'Record_6'); +INSERT INTO t1(rollno, name) VALUES(4, 'Record_7'); +INSERT INTO t1(rollno, name) VALUES(4, 'Record_8'); +# The following "auxiliary" select ensures that all records are on disk +# = result sets got by parallel sessions cannot suffer from effects +# caused by the MyISAM feature "concurrent_inserts". +SELECT * FROM t1 ORDER BY id; + +--echo ## Creating two new connections ## +connect (test_con1,localhost,root,,); +connect (test_con2,localhost,root,,); --echo '#--------------------FN_DYNVARS_034_02-------------------------#' @@ -68,16 +77,16 @@ CONNECT (test_con2,localhost,root,,); ############################################################################### --echo ## Connecting with test_con1 ## -CONNECTION test_con1; +connection test_con1; ---echo ## Accessing data and using group_concat on column whose value is greater than 4 ## -SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +--echo ## Accessing data and using group_concat on column whose value is greater than 4 ## +SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno; --echo ## Changing session value of variable and verifying its behavior, ## ---echo ## warning should come here ## +--echo ## warning should come here ## SET @@session.group_concat_max_len = 10; -SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno; --echo '#--------------------FN_DYNVARS_034_03-------------------------#' @@ -85,19 +94,19 @@ SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; # Verifying behavior of variable by increasing session value of variable # ############################################################################## ---echo ## Connecting with new connection test_con2 ## +--echo ## Connecting with new connection test_con2 ## connection test_con2; ---echo ## Verifying initial value of variable. It should be 4 ## +--echo ## Verifying initial value of variable. It should be 4 ## SELECT @@session.group_concat_max_len = 4; ---echo ## Setting session value of variable to 20 and verifying variable is concating ## ---echo ## column's value to 20 or not ## +--echo ## Setting session value of variable to 20 and verifying variable is concating ## +--echo ## column's value to 20 or not ## SET @@session.group_concat_max_len = 20; --echo ## Verifying value of name column, it should not me more than 20 characters ## --echo ## Warning should come here ## -SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno; --echo '#--------------------FN_DYNVARS_034_04-------------------------#' @@ -106,12 +115,12 @@ SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; # greater than the maximum concat length of name column # ############################################################################### ---echo ## Setting session value of variable to 26. No warning should appear here ## ---echo ## because the value after concatination is less than 30 ## +--echo ## Setting session value of variable to 26. No warning should appear here ## +--echo ## because the value after concatination is less than 30 ## SET @@session.group_concat_max_len = 26; ---echo ## Verifying value of name column, it should not give warning now ## -SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; +--echo ## Verifying value of name column, it should not give warning now ## +SELECT id, rollno, GROUP_CONCAT(name) FROM t1 GROUP BY rollno; ############################################################ @@ -119,11 +128,11 @@ SELECT id, rollno, group_concat(name) FROM t1 GROUP BY rollno; ############################################################ --echo ## Dropping table t1 ## -DROP table t1; +DROP TABLE t1; --echo ## Disconnecting both the connection ## -DISCONNECT test_con2; -DISCONNECT test_con1; +disconnect test_con2; +disconnect test_con1; connection default; diff --git a/mysql-test/t/multi_update.test b/mysql-test/t/multi_update.test index 331663dceb5..0793ef15faf 100644 --- a/mysql-test/t/multi_update.test +++ b/mysql-test/t/multi_update.test @@ -10,9 +10,9 @@ source include/have_log_bin.inc; drop table if exists t1,t2,t3; drop database if exists mysqltest; drop view if exists v1; ---error 0,1141,1147 +--error 0,ER_NONEXISTING_GRANT,ER_NONEXISTING_TABLE_GRANT revoke all privileges on mysqltest.t1 from mysqltest_1@localhost; ---error 0,1141,1147 +--error 0,ER_NONEXISTING_GRANT,ER_NONEXISTING_TABLE_GRANT revoke all privileges on mysqltest.* from mysqltest_1@localhost; delete from mysql.user where user=_binary'mysqltest_1'; --enable_warnings @@ -160,9 +160,9 @@ create table t2 (n int(10) not null primary key, d int(10)); insert into t1 values(1,1); insert into t2 values(1,10),(2,20); LOCK TABLES t1 write, t2 read; ---error 1099 +--error ER_TABLE_NOT_LOCKED_FOR_WRITE DELETE t1.*, t2.* FROM t1,t2 where t1.n=t2.n; ---error 1099 +--error ER_TABLE_NOT_LOCKED_FOR_WRITE UPDATE t1,t2 SET t1.d=t2.d,t2.d=30 WHERE t1.n=t2.n; UPDATE t1,t2 SET t1.d=t2.d WHERE t1.n=t2.n; unlock tables; @@ -183,7 +183,7 @@ create table t1 (n int(10), d int(10)); create table t2 (n int(10), d int(10)); insert into t1 values(1,1); insert into t2 values(1,10),(2,20); ---error 1175 +--error ER_UPDATE_WITHOUT_KEY_IN_SAFE_MODE UPDATE t1,t2 SET t1.d=t2.d WHERE t1.n=t2.n; set sql_safe_updates=0; drop table t1,t2; @@ -196,7 +196,7 @@ set timestamp=1038000000; UPDATE t1,t2 SET t1.d=t2.d WHERE t1.n=t2.n; select n,d,unix_timestamp(t) from t1; select n,d,unix_timestamp(t) from t2; ---error 1064 +--error ER_PARSE_ERROR UPDATE t1,t2 SET 1=2 WHERE t1.n=t2.n; drop table t1,t2; set timestamp=0; @@ -324,41 +324,6 @@ delete t1, t2 from t2,t1 drop table t1,t2; # -# Test for bug #1820. -# - -create table t1 ( a int not null, b int not null) ; ---disable_query_log -insert into t1 values (1,1),(2,2),(3,3),(4,4); -let $1=19; -set @d=4; -while ($1) -{ - eval insert into t1 select a+@d,b+@d from t1; - eval set @d=@d*2; - dec $1; -} - ---enable_query_log -alter table t1 add index i1(a); -delete from t1 where a > 2000000; -create table t2 like t1; -insert into t2 select * from t1; - -select 't2 rows before small delete', count(*) from t1; -delete t1,t2 from t1,t2 where t1.b=t2.a and t1.a < 2; -select 't2 rows after small delete', count(*) from t2; -select 't1 rows after small delete', count(*) from t1; - -## Try deleting many rows - -delete t1,t2 from t1,t2 where t1.b=t2.a and t1.a < 100*1000; -select 't2 rows after big delete', count(*) from t2; -select 't1 rows after big delete', count(*) from t1; - -drop table t1,t2; - -# # Test alias (this is not correct in 4.0) # @@ -367,7 +332,7 @@ CREATE TABLE t2 ( a int ); DELETE t1 FROM t1, t2 AS t3; DELETE t4 FROM t1, t1 AS t4; DELETE t3 FROM t1 AS t3, t1 AS t4; ---error 1109 +--error ER_UNKNOWN_TABLE DELETE t1 FROM t1 AS t3, t2 AS t4; INSERT INTO t1 values (1),(2); INSERT INTO t2 values (1),(2); @@ -422,7 +387,7 @@ drop database mysqltest; create table t1 (a int, primary key (a)); create table t2 (a int, primary key (a)); create table t3 (a int, primary key (a)); --- error 1109 +-- error ER_UNKNOWN_TABLE delete t1,t3 from t1,t2 where t1.a=t2.a and t2.a=(select t3.a from t3 where t1.a=t3.a); drop table t1, t2, t3; @@ -431,9 +396,9 @@ drop table t1, t2, t3; # create table t1 (col1 int); create table t2 (col1 int); --- error 1093 +-- error ER_UPDATE_TABLE_USED update t1,t2 set t1.col1 = (select max(col1) from t1) where t1.col1 = t2.col1; --- error 1093 +-- error ER_UPDATE_TABLE_USED delete t1 from t1,t2 where t1.col1 < (select max(col1) from t1) and t1.col1 = t2.col1; drop table t1,t2; @@ -458,7 +423,7 @@ drop table t1, t2; # create table t1(a int); create table t2(a int); ---error 1093 +--error ER_UPDATE_TABLE_USED delete from t1,t2 using t1,t2 where t1.a=(select a from t1); drop table t1, t2; # End of 4.1 tests diff --git a/mysql-test/t/multi_update2-master.opt b/mysql-test/t/multi_update2-master.opt new file mode 100644 index 00000000000..9f1a29461ff --- /dev/null +++ b/mysql-test/t/multi_update2-master.opt @@ -0,0 +1 @@ +--set-variable=tmp_table_size=1024 diff --git a/mysql-test/t/multi_update2.test b/mysql-test/t/multi_update2.test new file mode 100644 index 00000000000..47f9bc7bad7 --- /dev/null +++ b/mysql-test/t/multi_update2.test @@ -0,0 +1,43 @@ +# +# Test of update statement that uses many tables. +# + +--disable_warnings +DROP TABLE IF EXISTS t1,t2; +--enable_warnings + +# +# Bug#1820 Rows not deleted from second table on multi-table delete +# + +CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL) ; +--echo # The protocolling of many inserts into t1 is suppressed. +--disable_query_log +INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4); +let $1=19; +set @d=4; +while ($1) +{ + eval INSERT INTO t1 SELECT a+@d,b+@d FROM t1; + eval SET @d=@d*2; + dec $1; +} + +--enable_query_log +ALTER TABLE t1 ADD INDEX i1(a); +DELETE FROM t1 WHERE a > 2000000; +CREATE TABLE t2 LIKE t1; +INSERT INTO t2 SELECT * FROM t1; + +SELECT 't2 rows before small delete', COUNT(*) FROM t1; +DELETE t1,t2 FROM t1,t2 WHERE t1.b=t2.a AND t1.a < 2; +SELECT 't2 rows after small delete', COUNT(*) FROM t2; +SELECT 't1 rows after small delete', COUNT(*) FROM t1; + +## Try deleting many rows + +DELETE t1,t2 FROM t1,t2 WHERE t1.b=t2.a AND t1.a < 100*1000; +SELECT 't2 rows after big delete', COUNT(*) FROM t2; +SELECT 't1 rows after big delete', COUNT(*) FROM t1; + +DROP TABLE t1,t2; |