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


Reply via email to