1 /* 2 * psql - the PostgreSQL interactive terminal 3 * 4 * Copyright (c) 2000-2018, PostgreSQL Global Development Group 5 * 6 * src/bin/psql/settings.h 7 */ 8 #ifndef SETTINGS_H 9 #define SETTINGS_H 10 11 12 #include "variables.h" 13 #include "fe_utils/print.h" 14 15 #define DEFAULT_FIELD_SEP "|" 16 #define DEFAULT_RECORD_SEP "\n" 17 18 #if defined(WIN32) || defined(__CYGWIN__) 19 #define DEFAULT_EDITOR "notepad.exe" 20 /* no DEFAULT_EDITOR_LINENUMBER_ARG for Notepad */ 21 #else 22 #define DEFAULT_EDITOR "vi" 23 #define DEFAULT_EDITOR_LINENUMBER_ARG "+" 24 #endif 25 26 #define DEFAULT_PROMPT1 "%/%R%# " 27 #define DEFAULT_PROMPT2 "%/%R%# " 28 #define DEFAULT_PROMPT3 ">> " 29 30 /* 31 * Note: these enums should generally be chosen so that zero corresponds 32 * to the default behavior. 33 */ 34 35 typedef enum 36 { 37 PSQL_ECHO_NONE, 38 PSQL_ECHO_QUERIES, 39 PSQL_ECHO_ERRORS, 40 PSQL_ECHO_ALL 41 } PSQL_ECHO; 42 43 typedef enum 44 { 45 PSQL_ECHO_HIDDEN_OFF, 46 PSQL_ECHO_HIDDEN_ON, 47 PSQL_ECHO_HIDDEN_NOEXEC 48 } PSQL_ECHO_HIDDEN; 49 50 typedef enum 51 { 52 PSQL_ERROR_ROLLBACK_OFF, 53 PSQL_ERROR_ROLLBACK_INTERACTIVE, 54 PSQL_ERROR_ROLLBACK_ON 55 } PSQL_ERROR_ROLLBACK; 56 57 typedef enum 58 { 59 PSQL_COMP_CASE_PRESERVE_UPPER, 60 PSQL_COMP_CASE_PRESERVE_LOWER, 61 PSQL_COMP_CASE_UPPER, 62 PSQL_COMP_CASE_LOWER 63 } PSQL_COMP_CASE; 64 65 typedef enum 66 { 67 hctl_none = 0, 68 hctl_ignorespace = 1, 69 hctl_ignoredups = 2, 70 hctl_ignoreboth = hctl_ignorespace | hctl_ignoredups 71 } HistControl; 72 73 enum trivalue 74 { 75 TRI_DEFAULT, 76 TRI_NO, 77 TRI_YES 78 }; 79 80 typedef struct _psqlSettings 81 { 82 PGconn *db; /* connection to backend */ 83 int encoding; /* client_encoding */ 84 FILE *queryFout; /* where to send the query results */ 85 bool queryFoutPipe; /* queryFout is from a popen() */ 86 87 FILE *copyStream; /* Stream to read/write for \copy command */ 88 89 PGresult *last_error_result; /* most recent error result, if any */ 90 91 printQueryOpt popt; 92 93 char *gfname; /* one-shot file output argument for \g */ 94 bool g_expanded; /* one-shot expanded output requested via \gx */ 95 char *gset_prefix; /* one-shot prefix argument for \gset */ 96 bool gdesc_flag; /* one-shot request to describe query results */ 97 bool gexec_flag; /* one-shot request to execute query results */ 98 bool crosstab_flag; /* one-shot request to crosstab results */ 99 char *ctv_args[4]; /* \crosstabview arguments */ 100 101 bool notty; /* stdin or stdout is not a tty (as determined 102 * on startup) */ 103 enum trivalue getPassword; /* prompt the user for a username and password */ 104 FILE *cur_cmd_source; /* describe the status of the current main 105 * loop */ 106 bool cur_cmd_interactive; 107 int sversion; /* backend server version */ 108 const char *progname; /* in case you renamed psql */ 109 char *inputfile; /* file being currently processed, if any */ 110 uint64 lineno; /* also for error reporting */ 111 uint64 stmt_lineno; /* line number inside the current statement */ 112 113 bool timing; /* enable timing of all queries */ 114 115 FILE *logfile; /* session log file handle */ 116 117 VariableSpace vars; /* "shell variable" repository */ 118 119 /* 120 * The remaining fields are set by assign hooks associated with entries in 121 * "vars". They should not be set directly except by those hook 122 * functions. 123 */ 124 bool autocommit; 125 bool on_error_stop; 126 bool quiet; 127 bool singleline; 128 bool singlestep; 129 int fetch_count; 130 int histsize; 131 int ignoreeof; 132 PSQL_ECHO echo; 133 PSQL_ECHO_HIDDEN echo_hidden; 134 PSQL_ERROR_ROLLBACK on_error_rollback; 135 PSQL_COMP_CASE comp_case; 136 HistControl histcontrol; 137 const char *prompt1; 138 const char *prompt2; 139 const char *prompt3; 140 PGVerbosity verbosity; /* current error verbosity level */ 141 PGContextVisibility show_context; /* current context display level */ 142 } PsqlSettings; 143 144 extern PsqlSettings pset; 145 146 147 #ifndef EXIT_SUCCESS 148 #define EXIT_SUCCESS 0 149 #endif 150 151 #ifndef EXIT_FAILURE 152 #define EXIT_FAILURE 1 153 #endif 154 155 #define EXIT_BADCONN 2 156 157 #define EXIT_USER 3 158 159 #endif 160