> On Mar 21, 2018, at 10:59 PM, Amit Langote <langote_amit...@lab.ntt.co.jp> > wrote: > > Hi David. > > On 2018/03/21 23:31, David Steele wrote: >> Hi Amit, >> >> On 3/6/18 9:44 AM, David Steele wrote: >>> On 3/2/18 2:27 AM, Amit Langote wrote: >>>> On 2018/03/02 15:58, Andres Freund wrote: >>>>> On 2018-02-02 17:00:24 -0500, Tom Lane wrote: >>>>>> Peter Eisentraut <peter.eisentr...@2ndquadrant.com> writes: >>>>>>> There might be other options, but one way to solve this would be to >>>>>>> treat partition bounds as a general expression in the grammar and then >>>>>>> check in post-parse analysis that it's a constant. >>>>>> >>>>>> That's pretty much what I said upthread. What I basically don't like >>>>>> about the current setup is that it's assuming that the bound item is >>>>>> a bare literal. Even disregarding future-extension issues, that's bad >>>>>> because it can't result in an error message smarter than "syntax error" >>>>>> when someone tries the rather natural thing of writing a more complicated >>>>>> expression. >>>>> >>>>> Given the current state of this patch, with a number of senior >>>>> developers disagreeing with the design, and the last CF being in >>>>> progress, I think we should mark this as returned with feedback. >>>> >>>> I see no problem with pursuing this in the next CF if the consensus is >>>> that we should fix how partition bounds are parsed, instead of adopting >>>> one of the patches to allow the Boolean literals to be accepted as >>>> partition bounds. >>> >>> I'm inclined to mark this patch Returned with Feedback unless I hear >>> opinions to the contrary. >> >> Hearing no opinions to the contrary I have marked this entry Returned >> with Feedback. Please resubmit when you have an updated patch. > > OK. > > Btw, there is an 11dev open item recently added to the wiki that's related > to this, but I think we might be able to deal with it independently of > this proposal. > > * Partitions with bool partition keys * > https://wiki.postgresql.org/wiki/PostgreSQL_11_Open_Items#Open_Issues > <https://wiki.postgresql.org/wiki/PostgreSQL_11_Open_Items#Open_Issues>
While testing the new partitioning features yesterday I got bit by this issue when creating a common use-case: a table split up by active/archived records: CREATE TABLE records ( id int GENERATED BY DEFAULT AS IDENTITY NOT NULL, record_date date NOT NULL, record_text text, archived bool NOT NULL DEFAULT FALSE ) PARTITION BY LIST(archived); CREATE TABLE records_archive PARTITION OF records FOR VALUES IN (TRUE); The last line yielding: ERROR: syntax error at or near "TRUE" LINE 3: FOR VALUES IN (TRUE); [Omitted from example: the “records_active” partition] I’m glad to see this was added to the open items. I would strongly suggest fixing this prior to the 11 release as it is unintuitive from a user standpoint to use ‘TRUE’ Thanks, Jonathan