1
0
mirror of https://github.com/postgres/postgres.git synced 2025-07-02 09:02:37 +03:00

Improve behavior of \watch with non-tuple-returning commands.

Print the command tag if we get PGRES_COMMAND_OK, and throw an error for
other cases.  Per gripe from Michael Paquier.

In passing, add an fflush(), just to be real sure the output appears
before we sleep.
This commit is contained in:
Tom Lane
2013-05-04 16:41:22 -04:00
parent 083d8fa79d
commit 626e6eda4f

View File

@ -2648,18 +2648,33 @@ do_watch(PQExpBuffer query_buf, long sleep)
printQuery(res, &myopt, pset.queryFout, pset.logfile);
break;
case PGRES_COMMAND_OK:
fprintf(pset.queryFout, "%s\n%s\n\n", title, PQcmdStatus(res));
break;
case PGRES_EMPTY_QUERY:
psql_error(_("\\watch cannot be used with an empty query\n"));
PQclear(res);
return false;
case PGRES_COPY_OUT:
case PGRES_COPY_IN:
case PGRES_COPY_BOTH:
psql_error(_("\\watch cannot be used with COPY\n"));
PQclear(res);
return false;
default:
/* should we fail for non-tuple-result commands? */
break;
/* other cases should have been handled by PSQLexec */
psql_error(_("unexpected result status for \\watch\n"));
PQclear(res);
return false;
}
PQclear(res);
fflush(pset.queryFout);
/*
* Set up cancellation of 'watch' via SIGINT. We redo this each time
* through the loop since it's conceivable something inside PSQLexec