Skip to content

Commit a5df6d5

Browse files
committed
ddl: Fixed partition interval from DayMinute to just Minute. (pingcap#57738)
close pingcap#57698
1 parent 2f9739a commit a5df6d5

File tree

3 files changed

+51
-1
lines changed

3 files changed

+51
-1
lines changed

pkg/ddl/partition.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1046,7 +1046,7 @@ func generatePartitionDefinitionsFromInterval(ctx expression.BuildContext, partO
10461046
return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("INTERVAL partitioning, currently requires FIRST and LAST partitions to be defined")
10471047
}
10481048
switch partOptions.Interval.IntervalExpr.TimeUnit {
1049-
case ast.TimeUnitInvalid, ast.TimeUnitYear, ast.TimeUnitQuarter, ast.TimeUnitMonth, ast.TimeUnitWeek, ast.TimeUnitDay, ast.TimeUnitHour, ast.TimeUnitDayMinute, ast.TimeUnitSecond:
1049+
case ast.TimeUnitInvalid, ast.TimeUnitYear, ast.TimeUnitQuarter, ast.TimeUnitMonth, ast.TimeUnitWeek, ast.TimeUnitDay, ast.TimeUnitHour, ast.TimeUnitMinute, ast.TimeUnitSecond:
10501050
default:
10511051
return dbterror.ErrGeneralUnsupportedDDL.GenWithStackByArgs("INTERVAL partitioning, only supports YEAR, QUARTER, MONTH, WEEK, DAY, HOUR, MINUTE and SECOND as time unit")
10521052
}

tests/integrationtest/r/ddl/partition.result

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,3 +401,45 @@ ALTER TABLE tp1 PARTITION BY RANGE (id) (PARTITION `P_LT_200` VALUES LESS THAN (
401401
PARTITION `P_LT_500` VALUES LESS THAN (500),
402402
PARTITION `P_LT_600` VALUES LESS THAN (600));
403403
drop table tp1;
404+
DROP TABLE IF EXISTS t;
405+
CREATE TABLE t (a int NOT NULL, b varchar(20) NOT NULL, c datetime NOT NULL ) PARTITION BY RANGE COLUMNS (c) INTERVAL (1 MINUTE) FIRST PARTITION LESS THAN ('2024-01-01') LAST PARTITION LESS THAN ('2024-01-01 00:10:00');
406+
SHOW CREATE TABLE t;
407+
Table Create Table
408+
t CREATE TABLE `t` (
409+
`a` int NOT NULL,
410+
`b` varchar(20) NOT NULL,
411+
`c` datetime NOT NULL
412+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
413+
PARTITION BY RANGE COLUMNS(`c`)
414+
(PARTITION `P_LT_2024-01-01 00:00:00` VALUES LESS THAN ('2024-01-01 00:00:00'),
415+
PARTITION `P_LT_2024-01-01 00:01:00` VALUES LESS THAN ('2024-01-01 00:01:00'),
416+
PARTITION `P_LT_2024-01-01 00:02:00` VALUES LESS THAN ('2024-01-01 00:02:00'),
417+
PARTITION `P_LT_2024-01-01 00:03:00` VALUES LESS THAN ('2024-01-01 00:03:00'),
418+
PARTITION `P_LT_2024-01-01 00:04:00` VALUES LESS THAN ('2024-01-01 00:04:00'),
419+
PARTITION `P_LT_2024-01-01 00:05:00` VALUES LESS THAN ('2024-01-01 00:05:00'),
420+
PARTITION `P_LT_2024-01-01 00:06:00` VALUES LESS THAN ('2024-01-01 00:06:00'),
421+
PARTITION `P_LT_2024-01-01 00:07:00` VALUES LESS THAN ('2024-01-01 00:07:00'),
422+
PARTITION `P_LT_2024-01-01 00:08:00` VALUES LESS THAN ('2024-01-01 00:08:00'),
423+
PARTITION `P_LT_2024-01-01 00:09:00` VALUES LESS THAN ('2024-01-01 00:09:00'),
424+
PARTITION `P_LT_2024-01-01 00:10:00` VALUES LESS THAN ('2024-01-01 00:10:00'))
425+
ALTER TABLE t FIRST PARTITION LESS THAN ('2024-01-01 00:02:00');
426+
ALTER TABLE t LAST PARTITION LESS THAN ('2024-01-01 00:12:00');
427+
SHOW CREATE TABLE t;
428+
Table Create Table
429+
t CREATE TABLE `t` (
430+
`a` int NOT NULL,
431+
`b` varchar(20) NOT NULL,
432+
`c` datetime NOT NULL
433+
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
434+
PARTITION BY RANGE COLUMNS(`c`)
435+
(PARTITION `P_LT_2024-01-01 00:02:00` VALUES LESS THAN ('2024-01-01 00:02:00'),
436+
PARTITION `P_LT_2024-01-01 00:03:00` VALUES LESS THAN ('2024-01-01 00:03:00'),
437+
PARTITION `P_LT_2024-01-01 00:04:00` VALUES LESS THAN ('2024-01-01 00:04:00'),
438+
PARTITION `P_LT_2024-01-01 00:05:00` VALUES LESS THAN ('2024-01-01 00:05:00'),
439+
PARTITION `P_LT_2024-01-01 00:06:00` VALUES LESS THAN ('2024-01-01 00:06:00'),
440+
PARTITION `P_LT_2024-01-01 00:07:00` VALUES LESS THAN ('2024-01-01 00:07:00'),
441+
PARTITION `P_LT_2024-01-01 00:08:00` VALUES LESS THAN ('2024-01-01 00:08:00'),
442+
PARTITION `P_LT_2024-01-01 00:09:00` VALUES LESS THAN ('2024-01-01 00:09:00'),
443+
PARTITION `P_LT_2024-01-01 00:10:00` VALUES LESS THAN ('2024-01-01 00:10:00'),
444+
PARTITION `P_LT_2024-01-01 00:11:00` VALUES LESS THAN ('2024-01-01 00:11:00'),
445+
PARTITION `P_LT_2024-01-01 00:12:00` VALUES LESS THAN ('2024-01-01 00:12:00'))

tests/integrationtest/t/ddl/partition.test

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,3 +198,11 @@ create table tp1(id int);
198198
ALTER TABLE tp1 PARTITION BY RANGE (id) INTERVAL (100) FIRST PARTITION LESS THAN (200) LAST PARTITION LESS THAN (600);
199199
select QUERY from information_schema.ddl_jobs limit 1;
200200
drop table tp1;
201+
202+
# Minute interval partitioning, #57698
203+
DROP TABLE IF EXISTS t;
204+
CREATE TABLE t (a int NOT NULL, b varchar(20) NOT NULL, c datetime NOT NULL ) PARTITION BY RANGE COLUMNS (c) INTERVAL (1 MINUTE) FIRST PARTITION LESS THAN ('2024-01-01') LAST PARTITION LESS THAN ('2024-01-01 00:10:00');
205+
SHOW CREATE TABLE t;
206+
ALTER TABLE t FIRST PARTITION LESS THAN ('2024-01-01 00:02:00');
207+
ALTER TABLE t LAST PARTITION LESS THAN ('2024-01-01 00:12:00');
208+
SHOW CREATE TABLE t;

0 commit comments

Comments
 (0)