1 ################################################################################ 
    2 # inc/partition_methods2.inc                                                   # 
    5 #   Create and check partitioned tables                                        # 
    6 #   The partitioning function uses the columns f_int1 and f_int2               # 
    7 #   For all partitioning methods                                               # 
    8 #        PARTITION BY HASH/KEY/LIST/RANGE                                      # 
    9 #        PARTITION BY RANGE/LIST ... SUBPARTITION BY HASH/KEY ...              # 
   11 #     1. Create the partitioned table                                          # 
   12 #     2  Insert the content of the table t0_template into t1                   # 
   13 #     3. Execute inc/partition_check.inc                                       # 
   14 #     4. Drop the table t1                                                     # 
   18 #        $unique -- PRIMARY KEY or UNIQUE INDEXes to be created within the     # 
   19 #                   CREATE TABLE STATEMENT                                     # 
   20 #   has to be set before sourcing this routine.                                # 
   22 #          let $unique= , UNIQUE INDEX uidx1 (f_int1);                         # 
   23 #          inc/partition_methods2.inc                                          # 
   25 # Attention: The routine inc/partition_methods1.inc is very similar            # 
   26 #            to this one. So if something has to be changed here it            # 
   27 #            might be necessary to do it also there                            # 
   29 #------------------------------------------------------------------------------# 
   30 # Original Author: mleich                                                      # 
   31 # Original Date: 2006-03-05                                                    # 
   35 ################################################################################ 
   38 DROP 
TABLE IF EXISTS t1;
 
   42 #----------- PARTITION BY HASH 
   43 if ($with_partitioning)
 
   45 let $partitioning= PARTITION BY 
HASH(f_int1 + f_int2) PARTITIONS 2;
 
   46 if ($with_directories)
 
   49 PARTITION BY 
HASH(f_int1 + f_int2) PARTITIONS 2
 
   58 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 
   59 eval CREATE 
TABLE t1 (
 
   65 --source suite/parts/inc/partition_check.inc
 
   68 #----------- PARTITION BY KEY 
   69 if ($with_partitioning)
 
   71 let $partitioning= PARTITION BY 
KEY(f_int1,f_int2) PARTITIONS 5;
 
   72 if ($with_directories)
 
   75 PARTITION BY 
KEY(f_int1,f_int2) PARTITIONS 5
 
   93 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 
   94 eval CREATE 
TABLE t1 (
 
  100 --source suite/parts/inc/partition_check.inc
 
  103 #----------- PARTITION BY LIST 
  104 if ($with_partitioning)
 
  106 let $partitioning= PARTITION BY 
LIST(MOD(f_int1 + f_int2,4))
 
  107 (PARTITION part_3 VALUES IN (-3),
 
  108  PARTITION part_2 VALUES IN (-2),
 
  109  PARTITION part_1 VALUES IN (-1),
 
  110  PARTITION part_N VALUES IN (NULL),
 
  111  PARTITION part0 VALUES IN (0),
 
  112  PARTITION part1 VALUES IN (1),
 
  113  PARTITION part2 VALUES IN (2),
 
  114  PARTITION part3 VALUES IN (3));
 
  115 if ($with_directories)
 
  118 PARTITION BY 
LIST(MOD(f_int1 + f_int2,4))
 
  119 (PARTITION part_3 VALUES IN (-3)
 
  120 $data_directory $index_directory,
 
  121  PARTITION part_2 VALUES IN (-2)
 
  122 $data_directory $index_directory,
 
  123  PARTITION part_1 VALUES IN (-1)
 
  124 $data_directory $index_directory,
 
  125  PARTITION part_N VALUES IN (NULL)
 
  126 $data_directory $index_directory,
 
  127  PARTITION part0 VALUES IN (0)
 
  128 $data_directory $index_directory,
 
  129  PARTITION part1 VALUES IN (1)
 
  130 $data_directory $index_directory,
 
  131  PARTITION part2 VALUES IN (2)
 
  132 $data_directory $index_directory,
 
  133  PARTITION part3 VALUES IN (3)
 
  134 $data_directory $index_directory);
 
  137 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 
  138 eval CREATE 
TABLE t1 (
 
  144 --source suite/parts/inc/partition_check.inc
 
  147 #----------- PARTITION BY RANGE 
  148 if ($with_partitioning)
 
  150 let $partitioning= PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
 
  151 (PARTITION parta VALUES LESS THAN (0),
 
  152 PARTITION partb VALUES LESS THAN ($max_row_div4),
 
  153 PARTITION partc VALUES LESS THAN ($max_row_div2),
 
  154 PARTITION partd VALUES LESS THAN ($max_row_div2 + $max_row_div4),
 
  155 PARTITION parte VALUES LESS THAN ($max_row),
 
  156 PARTITION partf VALUES LESS THAN $MAX_VALUE);
 
  157 if ($with_directories)
 
  159 let $partitioning= PARTITION BY RANGE((f_int1 + f_int2) DIV 2)
 
  160 (PARTITION parta VALUES LESS THAN (0)
 
  163 PARTITION partb VALUES LESS THAN ($max_row_div4)
 
  166 PARTITION partc VALUES LESS THAN ($max_row_div2)
 
  169 PARTITION partd VALUES LESS THAN ($max_row_div2 + $max_row_div4)
 
  172 PARTITION parte VALUES LESS THAN ($max_row)
 
  175 PARTITION partf VALUES LESS THAN $MAX_VALUE
 
  180 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 
  181 eval CREATE 
TABLE t1 (
 
  187 --source suite/parts/inc/partition_check.inc
 
  190 #----------- PARTITION BY RANGE -- SUBPARTITION BY HASH 
  191 if ($with_partitioning)
 
  194 PARTITION BY RANGE(f_int1) SUBPARTITION BY 
HASH(f_int2) SUBPARTITIONS 2
 
  195 (PARTITION parta VALUES LESS THAN (0),
 
  196 PARTITION partb VALUES LESS THAN ($max_row_div4),
 
  197 PARTITION partc VALUES LESS THAN ($max_row_div2),
 
  198 PARTITION partd VALUES LESS THAN $MAX_VALUE);
 
  199 if ($with_directories)
 
  202 PARTITION BY RANGE(f_int1) SUBPARTITION BY 
HASH(f_int2) SUBPARTITIONS 2
 
  203 (PARTITION parta VALUES LESS THAN (0)
 
  206 PARTITION partb VALUES LESS THAN ($max_row_div4)
 
  209 PARTITION partc VALUES LESS THAN ($max_row_div2)
 
  212 PARTITION partd VALUES LESS THAN $MAX_VALUE
 
  217 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 
  218 eval CREATE 
TABLE t1 (
 
  224 --source suite/parts/inc/partition_check.inc
 
  227 #----------- PARTITION BY RANGE -- SUBPARTITION BY KEY 
  228 if ($with_partitioning)
 
  230 let $partitioning= PARTITION BY RANGE(f_int1) SUBPARTITION BY 
KEY(f_int2)
 
  231 (PARTITION part1 VALUES LESS THAN (0)
 
  232 (SUBPARTITION subpart11, SUBPARTITION subpart12),
 
  233 PARTITION part2 VALUES LESS THAN ($max_row_div4)
 
  234 (SUBPARTITION subpart21, SUBPARTITION subpart22),
 
  235 PARTITION part3 VALUES LESS THAN ($max_row_div2)
 
  236 (SUBPARTITION subpart31, SUBPARTITION subpart32),
 
  237 PARTITION part4 VALUES LESS THAN $MAX_VALUE
 
  238 (SUBPARTITION subpart41, SUBPARTITION subpart42));
 
  239 if ($with_directories)
 
  241 let $partitioning= PARTITION BY RANGE(f_int1) SUBPARTITION BY 
KEY(f_int2)
 
  242 (PARTITION part1 VALUES LESS THAN (0)
 
  243 (SUBPARTITION subpart11 $data_directory $index_directory,
 
  244  SUBPARTITION subpart12 $data_directory $index_directory),
 
  245 PARTITION part2 VALUES LESS THAN ($max_row_div4)
 
  246 (SUBPARTITION subpart21 $data_directory $index_directory,
 
  247  SUBPARTITION subpart22 $data_directory $index_directory),
 
  248 PARTITION part3 VALUES LESS THAN ($max_row_div2)
 
  249 (SUBPARTITION subpart31 $data_directory $index_directory,
 
  250  SUBPARTITION subpart32 $data_directory $index_directory),
 
  251 PARTITION part4 VALUES LESS THAN $MAX_VALUE
 
  252 (SUBPARTITION subpart41 $data_directory $index_directory,
 
  253  SUBPARTITION subpart42 $data_directory $index_directory));
 
  256 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 
  257 eval CREATE 
TABLE t1 (
 
  263 --source suite/parts/inc/partition_check.inc
 
  266 #----------- PARTITION BY LIST -- SUBPARTITION BY HASH 
  267 if ($with_partitioning)
 
  269 let $partitioning= PARTITION BY 
LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY 
HASH(f_int2 + 1)
 
  270 (PARTITION part1 VALUES IN (0)
 
  271   (SUBPARTITION sp11, SUBPARTITION sp12),
 
  272  PARTITION part2 VALUES IN (1)
 
  273   (SUBPARTITION sp21, SUBPARTITION sp22),
 
  274  PARTITION part3 VALUES IN (2)
 
  275   (SUBPARTITION sp31, SUBPARTITION sp32),
 
  276  PARTITION part4 VALUES IN (NULL)
 
  277   (SUBPARTITION sp41, SUBPARTITION sp42));
 
  278 if ($with_directories)
 
  281 PARTITION BY 
LIST(ABS(MOD(f_int1,3))) SUBPARTITION BY 
HASH(f_int2 + 1)
 
  282 (PARTITION part1 VALUES IN (0)
 
  291  PARTITION part2 VALUES IN (1)
 
  300  PARTITION part3 VALUES IN (2)
 
  305  PARTITION part4 VALUES IN (NULL)
 
  316 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 
  317 eval CREATE 
TABLE t1 (
 
  323 --source suite/parts/inc/partition_check.inc
 
  326 #----------- PARTITION BY LIST -- SUBPARTITION BY KEY 
  327 if ($with_partitioning)
 
  330 PARTITION BY 
LIST(ABS(MOD(f_int1,2)))
 
  331 SUBPARTITION BY 
KEY(f_int2)  SUBPARTITIONS $sub_part_no
 
  332 (PARTITION part1 VALUES IN (0),
 
  333  PARTITION part2 VALUES IN (1),
 
  334  PARTITION part3 VALUES IN (NULL));
 
  335 if ($with_directories)
 
  338 PARTITION BY 
LIST(ABS(MOD(f_int1,2)))
 
  339 SUBPARTITION BY 
KEY(f_int2) SUBPARTITIONS $sub_part_no
 
  340 (PARTITION part1 VALUES IN (0)
 
  343  PARTITION part2 VALUES IN (1)
 
  346  PARTITION part3 VALUES IN (NULL)
 
  351 --replace_result $MYSQLTEST_VARDIR MYSQLTEST_VARDIR
 
  352 eval CREATE 
TABLE t1 (
 
  358 --source suite/parts/inc/partition_check.inc