Commit f7bb7f06 authored by Robert Haas's avatar Robert Haas

Allow background workers to connect to no particular database.

The documentation claims that this is supported, but it didn't
actually work.  Fix that.

Reported by Pavel Stehule; patch by me.
parent 5d1ff6bd
......@@ -827,7 +827,7 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
/* take database name from the caller, just for paranoia */
strlcpy(dbname, in_dbname, sizeof(dbname));
}
else
else if (OidIsValid(dboid))
{
/* caller specified database by OID */
HeapTuple tuple;
......@@ -847,6 +847,18 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
if (out_dbname)
strcpy(out_dbname, dbname);
}
else
{
/*
* If this is a background worker not bound to any particular
* database, we're done now. Everything that follows only makes
* sense if we are bound to a specific database. We do need to
* close the transaction we started before returning.
*/
if (!bootstrap)
CommitTransactionCommand();
return;
}
/*
* Now, take a writer's lock on the database we are trying to connect to.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment