From: | wenjing <wjzeng2012(at)gmail(dot)com> |
---|---|
To: | Masahiko Sawada <masahiko(dot)sawada(at)2ndquadrant(dot)com> |
Cc: | Euler Taveira <euler(dot)taveira(at)2ndquadrant(dot)com>, pgsql-bugs(at)lists(dot)postgresql(dot)org, tushar <tushar(dot)ahuja(at)enterprisedb(dot)com>, Prabhat Sahu <prabhat(dot)sahu(at)enterprisedb(dot)com> |
Subject: | Re: [bug] Wrong bool value parameter |
Date: | 2020-04-08 07:00:20 |
Message-ID: | C930FB4B-E89A-4608-B30C-2434EBF1FBC3@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
> 2020年4月7日 下午10:35,Masahiko Sawada <masahiko(dot)sawada(at)2ndquadrant(dot)com> 写道:
>
> On Tue, 7 Apr 2020 at 20:58, Euler Taveira
> <euler(dot)taveira(at)2ndquadrant(dot)com> wrote:
>>
>> On Tue, 7 Apr 2020 at 06:30, 曾文旌 <wjzeng2012(at)gmail(dot)com> wrote:
>>>
>>> Do we allow such a bool parameter value? This seems puzzling to me.
>>>
>>>
>>> postgres=# create table t1(c1 int) with(autovacuum_enabled ='tr');
>>> CREATE TABLE
>>> postgres=# create table t2(c1 int) with(autovacuum_enabled ='fa');
>>> CREATE TABLE
>>> postgres=# \d+ t1
>>> Table "public.t1"
>>> Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
>>> --------+---------+-----------+----------+---------+---------+--------------+-------------
>>> c1 | integer | | | | plain | |
>>> Access method: heap
>>> Options: autovacuum_enabled=tr
>>>
>> [don't post to multiple mailing lists]
>>
>> I'm not sure it is a bug. It certainly can be an improvement. Code as is does not cause issues although I concur with you that it is at least a strange syntax. It is like this at least since 2009 (commit ba748f7a11e). I'm not sure parse_bool* is the right place to fix it because it could break code. IMHO the problem is that parse_one_reloption() is using the value provided by user; it should test those (abbreviation) conditions and store "true" (for example) as bool value.
>>
>
> The document[1] states:
>
> Boolean: Values can be written as on, off, true, false, yes, no, 1, 0
> (all case-insensitive) or any unambiguous prefix of one of these.
>
> Given that PostgreSQL treats such values as boolean values it seems to
> me that it's a normal behavior.
>
> [1] https://www.postgresql.org/docs/devel/config-setting.html
Why do table parameters of a bool type have different rules than data types of a Boolean type?
postgres=# create table test_bool_type(a bool);
CREATE TABLE
postgres=# insert into test_bool_type values(true);
INSERT 0 1
postgres=# insert into test_bool_type values(false);
INSERT 0 1
postgres=# insert into test_bool_type values('false');
INSERT 0 1
postgres=# insert into test_bool_type values('t');
INSERT 0 1
postgres=# insert into test_bool_type values('f');
INSERT 0 1
postgres=# insert into test_bool_type values('tr');
ERROR: invalid input syntax for type boolean: "tr"
LINE 1: insert into test_bool_type values('tr');
^
postgres=# insert into test_bool_type values('fa');
ERROR: invalid input syntax for type boolean: "fa"
LINE 1: insert into test_bool_type values('fa');
^
postgres=# insert into test_bool_type values('fals');
ERROR: invalid input syntax for type boolean: "fals"
LINE 1: insert into test_bool_type values('fals');
>
> Regards,
>
> --
> Masahiko Sawada http://www.2ndQuadrant.com/
> PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Hamid Akhtar | 2020-04-08 07:21:32 | Re: BUG #16346: pg_upgrade fails on a trigger with a comment |
Previous Message | Hugh Wang | 2020-04-08 06:51:14 | Re: BUG #16348: Memory leak when parsing config |
From | Date | Subject | |
---|---|---|---|
Next Message | davinder singh | 2020-04-08 07:02:51 | Re: PG compilation error with Visual Studio 2015/2017/2019 |
Previous Message | Fujii Masao | 2020-04-08 06:59:59 | Re: recovery_target_action=pause with confusing hint |