Issue in to_timestamp/to_date while handling the quoted literal string

Поиск
Список
Период
Сортировка
От Suraj Kharage
Тема Issue in to_timestamp/to_date while handling the quoted literal string
Дата
Msg-id CAF1DzPW_zT7BNqKxS87GF_RWRude2sJ8tJzOJ2HCOqtSaVuQCA@mail.gmail.com
обсуждение исходный текст
Ответы Re: Issue in to_timestamp/to_date while handling the quoted literal string  (Brendan Jurd <direvus@gmail.com>)
Список pgsql-hackers
Hi,

I noticed the issue in to_timestamp()/to_date() while handling the double quote literal string. If any double quote literal characters found in format, we generate the NODE_TYPE_CHAR in parse format and store that actual character in FormatNode->character. n DCH_from_char, we just increment the input string by length of character for NODE_TYPE_CHAR.
We are actually not matching these characters in input string and because of this, date values get changed if quoted literal string is not identical in input and format string.

e.g:

postgres@78619=#select to_timestamp('2019-05-24T23:12:45', 'yyyy-mm-dd"TT"hh24:mi:ss');
       to_timestamp        
---------------------------
 2019-05-24 03:12:45+05:30
(1 row)


In above example, the quoted string is 'TT', so it just increment the input string by 2 while handling these characters and returned the wrong hour value.

My suggestion is to match the exact characters from quoted literal string in input string and if doesn't match then throw an error.

Attached is the POC patch which almost works for all scenarios except for whitespace - as a quote character.

Suggestions?
--
--

Thanks & Regards, 
Suraj kharage, 
EnterpriseDB Corporation, 
The Postgres Database Company.
Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Imai, Yoshikazu"
Дата:
Сообщение: RE: seems like a bug in pgbench -R
Следующее
От: Jesper Pedersen
Дата:
Сообщение: Re: pg_receivewal documentation