1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-13 07:41:39 +03:00

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.
This commit is contained in:
Kevin Grittner
2013-03-22 13:27:34 -05:00
parent 4912385b56
commit 549dae0352
6 changed files with 32 additions and 6 deletions

View File

@ -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;
}