33 const char *remoteversion_str;
39 if (remoteversion == 0 || !remoteversion_str)
40 pg_fatal(
"could not get \"server_version\" from libpq");
47 if (remoteversion != PG_VERSION_NUM
48 && (remoteversion < AH->
public.minRemoteVersion ||
51 pg_log_error(
"aborting because of server version mismatch");
53 remoteversion_str,
progname, PG_VERSION);
62 "SELECT pg_catalog.pg_is_in_recovery()");
118 pg_fatal(
"already connected to a database");
158 keywords[
i] =
"fallback_application_name";
168 pg_fatal(
"could not connect to database");
173 prompt_password !=
TRI_NO)
314 "query returned %d rows instead of one: %s",
332 fprintf(stderr,
"Executing: '%s'\n\n", qry);
380 const char *qry =
buf;
381 const char *eos =
buf + bufLen;
387 for (; qry < eos; qry++)
405 "could not execute query");
458 pg_fatal(
"error returned by PQputCopyData: %s",
478 if (
buf[bufLen] ==
'\0')
507 pg_fatal(
"error returned by PQputCopyEnd: %s",
519 pg_log_warning(
"unexpected extra results during COPY of table \"%s\"",
551 const char *cmdBegin,
const char *cmdEnd)
560 while ((en = strchr(st,
'\n')) != NULL)
563 ahprintf(AH,
"%s%s%s;\n", cmdBegin, st, cmdEnd);
576 ahprintf(AH,
"COMMIT;\nBEGIN;\n\n");
608 Assert(strcmp(blobte->
desc,
"BLOB METADATA") == 0);
629 inquotes = !inquotes;
636 if (strncmp(en,
"LARGE OBJECT ", 13) == 0)
640 Assert(isdigit((
unsigned char) *en));
643 while (isdigit((
unsigned char) *en))
658 while (isspace((
unsigned char) *en))
674 "SELECT pg_catalog.lo_unlink(oid) "
675 "FROM pg_catalog.pg_largeobject_metadata "
676 "WHERE oid = '%u';\n",
void set_archive_cancel_info(ArchiveHandle *AH, PGconn *conn)
static Datum values[MAXATTR]
#define ngettext(s, p, n)
#define Assert(condition)
#define ALWAYS_SECURE_SEARCH_PATH_SQL
#define fprintf(file, fmt, msg)
static void PGresult * res
int PQcancel(PGcancel *cancel, char *errbuf, int errbufsize)
int PQserverVersion(const PGconn *conn)
PGTransactionStatusType PQtransactionStatus(const PGconn *conn)
int PQconnectionUsedPassword(const PGconn *conn)
const char * PQparameterStatus(const PGconn *conn, const char *paramName)
int PQconnectionNeedsPassword(const PGconn *conn)
char * PQpass(const PGconn *conn)
ConnStatusType PQstatus(const PGconn *conn)
void PQfinish(PGconn *conn)
PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn, PQnoticeProcessor proc, void *arg)
char * PQerrorMessage(const PGconn *conn)
PGconn * PQconnectdbParams(const char *const *keywords, const char *const *values, int expand_dbname)
char * PQgetvalue(const PGresult *res, int tup_num, int field_num)
PGresult * PQgetResult(PGconn *conn)
ExecStatusType PQresultStatus(const PGresult *res)
int PQputCopyEnd(PGconn *conn, const char *errormsg)
int PQntuples(const PGresult *res)
int PQputCopyData(PGconn *conn, const char *buffer, int nbytes)
PGresult * PQexec(PGconn *conn, const char *query)
void * pg_malloc(size_t size)
char * pg_strdup(const char *in)
static const JsonPathKeyword keywords[]
#define pg_log_error(...)
#define pg_log_error_detail(...)
void warn_or_exit_horribly(ArchiveHandle *AH, const char *fmt,...)
TocEntry * getTocEntryByDumpId(ArchiveHandle *AH, DumpId id)
int ahprintf(ArchiveHandle *AH, const char *fmt,...)
void ConnectDatabase(Archive *AHX, const ConnParams *cparams, bool isReconnect)
void ExecuteSqlStatement(Archive *AHX, const char *query)
PGconn * GetConnection(Archive *AHX)
void IssueACLPerBlob(ArchiveHandle *AH, TocEntry *te)
void EndDBCopyMode(Archive *AHX, const char *tocEntryTag)
static void die_on_query_failure(ArchiveHandle *AH, const char *query)
PGresult * ExecuteSqlQuery(Archive *AHX, const char *query, ExecStatusType status)
PGresult * ExecuteSqlQueryForSingleRow(Archive *fout, const char *query)
static void _check_database_version(ArchiveHandle *AH)
void DropLOIfExists(ArchiveHandle *AH, Oid oid)
void ReconnectToServer(ArchiveHandle *AH, const char *dbname)
static void ExecuteSimpleCommands(ArchiveHandle *AH, const char *buf, size_t bufLen)
void StartTransaction(Archive *AHX)
void IssueCommandPerBlob(ArchiveHandle *AH, TocEntry *te, const char *cmdBegin, const char *cmdEnd)
int ExecuteSqlCommandBuf(Archive *AHX, const char *buf, size_t bufLen)
static void ExecuteSqlCommand(ArchiveHandle *AH, const char *qry, const char *desc)
static void notice_processor(void *arg, const char *message)
void DisconnectDatabase(Archive *AHX)
void CommitTransaction(Archive *AHX)
#define pg_log_warning(...)
PQExpBuffer createPQExpBuffer(void)
void resetPQExpBuffer(PQExpBuffer str)
void appendPQExpBufferChar(PQExpBuffer str, char ch)
char * simple_prompt(const char *prompt, bool echo)
PGcancel *volatile connCancel
ArchiverOutput outputKind
char * archiveRemoteVersion