From e788b5663db1e62ee4d6f6a7a9c111b049f25fbe Mon Sep 17 00:00:00 2001 From: amit Date: Wed, 12 Apr 2017 11:12:11 +0900 Subject: [PATCH 2/2] Disallow converting partitioned tables to a view --- src/backend/rewrite/rewriteDefine.c | 6 ++++++ src/test/regress/sql/rules.sql | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/src/backend/rewrite/rewriteDefine.c b/src/backend/rewrite/rewriteDefine.c index df32f2c3ae..eab3f6062d 100644 --- a/src/backend/rewrite/rewriteDefine.c +++ b/src/backend/rewrite/rewriteDefine.c @@ -422,6 +422,12 @@ DefineQueryRewrite(char *rulename, HeapScanDesc scanDesc; Snapshot snapshot; + if (event_relation->rd_rel->relkind == RELKIND_PARTITIONED_TABLE) + ereport(ERROR, + (errcode(ERRCODE_WRONG_OBJECT_TYPE), + errmsg("could not convert partitioned table \"%s\" to a view", + RelationGetRelationName(event_relation)))); + snapshot = RegisterSnapshot(GetLatestSnapshot()); scanDesc = heap_beginscan(event_relation, snapshot, 0, NULL); if (heap_getnext(scanDesc, ForwardScanDirection) != NULL) diff --git a/src/test/regress/sql/rules.sql b/src/test/regress/sql/rules.sql index d4a61813e4..4fff266216 100644 --- a/src/test/regress/sql/rules.sql +++ b/src/test/regress/sql/rules.sql @@ -898,6 +898,11 @@ select reltoastrelid, relkind, relfrozenxid drop view fooview; +-- trying to convert a partitioned table to view is not allowed +create table fooview (x int, y text) partition by list (x); +create rule "_RETURN" as on select to fooview do instead + select 1 as x, 'aaa'::text as y; + -- -- check for planner problems with complex inherited UPDATES -- -- 2.11.0