Re: BUG #15212: Default values in partition tables don't work asexpected and allow NOT NULL violation
От | Dmitry Dolgov |
---|---|
Тема | Re: BUG #15212: Default values in partition tables don't work asexpected and allow NOT NULL violation |
Дата | |
Msg-id | CA+q6zcVhEErRw_dUUKBdtRFH+sdQfFdv6FNY-BJpM-mJHp7wiA@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: BUG #15212: Default values in partition tables don't work asexpected and allow NOT NULL violation (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>) |
Ответы |
Re: BUG #15212: Default values in partition tables don't work asexpected and allow NOT NULL violation
|
Список | pgsql-bugs |
> On 6 June 2018 at 10:00, Amit Langote <Langote_Amit_f8@lab.ntt.co.jp> wrote: > Hello. > > On 2018/05/28 9:30, PG Bug reporting form wrote: >> The following bug has been logged on the website: >> >> Bug reference: 15212 >> Logged by: Jürgen Strobel >> Email address: juergen+postgresql@strobel.info >> PostgreSQL version: 10.4 >> Operating system: Debian >> Description: >> >> I found unexpected behavior when playing around with declarative >> partitioning. >> First, any way to define defaults on (child) partition tables is silently >> ignored when inserting into the master table, but not when inserting into >> the child table. > > Hmm, so we provide the ability to specify default values per partition, > but it is not applied when inserting through the parent. I'd like to hear > from others on whether we should fix things so that we fill the > partition's default value for a given column if it's null in the input > tuple, after that tuple is routed to that partition. It does seem like a > inconvenience to have to do it through workarounds like a BR trigger. > > Actually, default value substitution happens much earlier in the query > rewrite phase, whereas the partition to actually insert the tuple into > (that is, tuple routing) is determined much later during the execution of > the query. So fixing this will require some work. Well, since documentation says that partitioning build on top of inheritance, and for inheritance: If the new table explicitly specifies a default value for the column, this default overrides any defaults from inherited declarations of the column. So one may think it should be the same for partitioning as well.
В списке pgsql-bugs по дате отправления: