Re: Ensure that maxlen is an integer value in dict_int configuration

Поиск
Список
Период
Сортировка
От Arthur Zakirov
Тема Re: Ensure that maxlen is an integer value in dict_int configuration
Дата
Msg-id 20180327130359.GA4520@zakirov.localdomain
обсуждение исходный текст
Ответ на Ensure that maxlen is an integer value in dict_int configuration  (Daniel Gustafsson <daniel@yesql.se>)
Ответы Re: Ensure that maxlen is an integer value in dict_int configuration  (Daniel Gustafsson <daniel@yesql.se>)
Список pgsql-hackers
On Tue, Mar 27, 2018 at 01:17:20PM +0200, Daniel Gustafsson wrote:
> I recently had a usecase for dict_int, typoed my script and spent longer than
> I’d like to admit finding said typo.  The attached patch scratches my itch by
> ensuring that the maxlen parameter to dict_int is integer, instead of silently
> setting it to zero on malformed input. Instead of this:
> 
> dg=# alter text search dictionary intdict (maxlen = a, rejectlong = true);
> ALTER TEXT SEARCH DICTIONARY
> dg=# select ts_lexize('intdict', '12345678');
>  ts_lexize
> -----------
>  {}
> (1 row)

But the patch breaks options parsing in another place. After the patch:

=# alter text search dictionary intdict (maxlen = 3, rejectlong = true);
ALTER TEXT SEARCH DICTIONARY
=# select ts_lexize('intdict', '12345678');
ERROR:  maxlen requires an integer value

It is because all options are stored as string:

=# select dictinitoption from pg_ts_dict where dictname = 'intdict';
          dictinitoption           
-----------------------------------
 maxlen = '5', rejectlong = 'true'

So the right fix could be as it done in postgres_fdw_validator() for
'fetch_size' option.

-- 
Arthur Zakirov
Postgres Professional: http://www.postgrespro.com
Russian Postgres Company


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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: Problem while setting the fpw with SIGHUP
Следующее
От: Fabien COELHO
Дата:
Сообщение: pgbench doc typos