34 const char *remoteversion_str;
40 if (remoteversion == 0 || !remoteversion_str)
41 pg_fatal(
"could not get \"server_version\" from libpq");
48 if (remoteversion != PG_VERSION_NUM
49 && (remoteversion < AH->
public.minRemoteVersion ||
52 pg_log_error(
"aborting because of server version mismatch");
54 remoteversion_str,
progname, PG_VERSION);
63 "SELECT pg_catalog.pg_is_in_recovery()");
118 pg_fatal(
"already connected to a database");
130 prompt_password,
true,
255 "query returned %d rows instead of one: %s",
273 fprintf(stderr,
"Executing: '%s'\n\n", qry);
321 const char *qry =
buf;
322 const char *eos =
buf + bufLen;
328 for (; qry < eos; qry++)
346 "could not execute query");
399 pg_fatal(
"error returned by PQputCopyData: %s",
419 if (
buf[bufLen] ==
'\0')
448 pg_fatal(
"error returned by PQputCopyEnd: %s",
460 pg_log_warning(
"unexpected extra results during COPY of table \"%s\"",
492 const char *cmdBegin,
const char *cmdEnd)
501 while ((en = strchr(st,
'\n')) != NULL)
504 ahprintf(AH,
"%s%s%s;\n", cmdBegin, st, cmdEnd);
517 ahprintf(AH,
"COMMIT;\nBEGIN;\n\n");
549 Assert(strcmp(blobte->
desc,
"BLOB METADATA") == 0);
570 inquotes = !inquotes;
577 if (strncmp(en,
"LARGE OBJECT ", 13) == 0)
581 Assert(isdigit((
unsigned char) *en));
584 while (isdigit((
unsigned char) *en))
599 while (isspace((
unsigned char) *en))
615 "SELECT pg_catalog.lo_unlink(oid) "
616 "FROM pg_catalog.pg_largeobject_metadata "
617 "WHERE oid = '%u';\n",
void set_archive_cancel_info(ArchiveHandle *AH, PGconn *conn)
#define ngettext(s, p, n)
#define ALWAYS_SECURE_SEARCH_PATH_SQL
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)
#define fprintf(file, fmt, msg)
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)
char * PQpass(const PGconn *conn)
void PQfinish(PGconn *conn)
PQnoticeProcessor PQsetNoticeProcessor(PGconn *conn, PQnoticeProcessor proc, void *arg)
char * PQerrorMessage(const PGconn *conn)
char * PQgetvalue(const PGresult *res, int tup_num, int field_num)
PGresult * PQgetResult(PGconn *conn)
ExecStatusType PQresultStatus(const PGresult *res)
void PQclear(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)
Assert(PointerIsAligned(start, uint64))
#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 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)
void ConnectDatabaseAhx(Archive *AHX, const ConnParams *cparams, bool isReconnect)
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