mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-12-21 08:29:39 +08:00
psql: Catch and report errors while printing result table
Errors (for example I/O errors or disk full) while printing out result tables were completely ignored, which could result in silently truncated output in scripts, for example. Fix by adding some basic error checking and reporting. Author: Daniel Verite <daniel@manitou-mail.org> Author: David Zhang <david.zhang@highgo.ca> Discussion: https://www.postgresql.org/message-id/flat/9a0b3c8d-ee14-4b1d-9d0a-2c993bdabacc@manitou-mail.org
This commit is contained in:
parent
85f6b49c2c
commit
b03436994b
@ -708,6 +708,7 @@ static bool
|
||||
PrintQueryTuples(const PGresult *results)
|
||||
{
|
||||
printQueryOpt my_popt = pset.popt;
|
||||
bool result = true;
|
||||
|
||||
/* one-shot expanded output requested via \gx */
|
||||
if (pset.g_expanded)
|
||||
@ -725,6 +726,11 @@ PrintQueryTuples(const PGresult *results)
|
||||
disable_sigpipe_trap();
|
||||
|
||||
printQuery(results, &my_popt, fout, false, pset.logfile);
|
||||
if (ferror(fout))
|
||||
{
|
||||
pg_log_error("could not print result table: %m");
|
||||
result = false;
|
||||
}
|
||||
|
||||
if (is_pipe)
|
||||
{
|
||||
@ -735,9 +741,16 @@ PrintQueryTuples(const PGresult *results)
|
||||
fclose(fout);
|
||||
}
|
||||
else
|
||||
{
|
||||
printQuery(results, &my_popt, pset.queryFout, false, pset.logfile);
|
||||
if (ferror(pset.queryFout))
|
||||
{
|
||||
pg_log_error("could not print result table: %m");
|
||||
result = false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user