Coverity has pointed out another problem with this patch:
/srv/coverity/git/pgsql-git/postgresql/src/bin/psql/common.c: 1425 in SendQuery()
1419 /*
1420 * Do nothing if they are messing with savepoints themselves:
1421 * If the user did COMMIT AND CHAIN, RELEASE or ROLLBACK, our
1422 * savepoint is gone. If they issued a SAVEPOINT, releasing
1423 * ours would remove theirs.
1424 */
>>> CID 1476042: Control flow issues (DEADCODE)
>>> Execution cannot reach the expression "strcmp(PQcmdStatus(results), "COMMIT") == 0" inside this statement: "if
(results&& (strcmp(PQcm...".
1425 if (results &&
1426 (strcmp(PQcmdStatus(results), "COMMIT") == 0 ||
1427 strcmp(PQcmdStatus(results), "SAVEPOINT") == 0 ||
1428 strcmp(PQcmdStatus(results), "RELEASE") == 0 ||
1429 strcmp(PQcmdStatus(results), "ROLLBACK") == 0))
1430 svptcmd = NULL;
It's right: this is dead code because all paths through the if-nest
starting at line 1373 now leave results = NULL. Hence, this patch
has broken the autocommit logic; it's no longer possible to tell
whether we should do anything with our savepoint.
Between this and the known breakage of control-C, it seems clear
to me that this patch was nowhere near ready for prime time.
I think shoving it in on the last day before feature freeze was
ill-advised, and it ought to be reverted. We can try again later.
regards, tom lane