diff --git a/src/common/backend/parser/parse_utilcmd.cpp b/src/common/backend/parser/parse_utilcmd.cpp index 14ee9a447f32b561eaad67268b336c15ac1451be..b9cae1919f76b3336f13cbb361cd162dba585467 100644 --- a/src/common/backend/parser/parse_utilcmd.cpp +++ b/src/common/backend/parser/parse_utilcmd.cpp @@ -4199,7 +4199,8 @@ void checkPartitionSynax(CreateStmt* stmt) errmsg("Range partitioned table with INTERVAL clause has more than one column"), errhint("Only support one partition key for interval partition"))); } - if (!IsA(stmt->partTableState->intervalPartDef->partInterval, A_Const)) { + if (!IsA(stmt->partTableState->intervalPartDef->partInterval, A_Const) || + ((A_Const*)stmt->partTableState->intervalPartDef->partInterval)->val.type != T_String) { ereport(ERROR, (errcode(ERRCODE_INVALID_DATETIME_FORMAT), // errmsg("invalid input syntax for type %s: \"%s\"", datatype, str))); diff --git a/src/test/regress/expected/hw_partition_interval_check_syntax.out b/src/test/regress/expected/hw_partition_interval_check_syntax.out new file mode 100644 index 0000000000000000000000000000000000000000..ee0080b4ab2e1352a79c3f47736873136a40e348 --- /dev/null +++ b/src/test/regress/expected/hw_partition_interval_check_syntax.out @@ -0,0 +1,24 @@ +create table partiton_table_001( +COL_1 bigint, +COL_2 TIMESTAMP WITHOUT TIME ZONE, +COL_3 bool, +COL_4 decimal +) +PARTITION BY RANGE (COL_4) +INTERVAL (10000) +( +PARTITION partiton_table_001_p1 VALUES LESS THAN (1000) +); +ERROR: invalid input syntax for type interval +create table partiton_table_001( +COL_1 bigint, +COL_2 TIMESTAMP WITHOUT TIME ZONE, +COL_3 bool, +COL_4 decimal +) +PARTITION BY RANGE (COL_2) +INTERVAL ('2018-1-1') +( +PARTITION partiton_table_001_p1 VALUES LESS THAN ('2020-03-01') +); +ERROR: invalid input syntax for type interval: "2018-1-1" diff --git a/src/test/regress/parallel_schedule18 b/src/test/regress/parallel_schedule18 index acc596dfb31070fedd1a2914e00a99bd19911d75..d26cd6bde270b5d36eb363ad4d4955950f404bdd 100644 --- a/src/test/regress/parallel_schedule18 +++ b/src/test/regress/parallel_schedule18 @@ -17,6 +17,7 @@ test: hw_partition_interval_parallel_prepare test: hw_partition_interval_parallel_insert hw_partition_interval_parallel_insert_01 hw_partition_interval_parallel_insert_02 test: hw_partition_interval_parallel_end test: hw_partition_interval_select +test: hw_partition_interval_check_syntax #test: hw_partition_lock #test: hw_partition_llt # FIXME: move me back to the parallel test when the refcnt issue is fixed diff --git a/src/test/regress/sql/hw_partition_interval_check_syntax.sql b/src/test/regress/sql/hw_partition_interval_check_syntax.sql new file mode 100644 index 0000000000000000000000000000000000000000..5b054545f2449bf84c50e687eac0da9445837546 --- /dev/null +++ b/src/test/regress/sql/hw_partition_interval_check_syntax.sql @@ -0,0 +1,23 @@ +create table partiton_table_001( +COL_1 bigint, +COL_2 TIMESTAMP WITHOUT TIME ZONE, +COL_3 bool, +COL_4 decimal +) +PARTITION BY RANGE (COL_4) +INTERVAL (10000) +( +PARTITION partiton_table_001_p1 VALUES LESS THAN (1000) +); + +create table partiton_table_001( +COL_1 bigint, +COL_2 TIMESTAMP WITHOUT TIME ZONE, +COL_3 bool, +COL_4 decimal +) +PARTITION BY RANGE (COL_2) +INTERVAL ('2018-1-1') +( +PARTITION partiton_table_001_p1 VALUES LESS THAN ('2020-03-01') +);