1 /* 2 * common.h 3 * Common support routines for bin/scripts/ 4 * 5 * Copyright (c) 2003-2020, PostgreSQL Global Development Group 6 * 7 * src/bin/scripts/common.h 8 */ 9 #ifndef COMMON_H 10 #define COMMON_H 11 12 #include "common/username.h" 13 #include "getopt_long.h" /* pgrminclude ignore */ 14 #include "libpq-fe.h" 15 #include "pqexpbuffer.h" /* pgrminclude ignore */ 16 17 enum trivalue 18 { 19 TRI_DEFAULT, 20 TRI_NO, 21 TRI_YES 22 }; 23 24 /* Parameters needed by connectDatabase/connectMaintenanceDatabase */ 25 typedef struct _connParams 26 { 27 /* These fields record the actual command line parameters */ 28 const char *dbname; /* this may be a connstring! */ 29 const char *pghost; 30 const char *pgport; 31 const char *pguser; 32 enum trivalue prompt_password; 33 /* If not NULL, this overrides the dbname obtained from command line */ 34 /* (but *only* the DB name, not anything else in the connstring) */ 35 const char *override_dbname; 36 } ConnParams; 37 38 typedef void (*help_handler) (const char *progname); 39 40 extern void handle_help_version_opts(int argc, char *argv[], 41 const char *fixed_progname, 42 help_handler hlp); 43 44 extern PGconn *connectDatabase(const ConnParams *cparams, 45 const char *progname, 46 bool echo, bool fail_ok, 47 bool allow_password_reuse); 48 49 extern PGconn *connectMaintenanceDatabase(ConnParams *cparams, 50 const char *progname, bool echo); 51 52 extern void disconnectDatabase(PGconn *conn); 53 54 extern PGresult *executeQuery(PGconn *conn, const char *query, bool echo); 55 56 extern void executeCommand(PGconn *conn, const char *query, bool echo); 57 58 extern bool executeMaintenanceCommand(PGconn *conn, const char *query, 59 bool echo); 60 61 extern bool consumeQueryResult(PGconn *conn); 62 63 extern bool processQueryResult(PGconn *conn, PGresult *result); 64 65 extern void splitTableColumnsSpec(const char *spec, int encoding, 66 char **table, const char **columns); 67 68 extern void appendQualifiedRelation(PQExpBuffer buf, const char *name, 69 PGconn *conn, bool echo); 70 71 extern bool yesno_prompt(const char *question); 72 73 #endif /* COMMON_H */ 74