41 const char *
pghost,
const char *
pgport,
const char *pguser,
44 char *override_dbname)
48 const char *remoteversion_str;
51 const char **
values = NULL;
53 int server_version_temp;
82 if (conn_opts == NULL)
85 for (conn_opt = conn_opts; conn_opt->
keyword != NULL; conn_opt++)
87 if (conn_opt->
val != NULL && conn_opt->
val[0] !=
'\0' &&
88 strcmp(conn_opt->
keyword,
"dbname") != 0)
95 for (conn_opt = conn_opts; conn_opt->
keyword != NULL; conn_opt++)
97 if (conn_opt->
val != NULL && conn_opt->
val[0] !=
'\0' &&
98 strcmp(conn_opt->
keyword,
"dbname") != 0)
148 keywords[
i] =
"fallback_application_name";
161 prompt_password !=
TRI_NO)
199 if (!remoteversion_str)
200 pg_fatal(
"could not get server version");
203 if (server_version_temp == 0)
204 pg_fatal(
"could not parse server version \"%s\"",
211 my_version = PG_VERSION_NUM;
217 if (my_version != server_version_temp
218 && (server_version_temp < 90200 ||
219 (server_version_temp / 100) > (my_version / 100)))
221 pg_log_error(
"aborting because of server version mismatch");
223 remoteversion_str,
progname, PG_VERSION);
249 bool firstkeyword =
true;
254 if (strcmp(
keywords[
i],
"dbname") == 0 ||
256 strcmp(
keywords[
i],
"fallback_application_name") == 0)
261 firstkeyword =
false;
static Datum values[MAXATTR]
#define ALWAYS_SECURE_SEARCH_PATH_SQL
static char * constructConnStr(const char **keywords, const char **values)
PGresult * executeQuery(PGconn *conn, const char *query)
PGconn * ConnectDatabase(const char *dbname, const char *connection_string, const char *pghost, const char *pgport, const char *pguser, trivalue prompt_password, bool fail_on_error, const char *progname, const char **connstr, int *server_version, char *password, char *override_dbname)
int PQserverVersion(const PGconn *conn)
void PQconninfoFree(PQconninfoOption *connOptions)
PQconninfoOption * PQconninfoParse(const char *conninfo, char **errmsg)
const char * PQparameterStatus(const PGconn *conn, const char *paramName)
int PQconnectionNeedsPassword(const PGconn *conn)
ConnStatusType PQstatus(const PGconn *conn)
void PQfinish(PGconn *conn)
char * PQerrorMessage(const PGconn *conn)
PGconn * PQconnectdbParams(const char *const *keywords, const char *const *values, int expand_dbname)
ExecStatusType PQresultStatus(const PGresult *res)
void PQclear(PGresult *res)
PGresult * PQexec(PGconn *conn, const char *query)
char * pg_strdup(const char *in)
void * pg_malloc0(size_t size)
static const JsonPathKeyword keywords[]
#define pg_log_error(...)
#define pg_log_error_detail(...)
void exit_nicely(int code)
static const char * connstr
static int server_version
static const char * pghost
static const char * pgport
PQExpBuffer createPQExpBuffer(void)
void appendPQExpBuffer(PQExpBuffer str, const char *fmt,...)
void destroyPQExpBuffer(PQExpBuffer str)
void appendPQExpBufferChar(PQExpBuffer str, char ch)
char * simple_prompt(const char *prompt, bool echo)
void appendConnStrVal(PQExpBuffer buf, const char *str)