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