定时任务兼容M*时间单位

This commit is contained in:
nancy_w
2023-05-27 16:54:28 +08:00
parent 46d3c969dd
commit cc316739ba
6 changed files with 163 additions and 15 deletions

View File

@ -28,7 +28,7 @@ schedule_expr: {
interval_expr: interval_expr:
quantity {YEAR | MONTH | DAY | HOUR | MINUTE | quantity {YEAR | MONTH | DAY | HOUR | MINUTE |
SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY TO SECOND | HOUR TO MINUTE | HOUR TO SECOND | MINUTE TO SECOND} DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
</synopsis> </synopsis>
</refsynopsisdiv> </refsynopsisdiv>
</refentry> </refentry>

View File

@ -570,7 +570,7 @@ static void setDelimiterName(core_yyscan_t yyscanner, char*input, VariableSetStm
%type <list> extract_list timestamp_arg_list overlay_list position_list %type <list> extract_list timestamp_arg_list overlay_list position_list
%type <list> substr_list trim_list %type <list> substr_list trim_list
%type <list> opt_interval interval_second %type <list> opt_interval interval_second event_interval_unit opt_evtime_unit
%type <node> overlay_placing substr_from substr_for %type <node> overlay_placing substr_from substr_for
%type <boolean> opt_instead opt_incremental %type <boolean> opt_instead opt_incremental
@ -864,7 +864,7 @@ static void setDelimiterName(core_yyscan_t yyscanner, char*input, VariableSetStm
CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE
SHRINK USE_P SHRINK USE_P
DATA_P DATABASE DATAFILE DATANODE DATANODES DATATYPE_CL DATE_P DATE_FORMAT_P DAY_P DBCOMPATIBILITY_P DEALLOCATE DEC DECIMAL_P DECLARE DECODE DEFAULT DEFAULTS DATA_P DATABASE DATAFILE DATANODE DATANODES DATATYPE_CL DATE_P DATE_FORMAT_P DAY_P DAY_HOUR_P DAY_MINUTE_P DAY_SECOND_P DBCOMPATIBILITY_P DEALLOCATE DEC DECIMAL_P DECLARE DECODE DEFAULT DEFAULTS
DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DELTA DELTAMERGE DESC DETERMINISTIC DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DELTA DELTAMERGE DESC DETERMINISTIC
/* PGXC_BEGIN */ /* PGXC_BEGIN */
DICTIONARY DIRECT DIRECTORY DISABLE_P DISCARD DISTINCT DISTRIBUTE DISTRIBUTION DO DOCUMENT_P DOMAIN_P DOUBLE_P DICTIONARY DIRECT DIRECTORY DISABLE_P DISCARD DISTINCT DISTRIBUTE DISTRIBUTION DO DOCUMENT_P DOMAIN_P DOUBLE_P
@ -881,7 +881,7 @@ static void setDelimiterName(core_yyscan_t yyscanner, char*input, VariableSetStm
GENERATED GLOBAL GRANT GRANTED GREATEST GROUP_P GROUPING_P GROUPPARENT GENERATED GLOBAL GRANT GRANTED GREATEST GROUP_P GROUPING_P GROUPPARENT
HANDLER HAVING HDFSDIRECTORY HEADER_P HOLD HOUR_P HANDLER HAVING HDFSDIRECTORY HEADER_P HOLD HOUR_P HOUR_MINUTE_P HOUR_SECOND_P
IDENTIFIED IDENTITY_P IF_P IGNORE IGNORE_EXTRA_DATA ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P INCLUDE IDENTIFIED IDENTITY_P IF_P IGNORE IGNORE_EXTRA_DATA ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P INCLUDE
INCLUDING INCREMENT INCREMENTAL INDEX INDEXES INFILE INHERIT INHERITS INITIAL_P INITIALLY INITRANS INLINE_P INCLUDING INCREMENT INCREMENTAL INDEX INDEXES INFILE INHERIT INHERITS INITIAL_P INITIALLY INITRANS INLINE_P
@ -896,7 +896,7 @@ static void setDelimiterName(core_yyscan_t yyscanner, char*input, VariableSetStm
LABEL LANGUAGE LARGE_P LAST_P LC_COLLATE_P LC_CTYPE_P LEADING LEAKPROOF LINES LABEL LANGUAGE LARGE_P LAST_P LC_COLLATE_P LC_CTYPE_P LEADING LEAKPROOF LINES
LEAST LESS LEFT LEVEL LIKE LIMIT LIST LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LEAST LESS LEFT LEVEL LIKE LIMIT LIST LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP
LOCATION LOCK_P LOCKED LOG_P LOGGING LOGIN_ANY LOGIN_FAILURE LOGIN_SUCCESS LOGOUT LOOP LOCATION LOCK_P LOCKED LOG_P LOGGING LOGIN_ANY LOGIN_FAILURE LOGIN_SUCCESS LOGOUT LOOP
MAPPING MASKING MASTER MATCH MATERIALIZED MATCHED MAXEXTENTS MAXSIZE MAXTRANS MAXVALUE MERGE MINUS_P MINUTE_P MINVALUE MINEXTENTS MODE MODIFY_P MONTH_P MOVE MOVEMENT MAPPING MASKING MASTER MATCH MATERIALIZED MATCHED MAXEXTENTS MAXSIZE MAXTRANS MAXVALUE MERGE MINUS_P MINUTE_P MINUTE_SECOND_P MINVALUE MINEXTENTS MODE MODIFY_P MONTH_P MOVE MOVEMENT
MODEL // DB4AI MODEL // DB4AI
NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NOCOMPRESS NOCYCLE NODE NOLOGGING NOMAXVALUE NOMINVALUE NONE NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NO NOCOMPRESS NOCYCLE NODE NOLOGGING NOMAXVALUE NOMINVALUE NONE
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLCOLS NULLIF NULLS_P NUMBER_P NUMERIC NUMSTR NVARCHAR NVARCHAR2 NVL NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLCOLS NULLIF NULLS_P NUMBER_P NUMERIC NUMSTR NVARCHAR NVARCHAR2 NVL
@ -942,7 +942,7 @@ static void setDelimiterName(core_yyscan_t yyscanner, char*input, VariableSetStm
XML_P XMLATTRIBUTES XMLCONCAT XMLELEMENT XMLEXISTS XMLFOREST XMLPARSE XML_P XMLATTRIBUTES XMLCONCAT XMLELEMENT XMLEXISTS XMLFOREST XMLPARSE
XMLPI XMLROOT XMLSERIALIZE XMLPI XMLROOT XMLSERIALIZE
YEAR_P YES_P YEAR_P YEAR_MONTH_P YES_P
ZONE ZONE
@ -15086,8 +15086,12 @@ user:
ColId { $$ = $1; } ColId { $$ = $1; }
; ;
event_interval_unit: opt_interval {$$ = $1;}
| opt_evtime_unit {$$ = $1;}
;
every_interval: every_interval:
Iconst opt_interval Iconst event_interval_unit
{ {
TypeName *t; TypeName *t;
t = SystemTypeName("interval"); t = SystemTypeName("interval");
@ -15095,7 +15099,7 @@ every_interval:
Node *num = makeIntConst($1, @1); Node *num = makeIntConst($1, @1);
$$ = makeTypeCast(num, t, -1); $$ = makeTypeCast(num, t, -1);
} }
| Sconst opt_interval | Sconst event_interval_unit
{ {
TypeName *t; TypeName *t;
t = SystemTypeName("interval"); t = SystemTypeName("interval");
@ -15103,7 +15107,7 @@ every_interval:
Node *num = makeStringConst($1, @1); Node *num = makeStringConst($1, @1);
$$ = makeTypeCast(num, t, -1); $$ = makeTypeCast(num, t, -1);
} }
| FCONST opt_interval | FCONST event_interval_unit
{ {
TypeName *t; TypeName *t;
t = SystemTypeName("interval"); t = SystemTypeName("interval");
@ -25211,6 +25215,47 @@ opt_timezone:
| /*EMPTY*/ { $$ = FALSE; } | /*EMPTY*/ { $$ = FALSE; }
; ;
opt_evtime_unit:
DAY_HOUR_P
{
$$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) |
INTERVAL_MASK(HOUR), @1));
}
| DAY_MINUTE_P
{
$$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) |
INTERVAL_MASK(HOUR) |
INTERVAL_MASK(MINUTE), @1));
}
| DAY_SECOND_P
{
$$ = list_make1(makeIntConst(INTERVAL_MASK(DAY) |
INTERVAL_MASK(HOUR) |
INTERVAL_MASK(MINUTE) |
INTERVAL_MASK(SECOND), @1));
}
| HOUR_MINUTE_P
{
$$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) |
INTERVAL_MASK(MINUTE), @1));
}
| HOUR_SECOND_P
{
$$ = list_make1(makeIntConst(INTERVAL_MASK(HOUR) |
INTERVAL_MASK(MINUTE) |
INTERVAL_MASK(SECOND), @1));
}
| MINUTE_SECOND_P
{
$$ = list_make1(makeIntConst(INTERVAL_MASK(MINUTE) |
INTERVAL_MASK(SECOND), @1));
}
| YEAR_MONTH_P
{
$$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR) |
INTERVAL_MASK(MONTH), @1));
}
opt_interval: opt_interval:
YEAR_P YEAR_P
{ $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); } { $$ = list_make1(makeIntConst(INTERVAL_MASK(YEAR), @1)); }
@ -28540,7 +28585,10 @@ unreserved_keyword:
| DATANODES | DATANODES
| DATATYPE_CL | DATATYPE_CL
| DATE_FORMAT_P | DATE_FORMAT_P
| DAY_HOUR_P
| DAY_MINUTE_P
| DAY_P | DAY_P
| DAY_SECOND_P
| DBCOMPATIBILITY_P | DBCOMPATIBILITY_P
| DEALLOCATE | DEALLOCATE
| DECLARE | DECLARE
@ -28621,7 +28669,9 @@ unreserved_keyword:
| HANDLER | HANDLER
| HEADER_P | HEADER_P
| HOLD | HOLD
| HOUR_MINUTE_P
| HOUR_P | HOUR_P
| HOUR_SECOND_P
| IDENTIFIED | IDENTIFIED
| IDENTITY_P | IDENTITY_P
| IF_P | IF_P
@ -28691,6 +28741,7 @@ unreserved_keyword:
| MERGE | MERGE
| MINEXTENTS | MINEXTENTS
| MINUTE_P | MINUTE_P
| MINUTE_SECOND_P
| MINVALUE | MINVALUE
| MODE | MODE
| MODEL // DB4AI | MODEL // DB4AI
@ -28918,6 +28969,7 @@ unreserved_keyword:
| WRAPPER | WRAPPER
| WRITE | WRITE
| XML_P | XML_P
| YEAR_MONTH_P
| YEAR_P | YEAR_P
| YES_P | YES_P
| ZONE | ZONE

View File

@ -525,7 +525,7 @@ extern THR_LOCAL bool stmt_contains_operator_plus;
CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE CURRENT_TIME CURRENT_TIMESTAMP CURRENT_USER CURSOR CYCLE
SHRINK USE_P SHRINK USE_P
DATA_P DATABASE DATAFILE DATANODE DATANODES DATATYPE_CL DATE_P DATE_FORMAT_P DAY_P DBCOMPATIBILITY_P DEALLOCATE DEC DECIMAL_P DECLARE DECODE DEFAULT DEFAULTS DATA_P DATABASE DATAFILE DATANODE DATANODES DATATYPE_CL DATE_P DATE_FORMAT_P DAY_P DAY_HOUR_P DAY_MINUTE_P DAY_SECOND_P DBCOMPATIBILITY_P DEALLOCATE DEC DECIMAL_P DECLARE DECODE DEFAULT DEFAULTS
DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DELTA DELTAMERGE DESC DETERMINISTIC DEFERRABLE DEFERRED DEFINER DELETE_P DELIMITER DELIMITERS DELTA DELTAMERGE DESC DETERMINISTIC
/* PGXC_BEGIN */ /* PGXC_BEGIN */
DICTIONARY DIRECT DIRECTORY DISABLE_P DISCARD DISTINCT DISTRIBUTE DISTRIBUTION DO DOCUMENT_P DOMAIN_P DOUBLE_P DICTIONARY DIRECT DIRECTORY DISABLE_P DISCARD DISTINCT DISTRIBUTE DISTRIBUTION DO DOCUMENT_P DOMAIN_P DOUBLE_P
@ -543,7 +543,7 @@ extern THR_LOCAL bool stmt_contains_operator_plus;
GENERATED GLOBAL GRANT GRANTED GREATEST GROUP_P GROUPING_P GROUPPARENT GENERATED GLOBAL GRANT GRANTED GREATEST GROUP_P GROUPING_P GROUPPARENT
HANDLER HAVING HDFSDIRECTORY HEADER_P HOLD HOUR_P HANDLER HAVING HDFSDIRECTORY HEADER_P HOLD HOUR_P HOUR_MINUTE_P HOUR_SECOND_P
IDENTIFIED IDENTITY_P IF_P IGNORE IGNORE_EXTRA_DATA ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P IDENTIFIED IDENTITY_P IF_P IGNORE IGNORE_EXTRA_DATA ILIKE IMMEDIATE IMMUTABLE IMPLICIT_P IN_P
INCLUDE INCLUDING INCREMENT INCREMENTAL INDEX INDEXES INFILE INHERIT INHERITS INITIAL_P INITIALLY INITRANS INLINE_P INCLUDE INCLUDING INCREMENT INCREMENTAL INDEX INDEXES INFILE INHERIT INHERITS INITIAL_P INITIALLY INITRANS INLINE_P
@ -557,7 +557,7 @@ extern THR_LOCAL bool stmt_contains_operator_plus;
LABEL LANGUAGE LARGE_P LAST_P LC_COLLATE_P LC_CTYPE_P LEADING LEAKPROOF LINES LABEL LANGUAGE LARGE_P LAST_P LC_COLLATE_P LC_CTYPE_P LEADING LEAKPROOF LINES
LEAST LESS LEFT LEVEL LIST LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP LEAST LESS LEFT LEVEL LIST LIKE LIMIT LISTEN LOAD LOCAL LOCALTIME LOCALTIMESTAMP
LOCATION LOCK_P LOCKED LOG_P LOGGING LOGIN_ANY LOGIN_SUCCESS LOGIN_FAILURE LOGOUT LOOP LOCATION LOCK_P LOCKED LOG_P LOGGING LOGIN_ANY LOGIN_SUCCESS LOGIN_FAILURE LOGOUT LOOP
MAPPING MASKING MASTER MASTR MATCH MATERIALIZED MATCHED MAXEXTENTS MAXSIZE MAXTRANS MAXVALUE MERGE MINUS_P MINUTE_P MINVALUE MINEXTENTS MODE MODIFY_P MONTH_P MOVE MOVEMENT MAPPING MASKING MASTER MASTR MATCH MATERIALIZED MATCHED MAXEXTENTS MAXSIZE MAXTRANS MAXVALUE MERGE MINUS_P MINUTE_P MINUTE_SECOND_P MINVALUE MINEXTENTS MODE MODIFY_P MONTH_P MOVE MOVEMENT
MODEL // DB4AI MODEL // DB4AI
NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NLSSORT NO NOCOMPRESS NOCYCLE NODE NOLOGGING NOMAXVALUE NOMINVALUE NONE NAME_P NAMES NATIONAL NATURAL NCHAR NEXT NLSSORT NO NOCOMPRESS NOCYCLE NODE NOLOGGING NOMAXVALUE NOMINVALUE NONE
NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLCOLS NULLIF NULLS_P NUMBER_P NUMERIC NUMSTR NVARCHAR NVARCHAR2 NVL NOT NOTHING NOTIFY NOTNULL NOWAIT NULL_P NULLCOLS NULLIF NULLS_P NUMBER_P NUMERIC NUMSTR NVARCHAR NVARCHAR2 NVL
@ -603,7 +603,7 @@ extern THR_LOCAL bool stmt_contains_operator_plus;
XML_P XMLATTRIBUTES XMLCONCAT XMLELEMENT XMLEXISTS XMLFOREST XMLPARSE XML_P XMLATTRIBUTES XMLCONCAT XMLELEMENT XMLEXISTS XMLFOREST XMLPARSE
XMLPI XMLROOT XMLSERIALIZE XMLPI XMLROOT XMLSERIALIZE
YEAR_P YES_P YEAR_P YEAR_MONTH_P YES_P
ZONE ZONE
@ -11687,8 +11687,11 @@ unreserved_keyword:
| DATANODE | DATANODE
| DATANODES | DATANODES
| DATATYPE_CL | DATATYPE_CL
| DAY_P
| DATE_FORMAT_P | DATE_FORMAT_P
| DAY_HOUR_P
| DAY_MINUTE_P
| DAY_P
| DAY_SECOND_P
| DBCOMPATIBILITY_P | DBCOMPATIBILITY_P
| DEALLOCATE | DEALLOCATE
| DECLARE | DECLARE
@ -11761,7 +11764,9 @@ unreserved_keyword:
| HANDLER | HANDLER
| HEADER_P | HEADER_P
| HOLD | HOLD
| HOUR_MINUTE_P
| HOUR_P | HOUR_P
| HOUR_SECOND_P
| IDENTIFIED | IDENTIFIED
| IDENTITY_P | IDENTITY_P
| IF_P | IF_P
@ -11830,6 +11835,7 @@ unreserved_keyword:
| MERGE | MERGE
| MINEXTENTS | MINEXTENTS
| MINUTE_P | MINUTE_P
| MINUTE_SECOND_P
| MINVALUE | MINVALUE
| MODE | MODE
| MODEL // DB4AI | MODEL // DB4AI
@ -12039,6 +12045,7 @@ unreserved_keyword:
| WRAPPER | WRAPPER
| WRITE | WRITE
| XML_P | XML_P
| YEAR_MONTH_P
| YEAR_P | YEAR_P
| YES_P | YES_P
| ZONE | ZONE

View File

@ -171,6 +171,9 @@ PG_KEYWORD("datatype_cl", DATATYPE_CL, UNRESERVED_KEYWORD)
PG_KEYWORD("date", DATE_P, COL_NAME_KEYWORD) PG_KEYWORD("date", DATE_P, COL_NAME_KEYWORD)
PG_KEYWORD("date_format", DATE_FORMAT_P, UNRESERVED_KEYWORD) PG_KEYWORD("date_format", DATE_FORMAT_P, UNRESERVED_KEYWORD)
PG_KEYWORD("day", DAY_P, UNRESERVED_KEYWORD) PG_KEYWORD("day", DAY_P, UNRESERVED_KEYWORD)
PG_KEYWORD("day_hour", DAY_HOUR_P, UNRESERVED_KEYWORD)
PG_KEYWORD("day_minute", DAY_MINUTE_P, UNRESERVED_KEYWORD)
PG_KEYWORD("day_second", DAY_SECOND_P, UNRESERVED_KEYWORD)
PG_KEYWORD("dbcompatibility", DBCOMPATIBILITY_P, UNRESERVED_KEYWORD) PG_KEYWORD("dbcompatibility", DBCOMPATIBILITY_P, UNRESERVED_KEYWORD)
PG_KEYWORD("deallocate", DEALLOCATE, UNRESERVED_KEYWORD) PG_KEYWORD("deallocate", DEALLOCATE, UNRESERVED_KEYWORD)
PG_KEYWORD("dec", DEC, COL_NAME_KEYWORD) PG_KEYWORD("dec", DEC, COL_NAME_KEYWORD)
@ -284,6 +287,8 @@ PG_KEYWORD("hdfsdirectory", HDFSDIRECTORY, TYPE_FUNC_NAME_KEYWORD)
PG_KEYWORD("header", HEADER_P, UNRESERVED_KEYWORD) PG_KEYWORD("header", HEADER_P, UNRESERVED_KEYWORD)
PG_KEYWORD("hold", HOLD, UNRESERVED_KEYWORD) PG_KEYWORD("hold", HOLD, UNRESERVED_KEYWORD)
PG_KEYWORD("hour", HOUR_P, UNRESERVED_KEYWORD) PG_KEYWORD("hour", HOUR_P, UNRESERVED_KEYWORD)
PG_KEYWORD("hour_minute", HOUR_MINUTE_P, UNRESERVED_KEYWORD)
PG_KEYWORD("hour_second", HOUR_SECOND_P, UNRESERVED_KEYWORD)
/* new key-word for ALTER ROLE */ /* new key-word for ALTER ROLE */
PG_KEYWORD("identified", IDENTIFIED, UNRESERVED_KEYWORD) PG_KEYWORD("identified", IDENTIFIED, UNRESERVED_KEYWORD)
PG_KEYWORD("identity", IDENTITY_P, UNRESERVED_KEYWORD) PG_KEYWORD("identity", IDENTITY_P, UNRESERVED_KEYWORD)
@ -376,6 +381,7 @@ PG_KEYWORD("merge", MERGE, UNRESERVED_KEYWORD)
PG_KEYWORD("minextents", MINEXTENTS, UNRESERVED_KEYWORD) PG_KEYWORD("minextents", MINEXTENTS, UNRESERVED_KEYWORD)
PG_KEYWORD("minus", MINUS_P, RESERVED_KEYWORD) PG_KEYWORD("minus", MINUS_P, RESERVED_KEYWORD)
PG_KEYWORD("minute", MINUTE_P, UNRESERVED_KEYWORD) PG_KEYWORD("minute", MINUTE_P, UNRESERVED_KEYWORD)
PG_KEYWORD("minute_second", MINUTE_SECOND_P, UNRESERVED_KEYWORD)
PG_KEYWORD("minvalue", MINVALUE, UNRESERVED_KEYWORD) PG_KEYWORD("minvalue", MINVALUE, UNRESERVED_KEYWORD)
PG_KEYWORD("mode", MODE, UNRESERVED_KEYWORD) PG_KEYWORD("mode", MODE, UNRESERVED_KEYWORD)
PG_KEYWORD("model", MODEL, UNRESERVED_KEYWORD) PG_KEYWORD("model", MODEL, UNRESERVED_KEYWORD)
@ -693,5 +699,6 @@ PG_KEYWORD("xmlpi", XMLPI, COL_NAME_KEYWORD)
PG_KEYWORD("xmlroot", XMLROOT, COL_NAME_KEYWORD) PG_KEYWORD("xmlroot", XMLROOT, COL_NAME_KEYWORD)
PG_KEYWORD("xmlserialize", XMLSERIALIZE, COL_NAME_KEYWORD) PG_KEYWORD("xmlserialize", XMLSERIALIZE, COL_NAME_KEYWORD)
PG_KEYWORD("year", YEAR_P, UNRESERVED_KEYWORD) PG_KEYWORD("year", YEAR_P, UNRESERVED_KEYWORD)
PG_KEYWORD("year_month", YEAR_MONTH_P, UNRESERVED_KEYWORD)
PG_KEYWORD("yes", YES_P, UNRESERVED_KEYWORD) PG_KEYWORD("yes", YES_P, UNRESERVED_KEYWORD)
PG_KEYWORD("zone", ZONE, UNRESERVED_KEYWORD) PG_KEYWORD("zone", ZONE, UNRESERVED_KEYWORD)

View File

@ -413,6 +413,65 @@ select job_name, nspname from pg_job where dbname='event_b';
drop event if exists evtest; drop event if exists evtest;
NOTICE: event "evtest" is not exists, skipping NOTICE: event "evtest" is not exists, skipping
--test time unit
drop event if exists ev_unit;
NOTICE: event "ev_unit" is not exists, skipping
create event ev_unit on schedule every '1-1' YEAR_MONTH do select 1;
select interval from pg_job where job_name='ev_unit';
interval
-------------------------------
interval '1-1' year to month
(1 row)
drop event if exists ev_unit;
create event ev_unit on schedule every '-1 10' DAY_HOUR do select 1;
select interval from pg_job where job_name='ev_unit';
interval
-------------------------------
interval '-1 10' day to hour
(1 row)
drop event if exists ev_unit;
create event ev_unit on schedule every '1 1:00' DAY_MINUTE do select 1;
select interval from pg_job where job_name='ev_unit';
interval
----------------------------------
interval '1 1:00' day to minute
(1 row)
drop event if exists ev_unit;
create event ev_unit on schedule every '1 1:1:1' DAY_SECOND do select 1;
select interval from pg_job where job_name='ev_unit';
interval
-----------------------------------
interval '1 1:1:1' day to second
(1 row)
drop event if exists ev_unit;
create event ev_unit on schedule every '1:1:1' HOUR_MINUTE do select 1;
select interval from pg_job where job_name='ev_unit';
interval
----------------------------------
interval '1:1:1' hour to minute
(1 row)
drop event if exists ev_unit;
create event ev_unit on schedule every '1:1' MINUTE_SECOND do select 1;
select interval from pg_job where job_name='ev_unit';
interval
----------------------------------
interval '1:1' minute to second
(1 row)
drop event if exists ev_unit;
create event ev_unit on schedule every '01:12:30' HOUR_SECOND do select 1;
select interval from pg_job where job_name='ev_unit';
interval
-------------------------------------
interval '01:12:30' hour to second
(1 row)
drop event if exists ev_unit;
--if not exists --if not exists
create event e on schedule every 1 month disable do select 1; create event e on schedule every 1 month disable do select 1;
select pg_sleep(0.2); select pg_sleep(0.2);
@ -907,7 +966,7 @@ schedule_expr: {
interval_expr: interval_expr:
quantity {YEAR | MONTH | DAY | HOUR | MINUTE | quantity {YEAR | MONTH | DAY | HOUR | MINUTE |
SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
DAY TO SECOND | HOUR TO MINUTE | HOUR TO SECOND | MINUTE TO SECOND} DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}
\h ALTER EVENT \h ALTER EVENT
Command: ALTER EVENT Command: ALTER EVENT

View File

@ -119,6 +119,29 @@ create event IF NOT EXISTS evtest on schedule every 1 minute starts sysdate + in
select pg_sleep(0.2); select pg_sleep(0.2);
select job_name, nspname from pg_job where dbname='event_b'; select job_name, nspname from pg_job where dbname='event_b';
drop event if exists evtest; drop event if exists evtest;
--test time unit
drop event if exists ev_unit;
create event ev_unit on schedule every '1-1' YEAR_MONTH do select 1;
select interval from pg_job where job_name='ev_unit';
drop event if exists ev_unit;
create event ev_unit on schedule every '-1 10' DAY_HOUR do select 1;
select interval from pg_job where job_name='ev_unit';
drop event if exists ev_unit;
create event ev_unit on schedule every '1 1:00' DAY_MINUTE do select 1;
select interval from pg_job where job_name='ev_unit';
drop event if exists ev_unit;
create event ev_unit on schedule every '1 1:1:1' DAY_SECOND do select 1;
select interval from pg_job where job_name='ev_unit';
drop event if exists ev_unit;
create event ev_unit on schedule every '1:1:1' HOUR_MINUTE do select 1;
select interval from pg_job where job_name='ev_unit';
drop event if exists ev_unit;
create event ev_unit on schedule every '1:1' MINUTE_SECOND do select 1;
select interval from pg_job where job_name='ev_unit';
drop event if exists ev_unit;
create event ev_unit on schedule every '01:12:30' HOUR_SECOND do select 1;
select interval from pg_job where job_name='ev_unit';
drop event if exists ev_unit;
--if not exists --if not exists