Add guc_setted_typed() function to allow

wal_keep_segmeents to be checked as an integer instead
of text

Patch by Jay Taylor
This commit is contained in:
Jaime Casanova
2013-12-19 00:55:56 -05:00
parent 493133986d
commit a1f4285e2b
3 changed files with 37 additions and 1 deletions

View File

@@ -250,6 +250,40 @@ guc_setted(PGconn *conn, const char *parameter, const char *op,
return true;
}
/**
* Just like guc_setted except with an extra parameter containing the name of
* the pg datatype so that the comparison can be done properly.
*/
bool
guc_setted_typed(PGconn *conn, const char *parameter, const char *op,
const char *value, const char *datatype)
{
PGresult *res;
char sqlquery[QUERY_STR_LEN];
sqlquery_snprintf(sqlquery, "SELECT true FROM pg_settings "
" WHERE name = '%s' AND setting::%s %s '%s'::%s",
parameter, datatype, op, value, datatype);
res = PQexec(conn, sqlquery);
if (PQresultStatus(res) != PGRES_TUPLES_OK)
{
log_err(_("GUC setting check PQexec failed: %s"),
PQerrorMessage(conn));
PQclear(res);
PQfinish(conn);
exit(ERR_DB_QUERY);
}
if (PQntuples(res) == 0)
{
PQclear(res);
return false;
}
PQclear(res);
return true;
}
const char *
get_cluster_size(PGconn *conn)