pgsql: Move DTK_ISODOW DTK_DOW and DTK_DOY to be type UNITS rather than

Started by Bruce Momjianover 10 years ago5 messageshackers
Jump to latest
#1Bruce Momjian
bruce@momjian.us

Move DTK_ISODOW DTK_DOW and DTK_DOY to be type UNITS rather than
RESERV. RESERV is meant for tokens like "now" and having them in that
category throws errors like these when used as an input date:

stark=# SELECT 'doy'::timestamptz;
ERROR: unexpected dtype 33 while parsing timestamptz "doy"
LINE 1: SELECT 'doy'::timestamptz;
^
stark=# SELECT 'dow'::timestamptz;
ERROR: unexpected dtype 32 while parsing timestamptz "dow"
LINE 1: SELECT 'dow'::timestamptz;
^

Found by LLVM's Libfuzzer

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/258ee1b635e43a37e901fd5f62bdd5f1087d65a5

Modified Files
--------------
src/backend/utils/adt/datetime.c | 6 +--
src/backend/utils/adt/timestamp.c | 80 ++++++++++++++++++-------------------
2 files changed, 43 insertions(+), 43 deletions(-)

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#1)
Re: pgsql: Move DTK_ISODOW DTK_DOW and DTK_DOY to be type UNITS rather than

Greg Stark <stark@mit.edu> writes:

Move DTK_ISODOW DTK_DOW and DTK_DOY to be type UNITS rather than
RESERV.

Shouldn't that get back-patched? Also, what about ecpg's copy
of the code?

regards, tom lane

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#3Bruce Momjian
bruce@momjian.us
In reply to: Tom Lane (#2)
Re: pgsql: Move DTK_ISODOW DTK_DOW and DTK_DOY to be type UNITS rather than

On Sun, Sep 6, 2015 at 4:02 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Shouldn't that get back-patched?

Indeed. I was trying to work out the git workflow and making a token
effort to test it. I think I've done it now.

Also, what about ecpg's copy of the code?

That I hadn't thought of. Will look at it but it's after 4am here now
so I'll get to it tomorrow.

--
greg

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#4Bruce Momjian
bruce@momjian.us
In reply to: Bruce Momjian (#3)
Re: [COMMITTERS] pgsql: Move DTK_ISODOW DTK_DOW and DTK_DOY to be type UNITS rather than

On Sun, Sep 6, 2015 at 4:14 AM, Greg Stark <stark@mit.edu> wrote:

Also, what about ecpg's copy of the code?

That I hadn't thought of. Will look at it but it's after 4am here now
so I'll get to it tomorrow.

So the only mention of these constants I can find in ECPG is the
structures in dt_common.c. I don't see a any code using it and I'm not
clear what the purpose of having this structure is or the significance
of changing it. Is this sufficient? Is it even necessary?

diff --git a/src/interfaces/ecpg/pgtypeslib/dt_common.c
b/src/interfaces/ecpg/pgtypeslib/dt_common.c
index 7fe2982..01cdfa9 100644
*** a/src/interfaces/ecpg/pgtypeslib/dt_common.c
--- b/src/interfaces/ecpg/pgtypeslib/dt_common.c
***************
*** 123,130 **** static datetkn datetktbl[] = {
  {"dec", MONTH, 12},
  {"december", MONTH, 12},
  {"dnt", TZ, 3600}, /* Dansk Normal Tid */
! {"dow", RESERV, DTK_DOW}, /* day of week */
! {"doy", RESERV, DTK_DOY}, /* day of year */
  {"dst", DTZMOD, SECS_PER_HOUR},
  #if 0
  {"dusst", DTZ, 21600}, /* Dushanbe Summer Time */
--- 123,130 ----
  {"dec", MONTH, 12},
  {"december", MONTH, 12},
  {"dnt", TZ, 3600}, /* Dansk Normal Tid */
! {"dow", UNITS, DTK_DOW}, /* day of week */
! {"doy", UNITS, DTK_DOY}, /* day of year */
  {"dst", DTZMOD, SECS_PER_HOUR},
  #if 0
  {"dusst", DTZ, 21600}, /* Dushanbe Summer Time */
***************
*** 206,212 **** static datetkn datetktbl[] = {
  {"irkst", DTZ, 32400}, /* Irkutsk Summer Time */
  {"irkt", TZ, 28800}, /* Irkutsk Time */
  {"irt", TZ, 12600}, /* Iran Time */
! {"isodow", RESERV, DTK_ISODOW}, /* ISO day of week, Sunday == 7 */
  #if 0
  isst
  #endif
--- 206,212 ----
  {"irkst", DTZ, 32400}, /* Irkutsk Summer Time */
  {"irkt", TZ, 28800}, /* Irkutsk Time */
  {"irt", TZ, 12600}, /* Iran Time */
! {"isodow", UNITS, DTK_ISODOW}, /* ISO day of week, Sunday == 7 */
  #if 0
  isst
  #endif

--
greg

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#5Tom Lane
tgl@sss.pgh.pa.us
In reply to: Bruce Momjian (#4)
Re: [COMMITTERS] pgsql: Move DTK_ISODOW DTK_DOW and DTK_DOY to be type UNITS rather than

Greg Stark <stark@mit.edu> writes:

Also, what about ecpg's copy of the code?

So the only mention of these constants I can find in ECPG is the
structures in dt_common.c. I don't see a any code using it and I'm not
clear what the purpose of having this structure is or the significance
of changing it. Is this sufficient? Is it even necessary?

Hm. It does look like these entries might be dead code so far as ecpg
is concerned. I'd still make the changes you illustrate, just to avoid
having the ecpg code diverge further than necessary from the backend.

regards, tom lane

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers