Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/MariaDB/mysql-test/main/   (MariaDB Server Version 8.1-8.4©)  Datei vom 1.9.2026 mit Größe 107 kB image not shown  

Quelle  partition_range_interval.result   Sprache: Lisp

 

# simple case with DATETIME column showing partitions added in INSERT
set timestamp= unix_timestamp('2026-05-02 00:00:00');
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01 00:00:00
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21 00:00:00') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22 00:00:00') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23 00:00:00') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24 00:00:00') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25 00:00:00') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26 00:00:00') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27 00:00:00') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28 00:00:00') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29 00:00:00') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30 00:00:00') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01 00:00:00') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02 00:00:00') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03 00:00:00') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-04-20' 0
p1 RANGE COLUMNS `c` '2026-04-21 00:00:00' 0
p2 RANGE COLUMNS `c` '2026-04-22 00:00:00' 0
p3 RANGE COLUMNS `c` '2026-04-23 00:00:00' 0
p4 RANGE COLUMNS `c` '2026-04-24 00:00:00' 0
p5 RANGE COLUMNS `c` '2026-04-25 00:00:00' 0
p6 RANGE COLUMNS `c` '2026-04-26 00:00:00' 0
p7 RANGE COLUMNS `c` '2026-04-27 00:00:00' 0
p8 RANGE COLUMNS `c` '2026-04-28 00:00:00' 0
p9 RANGE COLUMNS `c` '2026-04-29 00:00:00' 0
p10 RANGE COLUMNS `c` '2026-04-30 00:00:00' 0
p11 RANGE COLUMNS `c` '2026-05-01 00:00:00' 0
p12 RANGE COLUMNS `c` '2026-05-02 00:00:00' 1
p13 RANGE COLUMNS `c` '2026-05-03 00:00:00' 0
set timestamp= unix_timestamp('2026-05-06 00:00:00');
insert into t1 values ('2026-05-04');
select * from t1;
c
2026-05-01 00:00:00
2026-05-04 00:00:00
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21 00:00:00') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22 00:00:00') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23 00:00:00') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24 00:00:00') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25 00:00:00') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26 00:00:00') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27 00:00:00') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28 00:00:00') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29 00:00:00') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30 00:00:00') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01 00:00:00') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02 00:00:00') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03 00:00:00') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04 00:00:00') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05 00:00:00') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06 00:00:00') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07 00:00:00') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-04-20' 0
p1 RANGE COLUMNS `c` '2026-04-21 00:00:00' 0
p2 RANGE COLUMNS `c` '2026-04-22 00:00:00' 0
p3 RANGE COLUMNS `c` '2026-04-23 00:00:00' 0
p4 RANGE COLUMNS `c` '2026-04-24 00:00:00' 0
p5 RANGE COLUMNS `c` '2026-04-25 00:00:00' 0
p6 RANGE COLUMNS `c` '2026-04-26 00:00:00' 0
p7 RANGE COLUMNS `c` '2026-04-27 00:00:00' 0
p8 RANGE COLUMNS `c` '2026-04-28 00:00:00' 0
p9 RANGE COLUMNS `c` '2026-04-29 00:00:00' 0
p10 RANGE COLUMNS `c` '2026-04-30 00:00:00' 0
p11 RANGE COLUMNS `c` '2026-05-01 00:00:00' 0
p12 RANGE COLUMNS `c` '2026-05-02 00:00:00' 1
p13 RANGE COLUMNS `c` '2026-05-03 00:00:00' 0
p14 RANGE COLUMNS `c` '2026-05-04 00:00:00' 0
p15 RANGE COLUMNS `c` '2026-05-05 00:00:00' 1
p16 RANGE COLUMNS `c` '2026-05-06 00:00:00' 0
p17 RANGE COLUMNS `c` '2026-05-07 00:00:00' 0
drop table t1;
# simple case with DATE column
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 DAY AUTO
(
PARTITION p0 VALUES LESS THAN ('2026-04-30')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-04-30' 0
p1 RANGE COLUMNS `c` '2026-05-01' 0
p2 RANGE COLUMNS `c` '2026-05-02' 1
p3 RANGE COLUMNS `c` '2026-05-03' 0
p4 RANGE COLUMNS `c` '2026-05-04' 0
p5 RANGE COLUMNS `c` '2026-05-05' 0
p6 RANGE COLUMNS `c` '2026-05-06' 0
p7 RANGE COLUMNS `c` '2026-05-07' 0
drop table t1;
# oracle interval syntax
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL (NUMTODSINTERVAL(1, 'DAY'))
(
PARTITION p0 VALUES LESS THAN ('2026-04-30')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-04-30' 0
p1 RANGE COLUMNS `c` '2026-05-01' 0
p2 RANGE COLUMNS `c` '2026-05-02' 1
p3 RANGE COLUMNS `c` '2026-05-03' 0
p4 RANGE COLUMNS `c` '2026-05-04' 0
p5 RANGE COLUMNS `c` '2026-05-05' 0
p6 RANGE COLUMNS `c` '2026-05-06' 0
p7 RANGE COLUMNS `c` '2026-05-07' 0
drop table t1;
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
(
PARTITION p0 VALUES LESS THAN ('2025-04-30')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 MONTH
(PARTITION `p0` VALUES LESS THAN ('2025-04-30') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 MONTH
(PARTITION `p0` VALUES LESS THAN ('2025-04-30') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2025-05-30') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2025-06-30') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2025-07-30') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2025-08-30') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2025-09-30') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2025-10-30') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2025-11-30') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2025-12-30') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-01-30') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-02-28') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-03-28') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-28') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2025-04-30' 0
p1 RANGE COLUMNS `c` '2025-05-30' 0
p2 RANGE COLUMNS `c` '2025-06-30' 0
p3 RANGE COLUMNS `c` '2025-07-30' 0
p4 RANGE COLUMNS `c` '2025-08-30' 0
p5 RANGE COLUMNS `c` '2025-09-30' 0
p6 RANGE COLUMNS `c` '2025-10-30' 0
p7 RANGE COLUMNS `c` '2025-11-30' 0
p8 RANGE COLUMNS `c` '2025-12-30' 0
p9 RANGE COLUMNS `c` '2026-01-30' 0
p10 RANGE COLUMNS `c` '2026-02-28' 0
p11 RANGE COLUMNS `c` '2026-03-28' 0
p12 RANGE COLUMNS `c` '2026-04-28' 0
p13 RANGE COLUMNS `c` '2026-05-28' 1
drop table t1;
## NUMTODSINTERVAL takes only DAY, HOUR, MINUTE or SECOND
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL (NUMTODSINTERVAL(1, 'YEAR'))
(
PARTITION p0 VALUES LESS THAN ('2024-04-30')
);
ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'INTERVAL'
## NUMTOYMINTERVAL takes only YEAR or MONTH
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL (NUMTOYMINTERVAL(1, 'HOUR'))
(
PARTITION p0 VALUES LESS THAN ('2026-04-30')
);
ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'INTERVAL'
# 1.5 day interval truncated to +1d, +2d, +1d, +2d, ...
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 36 Hour
(
PARTITION p0 VALUES LESS THAN ('2026-04-30')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 36 HOUR
(PARTITION `p0` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 36 HOUR
(PARTITION `p0` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-04-30' 0
p1 RANGE COLUMNS `c` '2026-05-01' 0
p2 RANGE COLUMNS `c` '2026-05-03' 1
p3 RANGE COLUMNS `c` '2026-05-04' 0
p4 RANGE COLUMNS `c` '2026-05-06' 0
p5 RANGE COLUMNS `c` '2026-05-07' 0
drop table t1;
# DATE column with 1 week interval
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Week
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 7 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 7 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-11') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-04-20' 0
p1 RANGE COLUMNS `c` '2026-04-27' 0
p2 RANGE COLUMNS `c` '2026-05-04' 1
p3 RANGE COLUMNS `c` '2026-05-11' 0
drop table t1;
# DATETIME column with 1 hour interval
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 hour
(
PARTITION p0 VALUES LESS THAN ('2026-05-05')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 HOUR
(PARTITION `p0` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB)
insert into t1 values ('2026-05-05 03:00:00');
select * from t1;
c
2026-05-05 03:00:00
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 HOUR
(PARTITION `p0` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-05-05 01:00:00') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-05 02:00:00') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-05 03:00:00') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-05 04:00:00') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-05 05:00:00') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-05 06:00:00') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-05 07:00:00') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-05 08:00:00') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-05-05 09:00:00') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-05-05 10:00:00') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-05 11:00:00') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-05 12:00:00') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-05 13:00:00') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-05 14:00:00') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05 15:00:00') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-05 16:00:00') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-05 17:00:00') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-05-05 18:00:00') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-05-05 19:00:00') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-05-05 20:00:00') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-05-05 21:00:00') ENGINE = InnoDB,
 PARTITION `p22` VALUES LESS THAN ('2026-05-05 22:00:00') ENGINE = InnoDB,
 PARTITION `p23` VALUES LESS THAN ('2026-05-05 23:00:00') ENGINE = InnoDB,
 PARTITION `p24` VALUES LESS THAN ('2026-05-06 00:00:00') ENGINE = InnoDB,
 PARTITION `p25` VALUES LESS THAN ('2026-05-06 01:00:00') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-05-05' 0
p1 RANGE COLUMNS `c` '2026-05-05 01:00:00' 0
p2 RANGE COLUMNS `c` '2026-05-05 02:00:00' 0
p3 RANGE COLUMNS `c` '2026-05-05 03:00:00' 0
p4 RANGE COLUMNS `c` '2026-05-05 04:00:00' 1
p5 RANGE COLUMNS `c` '2026-05-05 05:00:00' 0
p6 RANGE COLUMNS `c` '2026-05-05 06:00:00' 0
p7 RANGE COLUMNS `c` '2026-05-05 07:00:00' 0
p8 RANGE COLUMNS `c` '2026-05-05 08:00:00' 0
p9 RANGE COLUMNS `c` '2026-05-05 09:00:00' 0
p10 RANGE COLUMNS `c` '2026-05-05 10:00:00' 0
p11 RANGE COLUMNS `c` '2026-05-05 11:00:00' 0
p12 RANGE COLUMNS `c` '2026-05-05 12:00:00' 0
p13 RANGE COLUMNS `c` '2026-05-05 13:00:00' 0
p14 RANGE COLUMNS `c` '2026-05-05 14:00:00' 0
p15 RANGE COLUMNS `c` '2026-05-05 15:00:00' 0
p16 RANGE COLUMNS `c` '2026-05-05 16:00:00' 0
p17 RANGE COLUMNS `c` '2026-05-05 17:00:00' 0
p18 RANGE COLUMNS `c` '2026-05-05 18:00:00' 0
p19 RANGE COLUMNS `c` '2026-05-05 19:00:00' 0
p20 RANGE COLUMNS `c` '2026-05-05 20:00:00' 0
p21 RANGE COLUMNS `c` '2026-05-05 21:00:00' 0
p22 RANGE COLUMNS `c` '2026-05-05 22:00:00' 0
p23 RANGE COLUMNS `c` '2026-05-05 23:00:00' 0
p24 RANGE COLUMNS `c` '2026-05-06 00:00:00' 0
p25 RANGE COLUMNS `c` '2026-05-06 01:00:00' 0
drop table t1;
# DATETIME column with some decimal points in partition range value
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 hour
(
PARTITION p0 VALUES LESS THAN ('2026-05-05 01:23:45.6789')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 HOUR
(PARTITION `p0` VALUES LESS THAN ('2026-05-05 01:23:45.6789') ENGINE = InnoDB)
insert into t1 values ('2026-05-05 03:00:00');
select * from t1;
c
2026-05-05 03:00:00
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 HOUR
(PARTITION `p0` VALUES LESS THAN ('2026-05-05 01:23:45.6789') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-05-05 02:23:45.6789') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-05 03:23:45.6789') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-05 04:23:45.6789') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-05 05:23:45.6789') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-05 06:23:45.6789') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-05 07:23:45.6789') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-05 08:23:45.6789') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-05 09:23:45.6789') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-05-05 10:23:45.6789') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-05-05 11:23:45.6789') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-05 12:23:45.6789') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-05 13:23:45.6789') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-05 14:23:45.6789') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-05 15:23:45.6789') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05 16:23:45.6789') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-05 17:23:45.6789') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-05 18:23:45.6789') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-05-05 19:23:45.6789') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-05-05 20:23:45.6789') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-05-05 21:23:45.6789') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-05-05 22:23:45.6789') ENGINE = InnoDB,
 PARTITION `p22` VALUES LESS THAN ('2026-05-05 23:23:45.6789') ENGINE = InnoDB,
 PARTITION `p23` VALUES LESS THAN ('2026-05-06 00:23:45.6789') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-05-05 01:23:45.6789' 0
p1 RANGE COLUMNS `c` '2026-05-05 02:23:45.6789' 0
p2 RANGE COLUMNS `c` '2026-05-05 03:23:45.6789' 1
p3 RANGE COLUMNS `c` '2026-05-05 04:23:45.6789' 0
p4 RANGE COLUMNS `c` '2026-05-05 05:23:45.6789' 0
p5 RANGE COLUMNS `c` '2026-05-05 06:23:45.6789' 0
p6 RANGE COLUMNS `c` '2026-05-05 07:23:45.6789' 0
p7 RANGE COLUMNS `c` '2026-05-05 08:23:45.6789' 0
p8 RANGE COLUMNS `c` '2026-05-05 09:23:45.6789' 0
p9 RANGE COLUMNS `c` '2026-05-05 10:23:45.6789' 0
p10 RANGE COLUMNS `c` '2026-05-05 11:23:45.6789' 0
p11 RANGE COLUMNS `c` '2026-05-05 12:23:45.6789' 0
p12 RANGE COLUMNS `c` '2026-05-05 13:23:45.6789' 0
p13 RANGE COLUMNS `c` '2026-05-05 14:23:45.6789' 0
p14 RANGE COLUMNS `c` '2026-05-05 15:23:45.6789' 0
p15 RANGE COLUMNS `c` '2026-05-05 16:23:45.6789' 0
p16 RANGE COLUMNS `c` '2026-05-05 17:23:45.6789' 0
p17 RANGE COLUMNS `c` '2026-05-05 18:23:45.6789' 0
p18 RANGE COLUMNS `c` '2026-05-05 19:23:45.6789' 0
p19 RANGE COLUMNS `c` '2026-05-05 20:23:45.6789' 0
p20 RANGE COLUMNS `c` '2026-05-05 21:23:45.6789' 0
p21 RANGE COLUMNS `c` '2026-05-05 22:23:45.6789' 0
p22 RANGE COLUMNS `c` '2026-05-05 23:23:45.6789' 0
p23 RANGE COLUMNS `c` '2026-05-06 00:23:45.6789' 0
drop table t1;
# more than 1 starting partition
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20'),
PARTITION p1 VALUES LESS THAN ('2026-04-25')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01 00:00:00
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-26 00:00:00') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-27 00:00:00') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-28 00:00:00') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-29 00:00:00') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-30 00:00:00') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-01 00:00:00') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-02 00:00:00') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-05-03 00:00:00') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-05-04 00:00:00') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-05 00:00:00') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-06 00:00:00') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-07 00:00:00') ENGINE = InnoDB)
drop table t1;
# no need to create new partition when existing ones are sufficient
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-01'),
PARTITION p1 VALUES LESS THAN ('2026-05-06')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01 00:00:00
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-07 00:00:00') ENGINE = InnoDB)
drop table t1;
# find a gap big enough for names of 10 new partition names
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p9 VALUES LESS THAN ('2026-04-01'),
PARTITION p29 VALUES LESS THAN ('2026-04-04'),
PARTITION p19 VALUES LESS THAN ('2026-04-23'),
PARTITION p40 VALUES LESS THAN ('2026-04-27')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p9` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p29` VALUES LESS THAN ('2026-04-04') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p40` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01 00:00:00
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p9` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p29` VALUES LESS THAN ('2026-04-04') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p40` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p30` VALUES LESS THAN ('2026-04-28 00:00:00') ENGINE = InnoDB,
 PARTITION `p31` VALUES LESS THAN ('2026-04-29 00:00:00') ENGINE = InnoDB,
 PARTITION `p32` VALUES LESS THAN ('2026-04-30 00:00:00') ENGINE = InnoDB,
 PARTITION `p33` VALUES LESS THAN ('2026-05-01 00:00:00') ENGINE = InnoDB,
 PARTITION `p34` VALUES LESS THAN ('2026-05-02 00:00:00') ENGINE = InnoDB,
 PARTITION `p35` VALUES LESS THAN ('2026-05-03 00:00:00') ENGINE = InnoDB,
 PARTITION `p36` VALUES LESS THAN ('2026-05-04 00:00:00') ENGINE = InnoDB,
 PARTITION `p37` VALUES LESS THAN ('2026-05-05 00:00:00') ENGINE = InnoDB,
 PARTITION `p38` VALUES LESS THAN ('2026-05-06 00:00:00') ENGINE = InnoDB,
 PARTITION `p39` VALUES LESS THAN ('2026-05-07 00:00:00') ENGINE = InnoDB)
drop table t1;
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p40 VALUES LESS THAN ('2026-04-27')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p40` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
select * from t1;
c
2026-05-01
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p40` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
drop table t1;
# INSERT ... SELECT
select to_days('2026-04-01') = 740072;
to_days('2026-04-01') = 740072
1
select to_days('2026-05-01') = 740102;
to_days('2026-05-01') = 740102
1
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-01')
);
insert into t1 select from_days(seq) from seq_740073_to_740102;
select * from t1;
c
2026-04-02
2026-04-03
2026-04-04
2026-04-05
2026-04-06
2026-04-07
2026-04-08
2026-04-09
2026-04-10
2026-04-11
2026-04-12
2026-04-13
2026-04-14
2026-04-15
2026-04-16
2026-04-17
2026-04-18
2026-04-19
2026-04-20
2026-04-21
2026-04-22
2026-04-23
2026-04-24
2026-04-25
2026-04-26
2026-04-27
2026-04-28
2026-04-29
2026-04-30
2026-05-01
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-02') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-03') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-05') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-06') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-07') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-08') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-09') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-10') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-11') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-04-12') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-04-13') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-04-14') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-04-15') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-04-16') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-04-17') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-04-18') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-04-19') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p22` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p23` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p24` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p25` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p26` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p27` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p28` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p29` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p30` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p31` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p32` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p33` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p34` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p35` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p36` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-04-01' 0
p1 RANGE COLUMNS `c` '2026-04-02' 0
p2 RANGE COLUMNS `c` '2026-04-03' 1
p3 RANGE COLUMNS `c` '2026-04-04' 1
p4 RANGE COLUMNS `c` '2026-04-05' 1
p5 RANGE COLUMNS `c` '2026-04-06' 1
p6 RANGE COLUMNS `c` '2026-04-07' 1
p7 RANGE COLUMNS `c` '2026-04-08' 1
p8 RANGE COLUMNS `c` '2026-04-09' 1
p9 RANGE COLUMNS `c` '2026-04-10' 1
p10 RANGE COLUMNS `c` '2026-04-11' 1
p11 RANGE COLUMNS `c` '2026-04-12' 1
p12 RANGE COLUMNS `c` '2026-04-13' 1
p13 RANGE COLUMNS `c` '2026-04-14' 1
p14 RANGE COLUMNS `c` '2026-04-15' 1
p15 RANGE COLUMNS `c` '2026-04-16' 1
p16 RANGE COLUMNS `c` '2026-04-17' 1
p17 RANGE COLUMNS `c` '2026-04-18' 1
p18 RANGE COLUMNS `c` '2026-04-19' 1
p19 RANGE COLUMNS `c` '2026-04-20' 1
p20 RANGE COLUMNS `c` '2026-04-21' 1
p21 RANGE COLUMNS `c` '2026-04-22' 1
p22 RANGE COLUMNS `c` '2026-04-23' 1
p23 RANGE COLUMNS `c` '2026-04-24' 1
p24 RANGE COLUMNS `c` '2026-04-25' 1
p25 RANGE COLUMNS `c` '2026-04-26' 1
p26 RANGE COLUMNS `c` '2026-04-27' 1
p27 RANGE COLUMNS `c` '2026-04-28' 1
p28 RANGE COLUMNS `c` '2026-04-29' 1
p29 RANGE COLUMNS `c` '2026-04-30' 1
p30 RANGE COLUMNS `c` '2026-05-01' 1
p31 RANGE COLUMNS `c` '2026-05-02' 1
p32 RANGE COLUMNS `c` '2026-05-03' 0
p33 RANGE COLUMNS `c` '2026-05-04' 0
p34 RANGE COLUMNS `c` '2026-05-05' 0
p35 RANGE COLUMNS `c` '2026-05-06' 0
p36 RANGE COLUMNS `c` '2026-05-07' 0
drop table t1;
select to_days('2026-05-01') = 740102;
to_days('2026-05-01') = 740102
1
select to_days('2026-05-08') = 740109;
to_days('2026-05-08') = 740109
1
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-01')
);
insert into t1 select from_days(seq) from seq_740102_to_740109;
ERROR HY000: Table has no partition for value from column_list
select * from t1;
c
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-02') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-03') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-05') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-06') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-07') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-08') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-09') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-10') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-11') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-04-12') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-04-13') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-04-14') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-04-15') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-04-16') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-04-17') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-04-18') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-04-19') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p22` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p23` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p24` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p25` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p26` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p27` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p28` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p29` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p30` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p31` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p32` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p33` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p34` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p35` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p36` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name partition_method partition_expression partition_description table_rows
drop table t1;
# LOAD DATA INFILE
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
load data infile 'load.data' into table t1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name partition_method partition_expression partition_description table_rows
p12 RANGE COLUMNS `c` '2026-05-02' 1
p13 RANGE COLUMNS `c` '2026-05-03' 1
p14 RANGE COLUMNS `c` '2026-05-04' 1
p15 RANGE COLUMNS `c` '2026-05-05' 1
p16 RANGE COLUMNS `c` '2026-05-06' 1
drop table t1;
# LOAD DATA INFILE ... REPLACE
set timestamp= unix_timestamp('2026-05-02 00:00:00');
create table t1 (c date key, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
insert into t1 values ('2026-05-02', 1);
set timestamp= unix_timestamp('2026-05-06 00:00:00');
load data infile 'load.data' replace into table t1 FIELDS TERMINATED BY ',';
select * from t1;
c d
2026-05-02 3
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date NOT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
drop table t1;
# LOAD DATA INFILE failure for future dates
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
load data infile 'load.data' into table t1;
ERROR HY000: Table has no partition for value from column_list
select * from t1;
c
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name partition_method partition_expression partition_description table_rows
drop table t1;
# LOAD DATA INFILE IGNORE for future dates
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
load data infile 'load.data' ignore into table t1;
Warnings:
Warning 1526 Table has no partition for value from column_list
Warning 1526 Table has no partition for value from column_list
select * from t1;
c
2026-05-05
2026-05-06
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name partition_method partition_expression partition_description table_rows
p16 RANGE COLUMNS `c` '2026-05-06' 1
p17 RANGE COLUMNS `c` '2026-05-07' 1
drop table t1;
# UPDATE
set timestamp= unix_timestamp('2026-05-02 00:00:00');
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
insert into t1 values ('2026-04-28'), ('2026-04-29'), ('2026-04-30');
select * from t1;
c
2026-04-28
2026-04-29
2026-04-30
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name partition_method partition_expression partition_description table_rows
p4 RANGE COLUMNS `c` '2026-04-29' 1
p5 RANGE COLUMNS `c` '2026-04-30' 1
p6 RANGE COLUMNS `c` '2026-05-01' 1
set timestamp= unix_timestamp('2026-05-06 00:00:00');
update t1 set c = date_add(c, interval 6 day);
select * from t1;
c
2026-05-04
2026-05-05
2026-05-06
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name partition_method partition_expression partition_description table_rows
p10 RANGE COLUMNS `c` '2026-05-05' 1
p11 RANGE COLUMNS `c` '2026-05-06' 1
p12 RANGE COLUMNS `c` '2026-05-07' 1
set timestamp= unix_timestamp('2026-05-08 00:00:00');
update t1 set c = date_add(c, interval 3 day);
ERROR HY000: Table has no partition for value from column_list
select * from t1;
c
2026-05-04
2026-05-05
2026-05-06
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-08') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-09') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name partition_method partition_expression partition_description
p10 RANGE COLUMNS `c` '2026-05-05'
p11 RANGE COLUMNS `c` '2026-05-06'
p12 RANGE COLUMNS `c` '2026-05-07'
set timestamp= unix_timestamp('2026-05-06 00:00:00');
drop table t1;
# ALTER TABLE, no interval => have interval
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
insert into t1 values ('2026-05-01');
ERROR HY000: Table has no partition for value from column_list
ALTER TABLE t1 PARTITION BY RANGE COLUMNS (c) INTERVAL 1 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
insert into t1 values ('2026-05-01');
SELECT * FROM t1;
c
2026-05-01
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name partition_method partition_expression partition_description table_rows
p7 RANGE COLUMNS `c` '2026-05-02' 1
drop table t1;
# ALTER TABLE, have interval => no interval
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB)
alter table t1
PARTITION BY RANGE COLUMNS (c)
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`)
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
ERROR HY000: Table has no partition for value from column_list
drop table t1;
# ALTER TABLE, adding a partition to a RANGE COLUMNS INTERVAL
# partitioned table
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 3 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
ALTER TABLE t1 ADD PARTITION (PARTITION p1 VALUES LESS THAN ('2026-04-27'));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB)
insert into t1 values ('2026-05-01');
ALTER TABLE t1 ADD PARTITION (PARTITION p6 VALUES LESS THAN ('2026-05-02'));
ERROR HY000: VALUES LESS THAN value must be strictly increasing for each partition
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-09') ENGINE = InnoDB)
ALTER TABLE t1 ADD PARTITION (PARTITION p7 VALUES LESS THAN ('2026-05-10'));
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-09') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-10') ENGINE = InnoDB)
ALTER TABLE t1 ADD PARTITION (PARTITION p8 VALUES LESS THAN MAXVALUE);
ERROR HY000: MAXVALUE is not allowed in range partitioning with interval
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-09') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-10') ENGINE = InnoDB)
drop table t1;
# with subpartitions.
# note that only [LINEAR] KEY and [LINEAR] HASH are allowed
# subpartitioning methods
select to_days('2026-04-20') = 740091;
to_days('2026-04-20') = 740091
1
select to_days('2026-05-01') = 740102;
to_days('2026-05-01') = 740102
1
create table t1 (c date, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 3 DAY
SUBPARTITION BY KEY ALGORITHM=XXH3 (d) SUBPARTITIONS 2
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
insert into t1 select from_days(seq), seq from seq_740091_to_740102;
select * from t1;
c d
2026-04-21 740092
2026-04-23 740094
2026-04-24 740095
2026-04-20 740091
2026-04-22 740093
2026-04-25 740096
2026-04-27 740098
2026-04-26 740097
2026-04-30 740101
2026-04-28 740099
2026-04-29 740100
2026-05-01 740102
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL,
  `d` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
SUBPARTITION BY KEY ALGORITHM = XXH3 (`d`)
SUBPARTITIONS 2
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select partition_name, subpartition_name, partition_method, partition_description, table_rows from information_schema.partitions where table_name='t1' and table_rows > 0;
partition_name subpartition_name partition_method partition_description table_rows
p0 p0sp0 RANGE COLUMNS '2026-04-25' 3
p0 p0sp1 RANGE COLUMNS '2026-04-25' 2
p1 p1sp0 RANGE COLUMNS '2026-04-28' 2
p1 p1sp1 RANGE COLUMNS '2026-04-28' 1
p2 p2sp0 RANGE COLUMNS '2026-05-01' 1
p2 p2sp1 RANGE COLUMNS '2026-05-01' 2
p3 p3sp0 RANGE COLUMNS '2026-05-04' 1
drop table t1;
# with an index
select to_days('2026-04-20') = 740091;
to_days('2026-04-20') = 740091
1
select to_days('2026-05-01') = 740102;
to_days('2026-05-01') = 740102
1
create table t1 (c date key, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 3 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
insert into t1 select from_days(seq), seq from seq_740091_to_740102;
select * from t1;
c d
2026-04-20 740091
2026-04-21 740092
2026-04-22 740093
2026-04-23 740094
2026-04-24 740095
2026-04-25 740096
2026-04-26 740097
2026-04-27 740098
2026-04-28 740099
2026-04-29 740100
2026-04-30 740101
2026-05-01 740102
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date NOT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
drop table t1;
# REPLACE
select to_days('2026-04-15') = 740086;
to_days('2026-04-15') = 740086
1
select to_days('2026-04-24') = 740095;
to_days('2026-04-24') = 740095
1
create table t1 (c date key, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
insert into t1 select from_days(seq), seq from seq_740086_to_740095;
select * from t1;
c d
2026-04-15 740086
2026-04-16 740087
2026-04-17 740088
2026-04-18 740089
2026-04-19 740090
2026-04-20 740091
2026-04-21 740092
2026-04-22 740093
2026-04-23 740094
2026-04-24 740095
alter table t1
PARTITION BY RANGE COLUMNS (c)
INTERVAL 3 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
replace into t1 values ('2026-05-01', 123), ('2026-04-15', 456), ('2026-04-29', 789);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date NOT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select * from t1;
c d
2026-04-15 456
2026-04-16 740087
2026-04-17 740088
2026-04-18 740089
2026-04-19 740090
2026-04-20 740091
2026-04-21 740092
2026-04-22 740093
2026-04-23 740094
2026-04-24 740095
2026-04-29 789
2026-05-01 123
drop table t1;
# REPLACE ... SELECT
select to_days('2026-04-15') = 740086;
to_days('2026-04-15') = 740086
1
select to_days('2026-04-24') = 740095;
to_days('2026-04-24') = 740095
1
create table t1 (c date key, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
insert into t1 select from_days(seq), seq from seq_740086_to_740095;
select * from t1;
c d
2026-04-15 740086
2026-04-16 740087
2026-04-17 740088
2026-04-18 740089
2026-04-19 740090
2026-04-20 740091
2026-04-21 740092
2026-04-22 740093
2026-04-23 740094
2026-04-24 740095
alter table t1
PARTITION BY RANGE COLUMNS (c)
INTERVAL 3 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
replace into t1 select date_add(c, interval 5 day), d from t1;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date NOT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
select * from t1;
c d
2026-04-15 740086
2026-04-16 740087
2026-04-17 740088
2026-04-18 740089
2026-04-19 740090
2026-04-20 740086
2026-04-21 740087
2026-04-22 740088
2026-04-23 740089
2026-04-24 740090
2026-04-25 740091
2026-04-26 740092
2026-04-27 740093
2026-04-28 740094
2026-04-29 740095
drop table t1;
# INSERT .. ON DUPLICATE KEY UPDATE (ODKU)
set timestamp= unix_timestamp('2026-05-02 00:00:00');
create table t1 (c date key, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
insert into t1 values ('2026-05-02', 1);
set timestamp= unix_timestamp('2026-05-06 00:00:00');
insert into t1 values ('2026-05-02', 2)
on duplicate key update c = date_add(c, interval 4 day);
select * from t1;
c d
2026-05-06 1
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date NOT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`c`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
drop table t1;
# multi-table update
select to_days('2026-04-10') = 740081;
to_days('2026-04-10') = 740081
1
select to_days('2026-04-15') = 740086;
to_days('2026-04-15') = 740086
1
select to_days('2026-04-20') = 740091;
to_days('2026-04-20') = 740091
1
select to_days('2026-04-24') = 740095;
to_days('2026-04-24') = 740095
1
create table t1 (c date, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
(
PARTITION p0 VALUES LESS THAN ('2026-04-21')
);
create table t2 (c date, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
insert into t1 select from_days(seq), seq from seq_740081_to_740091;
insert into t2 select from_days(seq), seq from seq_740086_to_740095;
alter table t1
PARTITION BY RANGE COLUMNS (c)
INTERVAL 3 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
alter table t2
PARTITION BY RANGE COLUMNS (c)
INTERVAL 3 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
update t1, t2
set t1.c = date_add(t1.c, interval 10 day),
t2.c = date_add(t2.c, interval 10 day)
where t1.c = t2.c;
select * from t1;
c d
2026-04-10 740081
2026-04-11 740082
2026-04-12 740083
2026-04-13 740084
2026-04-14 740085
2026-04-25 740086
2026-04-26 740087
2026-04-27 740088
2026-04-28 740089
2026-04-29 740090
2026-04-30 740091
select * from t2;
c d
2026-04-21 740092
2026-04-22 740093
2026-04-23 740094
2026-04-24 740095
2026-04-25 740086
2026-04-26 740087
2026-04-27 740088
2026-04-28 740089
2026-04-29 740090
2026-04-30 740091
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL,
  `d` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
  `c` date DEFAULT NULL,
  `d` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 3 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
drop table t1, t2;
# cannot alter to a partition with a lower date even with interval if
# date does not fit. this is because auto partition creation only
# happens in DML
create table t1 (c date)
PARTITION BY RANGE COLUMNS (c)
(
PARTITION p0 VALUES LESS THAN ('2026-04-30')
);
insert into t1 values ('2026-04-29');
alter table t1
PARTITION BY RANGE COLUMNS (c)
interval 3 day
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
ERROR HY000: Table has no partition for value from column_list
drop table t1;
# failing insertion of dates in the future
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-01')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB)
insert into t1 values ('2026-05-07');
ERROR HY000: Table has no partition for value from column_list
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-02 00:00:00') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-03 00:00:00') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-04 00:00:00') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-05 00:00:00') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-06 00:00:00') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-07 00:00:00') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-08 00:00:00') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-09 00:00:00') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-10 00:00:00') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-11 00:00:00') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-04-12 00:00:00') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-04-13 00:00:00') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-04-14 00:00:00') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-04-15 00:00:00') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-04-16 00:00:00') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-04-17 00:00:00') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-04-18 00:00:00') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-04-19 00:00:00') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-04-20 00:00:00') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-04-21 00:00:00') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-04-22 00:00:00') ENGINE = InnoDB,
 PARTITION `p22` VALUES LESS THAN ('2026-04-23 00:00:00') ENGINE = InnoDB,
 PARTITION `p23` VALUES LESS THAN ('2026-04-24 00:00:00') ENGINE = InnoDB,
 PARTITION `p24` VALUES LESS THAN ('2026-04-25 00:00:00') ENGINE = InnoDB,
 PARTITION `p25` VALUES LESS THAN ('2026-04-26 00:00:00') ENGINE = InnoDB,
 PARTITION `p26` VALUES LESS THAN ('2026-04-27 00:00:00') ENGINE = InnoDB,
 PARTITION `p27` VALUES LESS THAN ('2026-04-28 00:00:00') ENGINE = InnoDB,
 PARTITION `p28` VALUES LESS THAN ('2026-04-29 00:00:00') ENGINE = InnoDB,
 PARTITION `p29` VALUES LESS THAN ('2026-04-30 00:00:00') ENGINE = InnoDB,
 PARTITION `p30` VALUES LESS THAN ('2026-05-01 00:00:00') ENGINE = InnoDB,
 PARTITION `p31` VALUES LESS THAN ('2026-05-02 00:00:00') ENGINE = InnoDB,
 PARTITION `p32` VALUES LESS THAN ('2026-05-03 00:00:00') ENGINE = InnoDB,
 PARTITION `p33` VALUES LESS THAN ('2026-05-04 00:00:00') ENGINE = InnoDB,
 PARTITION `p34` VALUES LESS THAN ('2026-05-05 00:00:00') ENGINE = InnoDB,
 PARTITION `p35` VALUES LESS THAN ('2026-05-06 00:00:00') ENGINE = InnoDB,
 PARTITION `p36` VALUES LESS THAN ('2026-05-07 00:00:00') ENGINE = InnoDB)
drop table t1;
# passthrough behaviour
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-01')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB)
begin;
insert into t1 values ('2026-05-01');
insert into t1 values ('2026-05-02');
select * from t1;
c
2026-05-01 00:00:00
2026-05-02 00:00:00
rollback;
select * from t1;
c
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-02 00:00:00') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-03 00:00:00') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-04 00:00:00') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-05 00:00:00') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-06 00:00:00') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-07 00:00:00') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-08 00:00:00') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-09 00:00:00') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-10 00:00:00') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-11 00:00:00') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-04-12 00:00:00') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-04-13 00:00:00') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-04-14 00:00:00') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-04-15 00:00:00') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-04-16 00:00:00') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-04-17 00:00:00') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-04-18 00:00:00') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-04-19 00:00:00') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-04-20 00:00:00') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-04-21 00:00:00') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-04-22 00:00:00') ENGINE = InnoDB,
 PARTITION `p22` VALUES LESS THAN ('2026-04-23 00:00:00') ENGINE = InnoDB,
 PARTITION `p23` VALUES LESS THAN ('2026-04-24 00:00:00') ENGINE = InnoDB,
 PARTITION `p24` VALUES LESS THAN ('2026-04-25 00:00:00') ENGINE = InnoDB,
 PARTITION `p25` VALUES LESS THAN ('2026-04-26 00:00:00') ENGINE = InnoDB,
 PARTITION `p26` VALUES LESS THAN ('2026-04-27 00:00:00') ENGINE = InnoDB,
 PARTITION `p27` VALUES LESS THAN ('2026-04-28 00:00:00') ENGINE = InnoDB,
 PARTITION `p28` VALUES LESS THAN ('2026-04-29 00:00:00') ENGINE = InnoDB,
 PARTITION `p29` VALUES LESS THAN ('2026-04-30 00:00:00') ENGINE = InnoDB,
 PARTITION `p30` VALUES LESS THAN ('2026-05-01 00:00:00') ENGINE = InnoDB,
 PARTITION `p31` VALUES LESS THAN ('2026-05-02 00:00:00') ENGINE = InnoDB,
 PARTITION `p32` VALUES LESS THAN ('2026-05-03 00:00:00') ENGINE = InnoDB,
 PARTITION `p33` VALUES LESS THAN ('2026-05-04 00:00:00') ENGINE = InnoDB,
 PARTITION `p34` VALUES LESS THAN ('2026-05-05 00:00:00') ENGINE = InnoDB,
 PARTITION `p35` VALUES LESS THAN ('2026-05-06 00:00:00') ENGINE = InnoDB,
 PARTITION `p36` VALUES LESS THAN ('2026-05-07 00:00:00') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-04-01' 0
p1 RANGE COLUMNS `c` '2026-04-02 00:00:00' 0
p2 RANGE COLUMNS `c` '2026-04-03 00:00:00' 0
p3 RANGE COLUMNS `c` '2026-04-04 00:00:00' 0
p4 RANGE COLUMNS `c` '2026-04-05 00:00:00' 0
p5 RANGE COLUMNS `c` '2026-04-06 00:00:00' 0
p6 RANGE COLUMNS `c` '2026-04-07 00:00:00' 0
p7 RANGE COLUMNS `c` '2026-04-08 00:00:00' 0
p8 RANGE COLUMNS `c` '2026-04-09 00:00:00' 0
p9 RANGE COLUMNS `c` '2026-04-10 00:00:00' 0
p10 RANGE COLUMNS `c` '2026-04-11 00:00:00' 0
p11 RANGE COLUMNS `c` '2026-04-12 00:00:00' 0
p12 RANGE COLUMNS `c` '2026-04-13 00:00:00' 0
p13 RANGE COLUMNS `c` '2026-04-14 00:00:00' 0
p14 RANGE COLUMNS `c` '2026-04-15 00:00:00' 0
p15 RANGE COLUMNS `c` '2026-04-16 00:00:00' 0
p16 RANGE COLUMNS `c` '2026-04-17 00:00:00' 0
p17 RANGE COLUMNS `c` '2026-04-18 00:00:00' 0
p18 RANGE COLUMNS `c` '2026-04-19 00:00:00' 0
p19 RANGE COLUMNS `c` '2026-04-20 00:00:00' 0
p20 RANGE COLUMNS `c` '2026-04-21 00:00:00' 0
p21 RANGE COLUMNS `c` '2026-04-22 00:00:00' 0
p22 RANGE COLUMNS `c` '2026-04-23 00:00:00' 0
p23 RANGE COLUMNS `c` '2026-04-24 00:00:00' 0
p24 RANGE COLUMNS `c` '2026-04-25 00:00:00' 0
p25 RANGE COLUMNS `c` '2026-04-26 00:00:00' 0
p26 RANGE COLUMNS `c` '2026-04-27 00:00:00' 0
p27 RANGE COLUMNS `c` '2026-04-28 00:00:00' 0
p28 RANGE COLUMNS `c` '2026-04-29 00:00:00' 0
p29 RANGE COLUMNS `c` '2026-04-30 00:00:00' 0
p30 RANGE COLUMNS `c` '2026-05-01 00:00:00' 0
p31 RANGE COLUMNS `c` '2026-05-02 00:00:00' 0
p32 RANGE COLUMNS `c` '2026-05-03 00:00:00' 0
p33 RANGE COLUMNS `c` '2026-05-04 00:00:00' 0
p34 RANGE COLUMNS `c` '2026-05-05 00:00:00' 0
p35 RANGE COLUMNS `c` '2026-05-06 00:00:00' 0
p36 RANGE COLUMNS `c` '2026-05-07 00:00:00' 0
drop table t1;
select to_days('2026-04-01') = 740072;
to_days('2026-04-01') = 740072
1
select to_days('2026-05-01') = 740102;
to_days('2026-05-01') = 740102
1
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-01')
);
begin;
insert into t1 select from_days(seq) from seq_740073_to_740102;
select * from t1;
c
2026-04-02
2026-04-03
2026-04-04
2026-04-05
2026-04-06
2026-04-07
2026-04-08
2026-04-09
2026-04-10
2026-04-11
2026-04-12
2026-04-13
2026-04-14
2026-04-15
2026-04-16
2026-04-17
2026-04-18
2026-04-19
2026-04-20
2026-04-21
2026-04-22
2026-04-23
2026-04-24
2026-04-25
2026-04-26
2026-04-27
2026-04-28
2026-04-29
2026-04-30
2026-05-01
rollback;
select * from t1;
c
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-01') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-02') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-03') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-04') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-05') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-06') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-07') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-08') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-09') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-10') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-11') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-04-12') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-04-13') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-04-14') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-04-15') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-04-16') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-04-17') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-04-18') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-04-19') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p22` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p23` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p24` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p25` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p26` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p27` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p28` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p29` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p30` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p31` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p32` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p33` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p34` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p35` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p36` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
drop table t1;
# failures
create table t1 (c1 datetime, c2 datetime)
PARTITION BY RANGE COLUMNS (c1, c2)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-01', '2026-04-01')
);
ERROR HY000: Too many fields in 'range interval partition fields'
create table t1 (c datetime)
PARTITION BY LIST COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES IN ('2026-04-01')
);
ERROR HY000: LIST partition type does not support INTERVAL
create table t1 (c int)
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN (740072)
);
ERROR HY000: Field 'c' is of a not allowed type for this type of partitioning
# timestamp
create table t1 (c timestamp) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 hour
(
PARTITION p0 VALUES LESS THAN ('2026-05-04 12:34:56.789')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 HOUR
(PARTITION `p0` VALUES LESS THAN ('2026-05-04 12:34:56.789') ENGINE = InnoDB)
insert into t1 values ('2026-05-05 10:00:00.123456');
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 HOUR
(PARTITION `p0` VALUES LESS THAN ('2026-05-04 12:34:56.789') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-05-04 13:34:56.789') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-05-04 14:34:56.789') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-05-04 15:34:56.789') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-05-04 16:34:56.789') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-05-04 17:34:56.789') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-05-04 18:34:56.789') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-05-04 19:34:56.789') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-05-04 20:34:56.789') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-05-04 21:34:56.789') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-05-04 22:34:56.789') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-04 23:34:56.789') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-05 00:34:56.789') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-05 01:34:56.789') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-05 02:34:56.789') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05 03:34:56.789') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-05 04:34:56.789') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-05 05:34:56.789') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-05-05 06:34:56.789') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-05-05 07:34:56.789') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-05-05 08:34:56.789') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-05-05 09:34:56.789') ENGINE = InnoDB,
 PARTITION `p22` VALUES LESS THAN ('2026-05-05 10:34:56.789') ENGINE = InnoDB,
 PARTITION `p23` VALUES LESS THAN ('2026-05-05 11:34:56.789') ENGINE = InnoDB,
 PARTITION `p24` VALUES LESS THAN ('2026-05-05 12:34:56.789') ENGINE = InnoDB,
 PARTITION `p25` VALUES LESS THAN ('2026-05-05 13:34:56.789') ENGINE = InnoDB,
 PARTITION `p26` VALUES LESS THAN ('2026-05-05 14:34:56.789') ENGINE = InnoDB,
 PARTITION `p27` VALUES LESS THAN ('2026-05-05 15:34:56.789') ENGINE = InnoDB,
 PARTITION `p28` VALUES LESS THAN ('2026-05-05 16:34:56.789') ENGINE = InnoDB,
 PARTITION `p29` VALUES LESS THAN ('2026-05-05 17:34:56.789') ENGINE = InnoDB,
 PARTITION `p30` VALUES LESS THAN ('2026-05-05 18:34:56.789') ENGINE = InnoDB,
 PARTITION `p31` VALUES LESS THAN ('2026-05-05 19:34:56.789') ENGINE = InnoDB,
 PARTITION `p32` VALUES LESS THAN ('2026-05-05 20:34:56.789') ENGINE = InnoDB,
 PARTITION `p33` VALUES LESS THAN ('2026-05-05 21:34:56.789') ENGINE = InnoDB,
 PARTITION `p34` VALUES LESS THAN ('2026-05-05 22:34:56.789') ENGINE = InnoDB,
 PARTITION `p35` VALUES LESS THAN ('2026-05-05 23:34:56.789') ENGINE = InnoDB,
 PARTITION `p36` VALUES LESS THAN ('2026-05-06 00:34:56.789') ENGINE = InnoDB)
select partition_name, partition_method, partition_expression, partition_description, table_rows from information_schema.partitions where table_name='t1';
partition_name partition_method partition_expression partition_description table_rows
p0 RANGE COLUMNS `c` '2026-05-04 12:34:56.789' 0
p1 RANGE COLUMNS `c` '2026-05-04 13:34:56.789' 0
p2 RANGE COLUMNS `c` '2026-05-04 14:34:56.789' 0
p3 RANGE COLUMNS `c` '2026-05-04 15:34:56.789' 0
p4 RANGE COLUMNS `c` '2026-05-04 16:34:56.789' 0
p5 RANGE COLUMNS `c` '2026-05-04 17:34:56.789' 0
p6 RANGE COLUMNS `c` '2026-05-04 18:34:56.789' 0
p7 RANGE COLUMNS `c` '2026-05-04 19:34:56.789' 0
p8 RANGE COLUMNS `c` '2026-05-04 20:34:56.789' 0
p9 RANGE COLUMNS `c` '2026-05-04 21:34:56.789' 0
p10 RANGE COLUMNS `c` '2026-05-04 22:34:56.789' 0
p11 RANGE COLUMNS `c` '2026-05-04 23:34:56.789' 0
p12 RANGE COLUMNS `c` '2026-05-05 00:34:56.789' 0
p13 RANGE COLUMNS `c` '2026-05-05 01:34:56.789' 0
p14 RANGE COLUMNS `c` '2026-05-05 02:34:56.789' 0
p15 RANGE COLUMNS `c` '2026-05-05 03:34:56.789' 0
p16 RANGE COLUMNS `c` '2026-05-05 04:34:56.789' 0
p17 RANGE COLUMNS `c` '2026-05-05 05:34:56.789' 0
p18 RANGE COLUMNS `c` '2026-05-05 06:34:56.789' 0
p19 RANGE COLUMNS `c` '2026-05-05 07:34:56.789' 0
p20 RANGE COLUMNS `c` '2026-05-05 08:34:56.789' 0
p21 RANGE COLUMNS `c` '2026-05-05 09:34:56.789' 0
p22 RANGE COLUMNS `c` '2026-05-05 10:34:56.789' 1
p23 RANGE COLUMNS `c` '2026-05-05 11:34:56.789' 0
p24 RANGE COLUMNS `c` '2026-05-05 12:34:56.789' 0
p25 RANGE COLUMNS `c` '2026-05-05 13:34:56.789' 0
p26 RANGE COLUMNS `c` '2026-05-05 14:34:56.789' 0
p27 RANGE COLUMNS `c` '2026-05-05 15:34:56.789' 0
p28 RANGE COLUMNS `c` '2026-05-05 16:34:56.789' 0
p29 RANGE COLUMNS `c` '2026-05-05 17:34:56.789' 0
p30 RANGE COLUMNS `c` '2026-05-05 18:34:56.789' 0
p31 RANGE COLUMNS `c` '2026-05-05 19:34:56.789' 0
p32 RANGE COLUMNS `c` '2026-05-05 20:34:56.789' 0
p33 RANGE COLUMNS `c` '2026-05-05 21:34:56.789' 0
p34 RANGE COLUMNS `c` '2026-05-05 22:34:56.789' 0
p35 RANGE COLUMNS `c` '2026-05-05 23:34:56.789' 0
p36 RANGE COLUMNS `c` '2026-05-06 00:34:56.789' 0
drop table t1;
# year is not allowed in range column partitioning
create table t1 (c year) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 minute
(
PARTITION p0 VALUES LESS THAN ('2025')
);
ERROR HY000: Field 'c' is of a not allowed type for this type of partitioning
# interval less than a day for date column
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL '23.59.59' HOUR_SECOND
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
ERROR HY000: RANGE COLUMN partition by a DATE with INTERVAL smaller than date
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL '23.59.60' HOUR_SECOND
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
drop table t1;
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL '24.00.00' HOUR_SECOND
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
drop table t1;
# bad interval values
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL -1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'INTERVAL'
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 0 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'INTERVAL'
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL (NUMTODSINTERVAL(0, 'DAY'))
(
PARTITION p0 VALUES LESS THAN ('2026-04-30')
);
ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'INTERVAL'
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1.1 SECOND_MICROSECOND
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'INTERVAL'
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p1 VALUES LESS THAN ('2026-04-01'),
PARTITION p0 VALUES LESS THAN MAXVALUE
);
ERROR HY000: MAXVALUE is not allowed in range partitioning with interval
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day;
ERROR HY000: For RANGE partitions each partition must be defined
create table t1 (c datetime) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Second
(
PARTITION p1 VALUES LESS THAN ('2026-04-01')
);
insert into t1 values ('2026-01-01');
ERROR HY000: Too many partitions (including subpartitions) were defined
drop table t1;
# MDEV-39807 Auto creating partition out of range
SET timestamp=UNIX_TIMESTAMP('2026-05-02 00:00:00');
CREATE TABLE t1 (c DATETIME) ENGINE=InnoDB
PARTITION BY RANGE COLUMNS (c)
INTERVAL 999999999 DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
INSERT INTO t1 VALUES ('2026-05-01');
ERROR 22003: partition range value is out of range in 'INTERVAL'
DROP TABLE t1;
## DATE has an extra check for finer time, make sure no
## overflow happens there
create table t1 (c date)
PARTITION BY RANGE COLUMNS (c)
INTERVAL 18446744073709551615 HOUR
(
PARTITION p0 VALUES LESS THAN ('2026-04-25')
);
INSERT INTO t1 VALUES ('2026-05-01');
ERROR 22003: partition range value is out of range in 'INTERVAL'
DROP TABLE t1;
create table NUMTODSINTERVAL(NUMTODSINTERVAL int);
drop table NUMTODSINTERVAL;
#
# MDEV-40048 Prelocking with range interval auto partitioning
#
# Trigger / PRELOCK_ROUTINE
create table t1 (c date)
partition by range columns (c) interval 1 day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
create table t2 (x int);
create trigger tr after delete on t2 for each row
insert into t1 values (now());
insert into t2 values (2),(3);
delete from t2;
select * from t1;
c
2026-05-02
2026-05-02
drop table t1, t2;
# Trigger + LOCK TABLES + SP / PS
set timestamp= unix_timestamp('2026-04-25 00:00:00');
create table t1 (c date)
partition by range columns (c) interval 1 day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
insert into t1 values ('2026-04-25');
create table t2 (x int);
insert into t2 values (1),(2),(3),(4),(5),(6);
create trigger tr after delete on t2 for each row
insert into t1 values (now());
create procedure sp() delete from t2 where x < 4;
prepare ps from 'delete from t2 where x > 3';
lock tables t1 write, t2 write;
set timestamp= unix_timestamp('2026-05-02 00:00:00');
call sp;
call sp;
set timestamp= unix_timestamp('2026-05-06 00:00:00');
execute ps;
execute ps;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = MyISAM,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = MyISAM,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = MyISAM,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = MyISAM,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = MyISAM,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = MyISAM,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = MyISAM,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = MyISAM,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = MyISAM,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = MyISAM,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = MyISAM,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = MyISAM,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = MyISAM,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = MyISAM,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = MyISAM,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = MyISAM,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = MyISAM,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = MyISAM)
unlock tables;
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = MyISAM,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = MyISAM,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = MyISAM,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = MyISAM,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = MyISAM,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = MyISAM,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = MyISAM,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = MyISAM,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = MyISAM,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = MyISAM,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = MyISAM,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = MyISAM,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = MyISAM,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = MyISAM,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = MyISAM,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = MyISAM,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = MyISAM,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = MyISAM)
select * from t1;
c
2026-04-25
2026-05-02
2026-05-02
2026-05-02
2026-05-06
2026-05-06
2026-05-06
drop table t1, t2;
drop prepare ps;
drop procedure sp;
# Auto-create failed error
set timestamp= unix_timestamp('2026-05-02 00:00:00');
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
call mtr.add_suppression("Error number .*(File exists|file operation)");
call mtr.add_suppression("InnoDB: The file '.*test/t1#P#p1\\.ibd' already exists");
insert into t1 values ('2026-04-22');
ERROR HY000: Got error 184 "Tablespace already exists" from storage engine InnoDB
show warnings;
Level Code Message
Error 1030 Got error 184 "Tablespace already exists" from storage engine InnoDB
Warning 4268 Range partition table %s.%s: adding INTERVAL partition(s) failed
drop table t1;
# LOCK TABLE
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
lock tables t1 write;
insert into t1 values ('2026-04-25');
set timestamp= unix_timestamp('2026-05-06 00:00:00');
update t1 set c= date_add(c, interval 10 day);
unlock tables;
select * from t1;
c
2026-05-05
drop table t1;
# LOCK TABLES + VIEW
set timestamp= unix_timestamp('2026-04-25 00:00:00');
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
create view v1 as select * from t1;
insert into t1 values ('2026-04-22');
set timestamp= unix_timestamp('2026-05-02 00:00:00');
update v1 set c= date_add(c, interval 10 day);
select * from t1;
c
2026-05-02
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB)
set timestamp= unix_timestamp('2026-05-06 00:00:00');
lock tables v1 write;
update v1 set c= date_add(c, interval 3 day);
select * from t1;
c
2026-05-05
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
unlock tables;
drop view v1;
drop tables t1;
# LOCK TABLES + PS / SP
set timestamp= unix_timestamp('2026-04-25 00:00:00');
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
insert into t1 values ('2026-04-25');
set timestamp= unix_timestamp('2026-04-28 01:00:00');
execute immediate 'update t1 set c = date_add(c, interval 3 day)';
select * from t1;
c
2026-04-28
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB)
prepare s from 'update t1 set c= date_add(c, interval 2 day)';
set timestamp= unix_timestamp('2026-04-30 02:00:00');
execute s;
set timestamp= unix_timestamp('2026-05-02 02:00:00');
execute s;
select * from t1;
c
2026-05-02
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB)
set timestamp= unix_timestamp('2026-05-06 03:00:00');
lock tables t1 write;
execute s;
execute s;
select * from t1;
c
2026-05-06
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB)
unlock tables;
drop prepare s;
create procedure sp() update t1 set c= date_add(c, interval 1 day);
set timestamp= unix_timestamp('2026-05-08 04:00:00');
call sp;
call sp;
select * from t1;
c
2026-05-08
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-05-08') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-05-09') ENGINE = InnoDB)
set timestamp= unix_timestamp('2026-05-09 05:00:00');
lock tables t1 write;
call sp;
set timestamp= unix_timestamp('2026-05-10 05:00:00');
call sp;
select * from t1;
c
2026-05-10
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB,
 PARTITION `p7` VALUES LESS THAN ('2026-04-27') ENGINE = InnoDB,
 PARTITION `p8` VALUES LESS THAN ('2026-04-28') ENGINE = InnoDB,
 PARTITION `p9` VALUES LESS THAN ('2026-04-29') ENGINE = InnoDB,
 PARTITION `p10` VALUES LESS THAN ('2026-04-30') ENGINE = InnoDB,
 PARTITION `p11` VALUES LESS THAN ('2026-05-01') ENGINE = InnoDB,
 PARTITION `p12` VALUES LESS THAN ('2026-05-02') ENGINE = InnoDB,
 PARTITION `p13` VALUES LESS THAN ('2026-05-03') ENGINE = InnoDB,
 PARTITION `p14` VALUES LESS THAN ('2026-05-04') ENGINE = InnoDB,
 PARTITION `p15` VALUES LESS THAN ('2026-05-05') ENGINE = InnoDB,
 PARTITION `p16` VALUES LESS THAN ('2026-05-06') ENGINE = InnoDB,
 PARTITION `p17` VALUES LESS THAN ('2026-05-07') ENGINE = InnoDB,
 PARTITION `p18` VALUES LESS THAN ('2026-05-08') ENGINE = InnoDB,
 PARTITION `p19` VALUES LESS THAN ('2026-05-09') ENGINE = InnoDB,
 PARTITION `p20` VALUES LESS THAN ('2026-05-10') ENGINE = InnoDB,
 PARTITION `p21` VALUES LESS THAN ('2026-05-11') ENGINE = InnoDB)
unlock tables;
drop procedure sp;
drop table t1;
# create function
set timestamp= unix_timestamp('2026-04-25 00:00:00');
create table t1 (c date, d int) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
create table t2 (c int key, d int);
insert into t2 values (42, 24);
create function f(n int) returns int
begin
insert into t1 values(now(), 123);
return (select d from t2 where c=n);
end|
select * from t2 where d = f(42);
c d
42 24
select * from t1;
c d
2026-04-25 123
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL,
  `d` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = InnoDB,
 PARTITION `p2` VALUES LESS THAN ('2026-04-22') ENGINE = InnoDB,
 PARTITION `p3` VALUES LESS THAN ('2026-04-23') ENGINE = InnoDB,
 PARTITION `p4` VALUES LESS THAN ('2026-04-24') ENGINE = InnoDB,
 PARTITION `p5` VALUES LESS THAN ('2026-04-25') ENGINE = InnoDB,
 PARTITION `p6` VALUES LESS THAN ('2026-04-26') ENGINE = InnoDB)
DROP TABLE t1, t2;
drop function f;
# update one table while reading an auto-partitioned table
set timestamp= unix_timestamp('2026-04-20 00:00:00');
create table t1 (c date);
insert into t1 values ('2026-04-20');
create table t2 (d date)
PARTITION BY RANGE COLUMNS (d)
INTERVAL 1 Day
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
insert into t2 select c from t1;
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
  `d` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`d`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = MyISAM,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = MyISAM)
set timestamp= unix_timestamp('2026-04-25 00:00:00');
update t1 set c = date_add(c, interval 1 day) where c = (select max(d) from t2);
show create table t2;
Table Create Table
t2 CREATE TABLE `t2` (
  `d` date DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`d`) INTERVAL 1 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = MyISAM,
 PARTITION `p1` VALUES LESS THAN ('2026-04-21') ENGINE = MyISAM)
DROP TABLE t1, t2;
#
# MDEV-40088 Assertion `fixed()' failed with INTERVAL (SELECT 1) DAY
#
# Existing error should remain the same
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
(
PARTITION p0 VALUES LESS THAN ((select '2026-04-20'))
);
ERROR HY000: This partition function is not allowed
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL (SELECT 1) DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
ERROR 42000: INTERVAL does not support subqueries or stored functions
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL (1 + 2 + 3) DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
show create table t1;
Table Create Table
t1 CREATE TABLE `t1` (
  `c` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_uca1400_ai_ci
 PARTITION BY RANGE  COLUMNS(`c`) INTERVAL 6 DAY
(PARTITION `p0` VALUES LESS THAN ('2026-04-20') ENGINE = InnoDB)
drop table t1;
# Existing error should remain the same, even if subqueries are
# banned for INTERVAL
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL 1 DAY
(
PARTITION p0 VALUES LESS THAN ((select '2026-04-20'))
);
ERROR HY000: This partition function is not allowed
create table t1 (c date) engine=innodb
PARTITION BY RANGE COLUMNS (c)
INTERVAL "hello" DAY
(
PARTITION p0 VALUES LESS THAN ('2026-04-20')
);
ERROR HY000: Wrong parameters for partitioned `t1`: wrong value for 'INTERVAL'

Messung V0.5 in Prozent
C=84 H=100 G=92

¤ Dauer der Verarbeitung: 0.35 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.