1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-16 06:01:02 +03:00

Implement "WITH / WITHOID OIDS" clause for CREATE TABLE AS. This is

intended to allow application authors to insulate themselves from
changes to the default value of 'default_with_oids' in future releases
of PostgreSQL.

This patch also fixes a bug in the earlier implementation of the
'default_with_oids' GUC variable: code in gram.y should not examine
the value of GUC variables directly due to synchronization issues.
This commit is contained in:
Neil Conway
2004-01-10 23:28:45 +00:00
parent cf4c925dd4
commit 98dcf085e3
14 changed files with 185 additions and 58 deletions

View File

@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.94 2003/11/29 19:51:47 pgsql Exp $
* $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.95 2004/01/10 23:28:44 neilc Exp $
*
*-------------------------------------------------------------------------
*/
@ -47,6 +47,7 @@
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/guc.h"
#include "utils/inval.h"
#include "utils/lsyscache.h"
#include "utils/relcache.h"
@ -185,7 +186,25 @@ DefineRelation(CreateStmt *stmt, char relkind)
*/
descriptor = BuildDescForRelation(schema);
descriptor->tdhasoid = (stmt->hasoids || parentHasOids);
if (parentHasOids)
descriptor->tdhasoid = true;
else
{
switch (stmt->hasoids)
{
case MUST_HAVE_OIDS:
descriptor->tdhasoid = true;
break;
case MUST_NOT_HAVE_OIDS:
descriptor->tdhasoid = false;
break;
case DEFAULT_OIDS:
descriptor->tdhasoid = default_with_oids;
break;
}
}
if (old_constraints != NIL)
{