From 549dae0352a06a43ec664dc158556e12ec2d30e5 Mon Sep 17 00:00:00 2001 From: Kevin Grittner Date: Fri, 22 Mar 2013 13:27:34 -0500 Subject: Fix problems with incomplete attempt to prohibit OIDS with MVs. Problem with assertion failure in restoring from pg_dump output reported by Joachim Wieland. Review and suggestions by Tom Lane and Robert Haas. --- src/backend/parser/parse_clause.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/backend/parser/parse_clause.c') diff --git a/src/backend/parser/parse_clause.c b/src/backend/parser/parse_clause.c index b9655954cde..78a4f13c711 100644 --- a/src/backend/parser/parse_clause.c +++ b/src/backend/parser/parse_clause.c @@ -243,9 +243,14 @@ interpretInhOption(InhOption inhOpt) * table/result set should be created with OIDs. This needs to be done after * parsing the query string because the return value can depend upon the * default_with_oids GUC var. + * + * Materialized views are handled here rather than reloptions.c because that + * code explicitly punts checking for oids to here. We prohibit any explicit + * specification of the oids option for a materialized view, and indicate that + * oids are not needed if we don't get an error. */ bool -interpretOidsOption(List *defList) +interpretOidsOption(List *defList, char relkind) { ListCell *cell; @@ -256,9 +261,19 @@ interpretOidsOption(List *defList) if (def->defnamespace == NULL && pg_strcasecmp(def->defname, "oids") == 0) + { + if (relkind == RELKIND_MATVIEW) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("unrecognized parameter \"%s\"", "oids"))); + return defGetBoolean(def); + } } + if (relkind == RELKIND_MATVIEW) + return false; + /* OIDS option was not specified, so use default. */ return default_with_oids; } -- cgit v1.2.3