Re: [HACKERS] Oddity in error handling of constraint violation inExecConstraints for partitioned tables
От | Amit Khandekar |
---|---|
Тема | Re: [HACKERS] Oddity in error handling of constraint violation inExecConstraints for partitioned tables |
Дата | |
Msg-id | CAJ3gD9cqpP=WvJj=dv1ONkPWjy8ZuUaOM4_x86i3uQPas=0_jg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] Oddity in error handling of constraint violation inExecConstraints for partitioned tables (Amit Langote <Langote_Amit_f8@lab.ntt.co.jp>) |
Ответы |
Re: [HACKERS] Oddity in error handling of constraint violation inExecConstraints for partitioned tables
|
Список | pgsql-hackers |
>> On 2017/07/10 14:15, Etsuro Fujita wrote: >> Another thing I noticed is the error handling in ExecWithCheckOptions; it >> doesn't take any care for partition tables, so the column description in >> the error message for WCO_VIEW_CHECK is built using the partition table's >> rowtype, not the root table's. But I think it'd be better to build that >> using the root table's rowtype, like ExecConstraints, because that would >> make the column description easier to understand since the parent view(s) >> (from which WithCheckOptions evaluated there are created) would have been >> defined on the root table. This seems independent from the above issue, >> so I created a separate patch, which I'm attaching. What do you think >> about that? + if (map != NULL) + { + tuple = do_convert_tuple(tuple, map); + ExecStoreTuple(tuple, slot, InvalidBuffer, false); + } Above, the tuple descriptor also needs to be set, since the parent and child partitions can have different column ordering. Due to this, the following testcase crashes : CREATE TABLE range_parted (a text,b int, c int) partition by range (b); CREATE VIEW upview AS SELECT * FROM range_parted WHERE (select c > 120) WITH CHECK OPTION; create table part_a_1_a_10(b int, c int, a text); alter table range_parted attach partition part_a_1_a_10 for values from (1) to (10); insert into upview values ('a', 2, 100); Attached is a patch that sets the tuple descriptor. Also in the patch, in test updatable_view.sql, I have added a varchar column in one of the partitioned tables used in updatable_views.sql, so as to cover this scenario. Without setting the tuple descriptor, the output of the patched updatable_views.sql shows junk value in one of the columns of the row in the error message emitted for the WithCheckOption violation. Thanks, -Amit Khandekar EnterpriseDB Corporation The Postgres Database Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Вложения
В списке pgsql-hackers по дате отправления: