mirror of
https://github.com/postgres/postgres.git
synced 2025-10-27 00:12:01 +03:00
CREATE TABLE IF NOT EXISTS.
Reviewed by Bernd Helmle.
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user