diff options
author | Alexander Korotkov | 2019-10-21 20:04:14 +0000 |
---|---|---|
committer | Alexander Korotkov | 2019-10-21 20:07:07 +0000 |
commit | 52ad1e659967896ed153185328ffe806d69abcb6 (patch) | |
tree | 03ab5a5db0c8bac802160dcf538a38a4025f92c9 /src/include | |
parent | a6888fde7f0dbe865559b31ba2ce01ac1150debe (diff) |
Refactor jsonpath's compareDatetime()
This commit refactors come ridiculous coding in compareDatetime(). Also, it
provides correct cross-datatype comparison even when one of values overflows
during cast. That eliminates dilemma on whether we should suppress overflow
errors during cast.
Reported-by: Tom Lane
Discussion: https://postgr.es/m/32308.1569455803%40sss.pgh.pa.us
Discussion: https://postgr.es/m/a5629d0c-8162-7559-16aa-0c8390d6ba5f%40postgrespro.ru
Author: Nikita Glukhov, Alexander Korotkov
Diffstat (limited to 'src/include')
-rw-r--r-- | src/include/utils/date.h | 4 | ||||
-rw-r--r-- | src/include/utils/timestamp.h | 4 |
2 files changed, 4 insertions, 4 deletions
diff --git a/src/include/utils/date.h b/src/include/utils/date.h index c29f13aaf04..7352b1f4fec 100644 --- a/src/include/utils/date.h +++ b/src/include/utils/date.h @@ -70,8 +70,8 @@ typedef struct /* date.c */ extern int32 anytime_typmod_check(bool istz, int32 typmod); extern double date2timestamp_no_overflow(DateADT dateVal); -extern Timestamp date2timestamp_opt_error(DateADT dateVal, bool *have_error); -extern TimestampTz date2timestamptz_opt_error(DateADT dateVal, bool *have_error); +extern Timestamp date2timestamp_opt_overflow(DateADT dateVal, int *overflow); +extern TimestampTz date2timestamptz_opt_overflow(DateADT dateVal, int *overflow); extern void EncodeSpecialDate(DateADT dt, char *str); extern DateADT GetSQLCurrentDate(void); extern TimeTzADT *GetSQLCurrentTime(int32 typmod); diff --git a/src/include/utils/timestamp.h b/src/include/utils/timestamp.h index e884d4405f5..7652b41eaec 100644 --- a/src/include/utils/timestamp.h +++ b/src/include/utils/timestamp.h @@ -97,8 +97,8 @@ extern int timestamp_cmp_internal(Timestamp dt1, Timestamp dt2); /* timestamp comparison works for timestamptz also */ #define timestamptz_cmp_internal(dt1,dt2) timestamp_cmp_internal(dt1, dt2) -extern TimestampTz timestamp2timestamptz_opt_error(Timestamp timestamp, - bool *have_error); +extern TimestampTz timestamp2timestamptz_opt_overflow(Timestamp timestamp, + int *overflow); extern int isoweek2j(int year, int week); extern void isoweek2date(int woy, int *year, int *mon, int *mday); |