35 const char *remoteversion_str;
41 if (remoteversion == 0 || !remoteversion_str)
42 fatal(
"could not get server_version from libpq");
49 if (remoteversion != PG_VERSION_NUM
50 && (remoteversion < AH->
public.minRemoteVersion ||
54 remoteversion_str,
progname, PG_VERSION);
55 fatal(
"aborting because of server version mismatch");
62 if (remoteversion >= 90000)
124 fatal(
"already connected to a database");
131 if (prompt_password ==
TRI_YES && password == NULL)
140 const char *keywords[8];
149 keywords[
i] =
"host";
150 values[i++] = cparams->
pghost;
151 keywords[
i] =
"port";
152 values[i++] = cparams->
pgport;
153 keywords[
i] =
"user";
155 keywords[
i] =
"password";
157 keywords[
i] =
"dbname";
158 values[i++] = cparams->
dbname;
161 keywords[
i] =
"dbname";
164 keywords[
i] =
"fallback_application_name";
174 fatal(
"could not connect to database");
179 prompt_password !=
TRI_NO)
191 fatal(
"reconnection to database \"%s\" failed: %s",
195 fatal(
"connection to database \"%s\" failed: %s",
204 if (password && password != AH->savedPassword)
213 if (AH->savedPassword)
214 free(AH->savedPassword);
280 fatal(
"query was: %s", query);
322 "query returned %d rows instead of one: %s",
340 fprintf(stderr,
"Executing: '%s'\n\n", qry);
388 const char *qry =
buf;
389 const char *eos = buf + bufLen;
395 for (; qry < eos; qry++)
413 "could not execute query");
466 fatal(
"error returned by PQputCopyData: %s",
486 if (buf[bufLen] ==
'\0')
492 memcpy(str, buf, bufLen);
515 fatal(
"error returned by PQputCopyEnd: %s",
527 pg_log_warning(
"unexpected extra results during COPY of table \"%s\"",
561 "SELECT pg_catalog.lo_unlink(oid) " 562 "FROM pg_catalog.pg_largeobject_metadata " 563 "WHERE oid = '%u';\n",
570 "SELECT CASE WHEN EXISTS(" 571 "SELECT 1 FROM pg_catalog.pg_largeobject WHERE loid = '%u'" 572 ") THEN pg_catalog.lo_unlink('%u') END;\n",
int PQputCopyData(PGconn *conn, const char *buffer, int nbytes)
void ReconnectToServer(ArchiveHandle *AH, const char *dbname)
void EndDBCopyMode(Archive *AHX, const char *tocEntryTag)
char * PQerrorMessage(const PGconn *conn)
int ExecuteSqlCommandBuf(Archive *AHX, const char *buf, size_t bufLen)
PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn, PQnoticeProcessor proc, void *arg)
char * PQgetvalue(const PGresult *res, int tup_num, int field_num)
const char * PQparameterStatus(const PGconn *conn, const char *paramName)
void * pg_malloc(size_t size)
#define pg_log_error(...)
static void ExecuteSqlCommand(ArchiveHandle *AH, const char *qry, const char *desc)
void DisconnectDatabase(Archive *AHX)
void warn_or_exit_horribly(ArchiveHandle *AH, const char *fmt,...)
void CommitTransaction(Archive *AHX)
void StartTransaction(Archive *AHX)
void PQfinish(PGconn *conn)
int PQputCopyEnd(PGconn *conn, const char *errormsg)
char * simple_prompt(const char *prompt, bool echo)
PGcancel *volatile connCancel
int PQserverVersion(const PGconn *conn)
int PQntuples(const PGresult *res)
PGconn * GetConnection(Archive *AHX)
ExecStatusType PQresultStatus(const PGresult *res)
PGconn * PQconnectdbParams(const char *const *keywords, const char *const *values, int expand_dbname)
static void die_on_query_failure(ArchiveHandle *AH, const char *query)
PGresult * ExecuteSqlQueryForSingleRow(Archive *fout, const char *query)
char * archiveRemoteVersion
char * pg_strdup(const char *in)
char * PQpass(const PGconn *conn)
static void notice_processor(void *arg, const char *message)
int ahprintf(ArchiveHandle *AH, const char *fmt,...)
PGTransactionStatusType PQtransactionStatus(const PGconn *conn)
#define ngettext(s, p, n)
PQExpBuffer createPQExpBuffer(void)
void ConnectDatabase(Archive *AHX, const ConnParams *cparams, bool isReconnect)
void appendPQExpBufferChar(PQExpBuffer str, char ch)
static void ExecuteSimpleCommands(ArchiveHandle *AH, const char *buf, size_t bufLen)
void PQclear(PGresult *res)
void pg_log_generic(enum pg_log_level level, const char *pg_restrict fmt,...)
char * PQdb(const PGconn *conn)
void ExecuteSqlStatement(Archive *AHX, const char *query)
#define Assert(condition)
#define ALWAYS_SECURE_SEARCH_PATH_SQL
ArchiverOutput outputKind
static Datum values[MAXATTR]
static void _check_database_version(ArchiveHandle *AH)
int PQconnectionUsedPassword(const PGconn *conn)
int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize)
int PQconnectionNeedsPassword(const PGconn *conn)
void set_archive_cancel_info(ArchiveHandle *AH, PGconn *conn)
PGresult * PQexec(PGconn *conn, const char *query)
void DropBlobIfExists(ArchiveHandle *AH, Oid oid)
#define pg_log_warning(...)
void resetPQExpBuffer(PQExpBuffer str)
static void static void status(const char *fmt,...) pg_attribute_printf(1
ConnStatusType PQstatus(const PGconn *conn)
PGresult * PQgetResult(PGconn *conn)
PGresult * ExecuteSqlQuery(Archive *AHX, const char *query, ExecStatusType status)