On Tue, Dec 12, 2017 at 3:13 PM, Amit Langote <langote_amit...@lab.ntt.co.jp> wrote: > On 2017/12/12 18:12, Ashutosh Bapat wrote: >> On Tue, Dec 12, 2017 at 7:19 AM, Amit Langote wrote: >>> Horiguchi-san pointed out [1] on a nearby thread that the partitioning >>> syntax (the FOR VALUES clause) doesn't accept true and false as valid >>> partition bound datums, which seems to me like an oversight. Attached a >>> patch to fix that. >> >> May be you should use opt_boolean_or_string instead of TRUE_P and >> FALSE_P. It also supports ON and OFF, which will be bonus. > > Thanks for the suggestion. I tried that but NonReservedWord_or_Sconst > conflicts with Sconst that partbound_datum itself has a rule for, > resulting in the following error: > > gram.y: conflicts: 6 reduce/reduce > gram.y: expected 0 reduce/reduce conflicts > gram.y:2769.25-81: warning: rule useless in parser due to conflicts: > partbound_datum: Sconst
Probably that would get fixed if you remove Sconst from the partition_datum and leave NonReservedWord_or_Sconst. > > Moreover, it seems like on/off are not being accepted as valid Boolean > values like true/false are. > > insert into rp values (true); > INSERT 0 1 > insert into rp values (on); > ERROR: syntax error at or near "on" > LINE 1: insert into rp values (on); > ^ > What's going on with that? Maybe on/off values work only with SET > statements? But this is more important observation. Looks like on/off work with SET and EXPLAIN only, not in normal SQL. So probably my suggestion was wrongheaded. -- Best Wishes, Ashutosh Bapat EnterpriseDB Corporation The Postgres Database Company