~ubuntu-branches/ubuntu/precise/mysql-5.1/precise

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Tests for the partition storage engine in connection with the
# storage engine CSV.
#
# Creation:
# 2007-10-18 mleich  - Move CSV related sub tests of partition.test to
#                      this test. Reason: CSV is not everytime available.
#                    - Minor cleanup
#

--source include/have_partition.inc
--source include/have_csv.inc

call mtr.add_suppression("Failed to write to mysql.general_log");

#
# Bug#19307: Partitions: csv delete failure
#            = CSV engine crashes
#
--disable_warnings
drop table if exists t1;
--enable_warnings
--error ER_PARTITION_MERGE_ERROR
create table t1 (a int)
engine = csv
partition by list (a)
(partition p0 values in (null));

#
# Bug #27816: Log tables ran with partitions crashes the server when logging
#             is enabled.
#

USE mysql;
TRUNCATE TABLE general_log;
SET @old_general_log_state = @@global.general_log;
SET GLOBAL general_log = 0;
ALTER TABLE general_log ENGINE = MyISAM;
--error ER_WRONG_USAGE
ALTER TABLE general_log PARTITION BY RANGE (TO_DAYS(event_time))
  (PARTITION p0 VALUES LESS THAN (733144), PARTITION p1 VALUES LESS THAN (3000000));
ALTER TABLE general_log ENGINE = CSV;
SET GLOBAL general_log = @old_general_log_state;
use test;

--echo #
--echo # Bug#40281: partitioning the general log table crashes the server
--echo #

--echo # set up partitioned log, and switch to it

USE mysql;
SET @old_general_log_state = @@global.general_log;
SET GLOBAL general_log = 0;
CREATE TABLE gl_partitioned LIKE general_log;
ALTER TABLE gl_partitioned ENGINE=myisam;
ALTER TABLE gl_partitioned PARTITION BY HASH (thread_id) PARTITIONS 10;
ALTER TABLE general_log RENAME TO gl_nonpartitioned;
ALTER TABLE gl_partitioned RENAME TO general_log;

SELECT @@global.log_output INTO @old_glo;
SET GLOBAL log_output='table';
SET GLOBAL general_log =1;

--echo # do some things to be logged to partitioned log, should fail
USE /* 1 */ test;

CREATE TABLE t1 (i INT);

connect (con1,localhost,root,,);
INSERT INTO t1 VALUES (1);
SELECT * FROM t1;
disconnect con1;

connection default;
USE mysql;
SET GLOBAL general_log =0;
ALTER TABLE general_log RENAME TO gl_partitioned;
ALTER TABLE gl_nonpartitioned RENAME TO general_log;

--echo # show whether we actually logged anything (no) to general_log
SELECT COUNT(argument) FROM gl_partitioned;

DROP TABLE gl_partitioned;

SET GLOBAL log_output = @old_glo;
SET GLOBAL general_log = 1;

USE /* 2 */ test;
DROP TABLE t1;

SET GLOBAL general_log = @old_general_log_state;

--echo End of 5.1 tests