diff options
Diffstat (limited to 'src/backend/commands')
-rw-r--r-- | src/backend/commands/cluster.c | 6 | ||||
-rw-r--r-- | src/backend/commands/sequence.c | 4 | ||||
-rw-r--r-- | src/backend/commands/tablecmds.c | 14 | ||||
-rw-r--r-- | src/backend/commands/typecmds.c | 8 | ||||
-rw-r--r-- | src/backend/commands/view.c | 9 |
5 files changed, 32 insertions, 9 deletions
diff --git a/src/backend/commands/cluster.c b/src/backend/commands/cluster.c index 7a1b8e885be..ce99b55a637 100644 --- a/src/backend/commands/cluster.c +++ b/src/backend/commands/cluster.c @@ -11,7 +11,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.203 2010/04/28 16:10:41 heikki Exp $ + * $PostgreSQL: pgsql/src/backend/commands/cluster.c,v 1.204 2010/07/25 23:21:21 rhaas Exp $ * *------------------------------------------------------------------------- */ @@ -687,7 +687,9 @@ make_new_heap(Oid OIDOldHeap, Oid NewTableSpace) ONCOMMIT_NOOP, reloptions, false, - true); + true, + false); + Assert(OIDNewHeap != InvalidOid); ReleaseSysCache(tuple); diff --git a/src/backend/commands/sequence.c b/src/backend/commands/sequence.c index fc2446997a7..0f06bba8039 100644 --- a/src/backend/commands/sequence.c +++ b/src/backend/commands/sequence.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/sequence.c,v 1.168 2010/02/20 21:24:02 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/commands/sequence.c,v 1.169 2010/07/25 23:21:21 rhaas Exp $ * *------------------------------------------------------------------------- */ @@ -203,8 +203,10 @@ DefineSequence(CreateSeqStmt *seq) stmt->options = list_make1(defWithOids(false)); stmt->oncommit = ONCOMMIT_NOOP; stmt->tablespacename = NULL; + stmt->if_not_exists = false; seqoid = DefineRelation(stmt, RELKIND_SEQUENCE); + Assert(seqoid != InvalidOid); rel = heap_open(seqoid, AccessExclusiveLock); tupDesc = RelationGetDescr(rel); diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index c5981d4e5b2..2fdce989c01 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.333 2010/07/23 20:04:18 petere Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.334 2010/07/25 23:21:21 rhaas Exp $ * *------------------------------------------------------------------------- */ @@ -548,8 +548,18 @@ DefineRelation(CreateStmt *stmt, char relkind) stmt->oncommit, reloptions, true, - allowSystemTableMods); + allowSystemTableMods, + stmt->if_not_exists); + /* + * If heap_create_with_catalog returns InvalidOid, it means that the user + * specified "IF NOT EXISTS" and the relation already exists. In that + * case we do nothing further. + */ + if (relationId == InvalidOid) + return InvalidOid; + + /* Store inheritance information for new rel. */ StoreCatalogInheritance(relationId, inheritOids); /* diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index 8a85e79ea65..5d94445910c 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.148 2010/02/26 02:00:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/typecmds.c,v 1.149 2010/07/25 23:21:21 rhaas Exp $ * * DESCRIPTION * The "DefineFoo" routines take the parse tree and pick out the @@ -1506,6 +1506,7 @@ DefineCompositeType(const RangeVar *typevar, List *coldeflist) CreateStmt *createStmt = makeNode(CreateStmt); Oid old_type_oid; Oid typeNamespace; + Oid relid; if (coldeflist == NIL) ereport(ERROR, @@ -1523,6 +1524,7 @@ DefineCompositeType(const RangeVar *typevar, List *coldeflist) createStmt->options = list_make1(defWithOids(false)); createStmt->oncommit = ONCOMMIT_NOOP; createStmt->tablespacename = NULL; + createStmt->if_not_exists = false; /* * Check for collision with an existing type name. If there is one and @@ -1546,7 +1548,9 @@ DefineCompositeType(const RangeVar *typevar, List *coldeflist) /* * Finally create the relation. This also creates the type. */ - return DefineRelation(createStmt, RELKIND_COMPOSITE_TYPE); + relid = DefineRelation(createStmt, RELKIND_COMPOSITE_TYPE); + Assert(relid != InvalidOid); + return relid; } /* diff --git a/src/backend/commands/view.c b/src/backend/commands/view.c index 900def01480..1acf1b802d7 100644 --- a/src/backend/commands/view.c +++ b/src/backend/commands/view.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/view.c,v 1.120 2010/01/02 16:57:40 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/view.c,v 1.121 2010/07/25 23:21:21 rhaas Exp $ * *------------------------------------------------------------------------- */ @@ -222,6 +222,8 @@ DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace) } else { + Oid relid; + /* * now set the parameters for keys/inheritance etc. All of these are * uninteresting for views... @@ -233,13 +235,16 @@ DefineVirtualRelation(const RangeVar *relation, List *tlist, bool replace) createStmt->options = list_make1(defWithOids(false)); createStmt->oncommit = ONCOMMIT_NOOP; createStmt->tablespacename = NULL; + createStmt->if_not_exists = false; /* * finally create the relation (this will error out if there's an * existing view, so we don't need more code to complain if "replace" * is false). */ - return DefineRelation(createStmt, RELKIND_VIEW); + relid = DefineRelation(createStmt, RELKIND_VIEW); + Assert(relid != InvalidOid); + return relid; } } |