aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/dbcommands.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/commands/dbcommands.c')
-rw-r--r--src/backend/commands/dbcommands.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/backend/commands/dbcommands.c b/src/backend/commands/dbcommands.c
index c390575f422..2b39a99c2b0 100644
--- a/src/backend/commands/dbcommands.c
+++ b/src/backend/commands/dbcommands.c
@@ -90,7 +90,7 @@ static int errdetail_busy_db(int notherbackends, int npreparedxacts);
/*
* CREATE DATABASE
*/
-void
+Oid
createdb(const CreatedbStmt *stmt)
{
HeapScanDesc scan;
@@ -655,6 +655,8 @@ createdb(const CreatedbStmt *stmt)
}
PG_END_ENSURE_ERROR_CLEANUP(createdb_failure_callback,
PointerGetDatum(&fparms));
+
+ return dboid;
}
/*
@@ -1301,10 +1303,11 @@ movedb_failure_callback(int code, Datum arg)
/*
* ALTER DATABASE name ...
*/
-void
+Oid
AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel)
{
Relation rel;
+ Oid dboid;
HeapTuple tuple,
newtuple;
ScanKeyData scankey;
@@ -1350,7 +1353,7 @@ AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel)
/* this case isn't allowed within a transaction block */
PreventTransactionChain(isTopLevel, "ALTER DATABASE SET TABLESPACE");
movedb(stmt->dbname, strVal(dtablespace->arg));
- return;
+ return InvalidOid;
}
if (dconnlimit)
@@ -1380,6 +1383,8 @@ AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel)
(errcode(ERRCODE_UNDEFINED_DATABASE),
errmsg("database \"%s\" does not exist", stmt->dbname)));
+ dboid = HeapTupleGetOid(tuple);
+
if (!pg_database_ownercheck(HeapTupleGetOid(tuple), GetUserId()))
aclcheck_error(ACLCHECK_NOT_OWNER, ACL_KIND_DATABASE,
stmt->dbname);
@@ -1408,13 +1413,15 @@ AlterDatabase(AlterDatabaseStmt *stmt, bool isTopLevel)
/* Close pg_database, but keep lock till commit */
heap_close(rel, NoLock);
+
+ return dboid;
}
/*
* ALTER DATABASE name SET ...
*/
-void
+Oid
AlterDatabaseSet(AlterDatabaseSetStmt *stmt)
{
Oid datid = get_database_oid(stmt->dbname, false);
@@ -1432,6 +1439,8 @@ AlterDatabaseSet(AlterDatabaseSetStmt *stmt)
AlterSetting(datid, InvalidOid, stmt->setstmt);
UnlockSharedObject(DatabaseRelationId, datid, 0, AccessShareLock);
+
+ return datid;
}