The following bug has been logged on the website:
Bug reference: 17806
Logged by: Wesley Smith
Email address: wesley.smith@zapproved.com
PostgreSQL version: 13.10
Operating system: Linux
Description:
I am starting up a fresh instance of Postgres inside of Docker using the
"postgres:13.10" tag. I'm then connecting to the database server using the
Ppgsql library for .NET (version 6.0.8) and creating a new database like
this:
var str = "
CREATE ROLE foo WITH PASSWORD 'foo' LOGIN NOINHERIT;
GRANT foo TO postgres;
CREATE DATABASE my_db OWNER foo;
-- More statements here
";
conn = new NpgsqlConnection(connString);
var cmd = new NpgsqlCommand(sql, conn);
await cmd.ExecuteNonQueryAsync();
In all versions of PostgreSQL 13 before 10 (13.1 - 13.9), this works fine.
There is no error and the database is created as expected.
However, with version 13.10, I get this error:
Severity: ERROR
InvariantSeverity: ERROR
SqlState: 25001
MessageText: CREATE DATABASE cannot be executed within a pipeline
File: xact.c
Line: 3412
Routine: PreventInTransactionBlock
As far as I know, I'm not executing these statements in a pipeline or a
transaction.
I don't see anything in the 13.10 release notes that mentions anything about
this. Please let me know whether 13.10 has a bug, or if it is correctly
enforcing something that should have always been enforced.