vacuumdb: Check result status of PQsendQuery
Noticed by Coverity
This commit is contained in:
parent
4babae1a86
commit
871293fb7f
@ -484,6 +484,11 @@ vacuum_one_database(const char *dbname, vacuumingOptions *vacopts,
|
|||||||
else
|
else
|
||||||
free_slot = slots;
|
free_slot = slots;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Execute the vacuum. If not in parallel mode, this terminates the
|
||||||
|
* program in case of an error. (The parallel case handles query
|
||||||
|
* errors in GetQueryResult through GetIdleSlot.)
|
||||||
|
*/
|
||||||
run_vacuum_command(free_slot->connection, sql.data,
|
run_vacuum_command(free_slot->connection, sql.data,
|
||||||
echo, dbname, tabname, progname, parallel);
|
echo, dbname, tabname, progname, parallel);
|
||||||
|
|
||||||
@ -661,21 +666,27 @@ prepare_vacuum_command(PQExpBuffer sql, PGconn *conn, vacuumingOptions *vacopts,
|
|||||||
/*
|
/*
|
||||||
* Execute a vacuum/analyze command to the server.
|
* Execute a vacuum/analyze command to the server.
|
||||||
*
|
*
|
||||||
* Result status is checked only if 'async' is false.
|
* Any errors during command execution are reported to stderr. If async is
|
||||||
|
* false, this function exits the program after reporting the error.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
run_vacuum_command(PGconn *conn, const char *sql, bool echo,
|
run_vacuum_command(PGconn *conn, const char *sql, bool echo,
|
||||||
const char *dbname, const char *table,
|
const char *dbname, const char *table,
|
||||||
const char *progname, bool async)
|
const char *progname, bool async)
|
||||||
{
|
{
|
||||||
|
bool status;
|
||||||
|
|
||||||
if (async)
|
if (async)
|
||||||
{
|
{
|
||||||
if (echo)
|
if (echo)
|
||||||
printf("%s\n", sql);
|
printf("%s\n", sql);
|
||||||
|
|
||||||
PQsendQuery(conn, sql);
|
status = PQsendQuery(conn, sql) == 1;
|
||||||
}
|
}
|
||||||
else if (!executeMaintenanceCommand(conn, sql, echo))
|
else
|
||||||
|
status = executeMaintenanceCommand(conn, sql, echo);
|
||||||
|
|
||||||
|
if (!status)
|
||||||
{
|
{
|
||||||
if (table)
|
if (table)
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
@ -684,10 +695,14 @@ run_vacuum_command(PGconn *conn, const char *sql, bool echo,
|
|||||||
else
|
else
|
||||||
fprintf(stderr, _("%s: vacuuming of database \"%s\" failed: %s"),
|
fprintf(stderr, _("%s: vacuuming of database \"%s\" failed: %s"),
|
||||||
progname, dbname, PQerrorMessage(conn));
|
progname, dbname, PQerrorMessage(conn));
|
||||||
|
|
||||||
|
if (!async)
|
||||||
|
{
|
||||||
PQfinish(conn);
|
PQfinish(conn);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* GetIdleSlot
|
* GetIdleSlot
|
||||||
|
Loading…
x
Reference in New Issue
Block a user