Re: psql - add SHOW_ALL_RESULTS option

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Fabien COELHO <coelho@cri.ensmp.fr>
Cc: Peter Eisentraut <peter.eisentraut@enterprisedb.com>, Michael Paquier <michael@paquier.xyz>, Julien Rouhaud <rjuju123@gmail.com>, "shiy.fnst@fujitsu.com" <shiy.fnst@fujitsu.com>, "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2021-04-11T15:14:07Z
Lists: pgsql-hackers
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



Commits

  1. psql: Show all query results by default

  2. psql: Refactor ProcessResult()

  3. psql: Refactor SendQuery()

  4. psql: Add test for psql behavior on server crash

  5. psql: Additional tests

  6. Improve some psql test code

  7. psql: Fix some scan-build warnings

  8. psql: Add test for handling of replication commands

  9. psql: More tests

  10. psql: Add various tests

  11. psql: Add test for query canceling

  12. Revert "psql: Show all query results by default"

  13. Extend a test case a little