On 06/11/2017 08:55 AM, Joe Conway wrote: > On 06/11/2017 04:32 AM, Dean Rasheed wrote: >> It looks like relation_is_updatable() didn't get the message about >> partitioned tables. Thus, for example, information_schema.views and >> information_schema.columns report that simple views built on top of >> partitioned tables are non-updatable, which is wrong. Attached is a >> patch to fix this. > >> I think this kind of omission is an easy mistake to make when adding a >> new relkind, so it might be worth having more pairs of eyes looking >> out for more of the same. I did a quick scan of the rewriter code >> (prompted by the recent similar omission for RLS on partitioned >> tables) and I didn't find any more problems there, but I haven't >> looked elsewhere yet. > > Yeah, I noticed the same while working on the RLS related patch. I did > not see anything else in rewriteHandler.c but it is probably worth > looking wider for other omissions.
So in particular: src/include/utils/rel.h:318: 8<---------------------------- /* * RelationIsUsedAsCatalogTable * Returns whether the relation should be treated as a catalog table * from the pov of logical decoding. Note multiple eval of argument! */ #define RelationIsUsedAsCatalogTable(relation) \ ((relation)->rd_options && \ ((relation)->rd_rel->relkind == RELKIND_RELATION || \ (relation)->rd_rel->relkind == RELKIND_MATVIEW) ? \ ((StdRdOptions *) (relation)->rd_options)->user_catalog_table : false) 8<---------------------------- Does RELKIND_PARTITIONED_TABLE apply there? Will continue to poke around... Joe -- Crunchy Data - http://crunchydata.com PostgreSQL Support for Secure Enterprises Consulting, Training, & Open Source Development
Description: OpenPGP digital signature