File: partition_basic_symlink_tokudb.test

package info (click to toggle)
mariadb-10.0 10.0.32-0%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 476,064 kB
  • sloc: cpp: 1,400,131; ansic: 832,140; perl: 54,391; sh: 41,304; pascal: 32,365; yacc: 14,921; xml: 5,257; sql: 4,667; cs: 4,647; makefile: 4,555; ruby: 4,465; python: 2,292; lex: 1,427; java: 941; asm: 295; awk: 54; php: 22; sed: 16
file content (164 lines) | stat: -rw-r--r-- 6,655 bytes parent folder | download | duplicates (6)
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
################################################################################
# t/partition_basic_tokudb.test                                                #
#                                                                              #
# Purpose:                                                                     #
#  Tests around Create Partitioned table using DATA/INDEX DIR                  #
#        TokuDB branch                                                         #
#                                                                              #
#------------------------------------------------------------------------------#
# Original Author: mleich                                                      #
# Original Date: 2006-03-05                                                    #
# Change Author: mattiasj                                                      #
# Change Date: 2008-02-05                                                      #
# Change: copied it from partition_basic_tokudb.test and kept DATA DIR         #
# Change Author: mattiasj                                                      #
# Change Date: 2008-03-16                                                      #
# Change: Replaced all test with alter -> myisam, since tokudb does not support#
# Change Author: Kevin lewis                                                   #
# Change Date: 2012-03-02                                                      #
# Change: WL5980 activates DATA DIRECTORY for TokuDB                           #
################################################################################

# NOTE: As of WL5980, TokuDB supports DATA DIRECTORY, but not INDEX DIRECTORY.
#       See tokudb.tokudb-tablespace for tests using partition engine, tokudb
#       and DATADIRECTORY.  The purpose of this test is to show that a
#       partitioned table remembers the DATA/INDEX DIR and it is used if
#       altered to MyISAM
#
--echo #
--echo # Verify that the DATA/INDEX DIR is stored and used if ALTER to MyISAM.
--echo #
--source include/have_tokudb.inc
# The server must support partitioning.
--source include/have_partition.inc
# The server must support symlink for DATA/INDEX DIRECTORY.
--source include/have_symlink.inc
# windows does not support symlink for DATA/INDEX DIRECTORY.
--source include/not_windows.inc

# Does not work with --embedded
--source include/not_embedded.inc

--disable_query_log
let $MYSQLD_DATADIR= `select @@datadir`;

# These values can change during the test
LET $tokudb_file_per_table_orig=`select @@tokudb_file_per_table`;
LET $tokudb_strict_mode_orig=`select @@session.tokudb_strict_mode`;
--enable_query_log

--disable_warnings
DROP TABLE IF EXISTS t1;
--enable_warnings

--mkdir $MYSQLTEST_VARDIR/mysql-test-data-dir
--mkdir $MYSQLTEST_VARDIR/mysql-test-idx-dir

SET SESSION tokudb_strict_mode = ON;

--echo #
--echo # TokuDB only supports DATA DIRECTORY with tokudb_file_per_table=ON
--echo #
SET GLOBAL tokudb_file_per_table = OFF;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
--error ER_ILLEGAL_HA
eval CREATE TABLE t1 (c1 INT)  ENGINE = TokuDB
PARTITION BY HASH (c1) (
  PARTITION p0
    DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
    INDEX DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-idx-dir',
  PARTITION p1
    DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
    INDEX DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-idx-dir'
);
--replace_result ./ MYSQLD_DATADIR/  $MYSQLD_DATADIR MYSQLD_DATADIR
SHOW WARNINGS;

--echo #
--echo # TokuDB is different from MyISAM in that it uses a text file
--echo # with an '.isl' extension instead of a symbolic link so that
--echo # the tablespace can be re-located on any OS. Also, instead of
--echo # putting the file directly into the DATA DIRECTORY,
--echo # it adds a folder under it with the name of the database.
--echo # Since strict mode is off, TokuDB ignores the INDEX DIRECTORY
--echo # and it is no longer part of the definition.
--echo #
SET SESSION tokudb_strict_mode = OFF;
SET GLOBAL tokudb_file_per_table = ON;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
eval CREATE TABLE t1 (c1 INT) ENGINE = TokuDB
PARTITION BY HASH (c1)
(PARTITION p0
 DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
 INDEX DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-idx-dir',
 PARTITION p1
 DATA DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-data-dir'
 INDEX DIRECTORY = '$MYSQLTEST_VARDIR/mysql-test-idx-dir'
);
SHOW WARNINGS;

--echo # Verifying .frm, .par, .isl & .ibd files
--echo ---- MYSQLD_DATADIR/test
--list_files $MYSQLD_DATADIR/test
--echo ---- MYSQLTEST_VARDIR/mysql-test-data-dir/test
--list_files $MYSQLTEST_VARDIR/mysql-test-data-dir/test
--echo # The ibd tablespaces should not be directly under the DATA DIRECTORY
--echo ---- MYSQLTEST_VARDIR/mysql-test-data-dir
--list_files $MYSQLTEST_VARDIR/mysql-test-data-dir
--echo ---- MYSQLTEST_VARDIR/mysql-test-idx-dir
--list_files $MYSQLTEST_VARDIR/mysql-test-idx-dir

FLUSH TABLES;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
SHOW CREATE TABLE t1;

--echo #
--echo # Verify that the DATA/INDEX DIRECTORY is stored and used if we
--echo # ALTER TABLE to MyISAM.
--echo #
ALTER TABLE t1 engine=MyISAM;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
SHOW CREATE TABLE t1;
--echo # Verifying .frm, .par and MyISAM files (.MYD, MYI)
--echo ---- MYSQLD_DATADIR/test
--list_files $MYSQLD_DATADIR/test
--echo ---- MYSQLTEST_VARDIR/mysql-test-data-dir
--list_files $MYSQLTEST_VARDIR/mysql-test-data-dir
--echo ---- MYSQLTEST_VARDIR/mysql-test-idx-dir
--list_files $MYSQLTEST_VARDIR/mysql-test-idx-dir

--echo #
--echo # Now verify that the DATA DIRECTORY is used again if we
--echo # ALTER TABLE back to TokuDB.
--echo #
SET SESSION tokudb_strict_mode = ON;
ALTER TABLE t1 engine=TokuDB;
--replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
SHOW CREATE TABLE t1;
--echo # Verifying .frm, .par, .isl and TokuDB .ibd files
--echo ---- MYSQLD_DATADIR/test
--list_files $MYSQLD_DATADIR/test
--echo ---- MYSQLTEST_VARDIR/mysql-test-data-dir
--list_files $MYSQLTEST_VARDIR/mysql-test-data-dir
--echo ---- MYSQLTEST_VARDIR/mysql-test-idx-dir
--list_files $MYSQLTEST_VARDIR/mysql-test-idx-dir
--echo ---- MYSQLTEST_VARDIR/mysql-test-data-dir/test
--list_files $MYSQLTEST_VARDIR/mysql-test-data-dir/test

DROP TABLE t1;

--echo #
--echo # Cleanup
--echo #

--rmdir $MYSQLTEST_VARDIR/mysql-test-data-dir/test
--rmdir $MYSQLTEST_VARDIR/mysql-test-data-dir
--rmdir $MYSQLTEST_VARDIR/mysql-test-idx-dir

--disable_query_log
EVAL SET GLOBAL tokudb_file_per_table=$tokudb_file_per_table_orig;
EVAL SET SESSION tokudb_strict_mode=$tokudb_strict_mode_orig;
--enable_query_log