diff options
author | Dean Rasheed <dean.a.rasheed@gmail.com> | 2017-06-13 17:30:36 +0100 |
---|---|---|
committer | Dean Rasheed <dean.a.rasheed@gmail.com> | 2017-06-13 17:30:36 +0100 |
commit | b6263cd851ef245a5dc38119448e029ca1592da4 (patch) | |
tree | d28b5673ba232a537cdde049b1fbd7a1378c2e94 /src/backend/rewrite/rewriteHandler.c | |
parent | 2e3fc7a7d322289c70f89199be0a5e899ec7d9b9 (diff) | |
download | postgresql-b6263cd851ef245a5dc38119448e029ca1592da4.tar.gz postgresql-b6263cd851ef245a5dc38119448e029ca1592da4.zip |
Teach relation_is_updatable() about partitioned tables.
Table partitioning, introduced in commit f0e44751d7, added a new
relkind - RELKIND_PARTITIONED_TABLE. Update relation_is_updatable() to
handle it. Specifically, partitioned tables and simple views built on
top of them are updatable.
This affects the SQL-callable functions pg_relation_is_updatable() and
pg_column_is_updatable(), and the views information_schema.views and
information_schema.columns.
Dean Rasheed, reviewed by Ashutosh Bapat.
Discussion: https://postgr.es/m/CAEZATCXnbiFkMXgF4Ez1pmM2c-tS1z33bSq7OGbw7QQhHov%2B6Q%40mail.gmail.com
Diffstat (limited to 'src/backend/rewrite/rewriteHandler.c')
-rw-r--r-- | src/backend/rewrite/rewriteHandler.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/backend/rewrite/rewriteHandler.c b/src/backend/rewrite/rewriteHandler.c index 6cd73c13868..399380735c5 100644 --- a/src/backend/rewrite/rewriteHandler.c +++ b/src/backend/rewrite/rewriteHandler.c @@ -2454,7 +2454,8 @@ relation_is_updatable(Oid reloid, return 0; /* If the relation is a table, it is always updatable */ - if (rel->rd_rel->relkind == RELKIND_RELATION) + if (rel->rd_rel->relkind == RELKIND_RELATION || + rel->rd_rel->relkind == RELKIND_PARTITIONED_TABLE) { relation_close(rel, AccessShareLock); return ALL_EVENTS; @@ -2568,7 +2569,8 @@ relation_is_updatable(Oid reloid, base_rte = rt_fetch(rtr->rtindex, viewquery->rtable); Assert(base_rte->rtekind == RTE_RELATION); - if (base_rte->relkind != RELKIND_RELATION) + if (base_rte->relkind != RELKIND_RELATION && + base_rte->relkind != RELKIND_PARTITIONED_TABLE) { baseoid = base_rte->relid; include_cols = adjust_view_column_set(updatable_cols, |