summaryrefslogtreecommitdiffstats
path: root/src/bin/psql/settings.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/bin/psql/settings.h169
1 files changed, 169 insertions, 0 deletions
diff --git a/src/bin/psql/settings.h b/src/bin/psql/settings.h
new file mode 100644
index 0000000..83f2e6f
--- /dev/null
+++ b/src/bin/psql/settings.h
@@ -0,0 +1,169 @@
+/*
+ * psql - the PostgreSQL interactive terminal
+ *
+ * Copyright (c) 2000-2021, PostgreSQL Global Development Group
+ *
+ * src/bin/psql/settings.h
+ */
+#ifndef SETTINGS_H
+#define SETTINGS_H
+
+#include "fe_utils/print.h"
+#include "variables.h"
+
+#define DEFAULT_CSV_FIELD_SEP ','
+#define DEFAULT_FIELD_SEP "|"
+#define DEFAULT_RECORD_SEP "\n"
+
+#if defined(WIN32) || defined(__CYGWIN__)
+#define DEFAULT_EDITOR "notepad.exe"
+/* no DEFAULT_EDITOR_LINENUMBER_ARG for Notepad */
+#else
+#define DEFAULT_EDITOR "vi"
+#define DEFAULT_EDITOR_LINENUMBER_ARG "+"
+#endif
+
+#define DEFAULT_PROMPT1 "%/%R%x%# "
+#define DEFAULT_PROMPT2 "%/%R%x%# "
+#define DEFAULT_PROMPT3 ">> "
+
+/*
+ * Note: these enums should generally be chosen so that zero corresponds
+ * to the default behavior.
+ */
+
+typedef enum
+{
+ PSQL_ECHO_NONE,
+ PSQL_ECHO_QUERIES,
+ PSQL_ECHO_ERRORS,
+ PSQL_ECHO_ALL
+} PSQL_ECHO;
+
+typedef enum
+{
+ PSQL_ECHO_HIDDEN_OFF,
+ PSQL_ECHO_HIDDEN_ON,
+ PSQL_ECHO_HIDDEN_NOEXEC
+} PSQL_ECHO_HIDDEN;
+
+typedef enum
+{
+ PSQL_ERROR_ROLLBACK_OFF,
+ PSQL_ERROR_ROLLBACK_INTERACTIVE,
+ PSQL_ERROR_ROLLBACK_ON
+} PSQL_ERROR_ROLLBACK;
+
+typedef enum
+{
+ PSQL_COMP_CASE_PRESERVE_UPPER,
+ PSQL_COMP_CASE_PRESERVE_LOWER,
+ PSQL_COMP_CASE_UPPER,
+ PSQL_COMP_CASE_LOWER
+} PSQL_COMP_CASE;
+
+typedef enum
+{
+ hctl_none = 0,
+ hctl_ignorespace = 1,
+ hctl_ignoredups = 2,
+ hctl_ignoreboth = hctl_ignorespace | hctl_ignoredups
+} HistControl;
+
+enum trivalue
+{
+ TRI_DEFAULT,
+ TRI_NO,
+ TRI_YES
+};
+
+typedef struct _psqlSettings
+{
+ PGconn *db; /* connection to backend */
+ int encoding; /* client_encoding */
+ FILE *queryFout; /* where to send the query results */
+ bool queryFoutPipe; /* queryFout is from a popen() */
+
+ FILE *copyStream; /* Stream to read/write for \copy command */
+
+ PGresult *last_error_result; /* most recent error result, if any */
+
+ printQueryOpt popt; /* The active print format settings */
+
+ char *gfname; /* one-shot file output argument for \g */
+ printQueryOpt *gsavepopt; /* if not null, saved print format settings */
+
+ char *gset_prefix; /* one-shot prefix argument for \gset */
+ bool gdesc_flag; /* one-shot request to describe query results */
+ bool gexec_flag; /* one-shot request to execute query results */
+ bool crosstab_flag; /* one-shot request to crosstab results */
+ char *ctv_args[4]; /* \crosstabview arguments */
+
+ bool notty; /* stdin or stdout is not a tty (as determined
+ * on startup) */
+ enum trivalue getPassword; /* prompt the user for a username and password */
+ FILE *cur_cmd_source; /* describe the status of the current main
+ * loop */
+ bool cur_cmd_interactive;
+ int sversion; /* backend server version */
+ const char *progname; /* in case you renamed psql */
+ char *inputfile; /* file being currently processed, if any */
+ uint64 lineno; /* also for error reporting */
+ uint64 stmt_lineno; /* line number inside the current statement */
+
+ bool timing; /* enable timing of all queries */
+
+ FILE *logfile; /* session log file handle */
+
+ VariableSpace vars; /* "shell variable" repository */
+
+ /*
+ * If we get a connection failure, the now-unusable PGconn is stashed here
+ * until we can successfully reconnect. Never attempt to do anything with
+ * this PGconn except extract parameters for a \connect attempt.
+ */
+ PGconn *dead_conn; /* previous connection to backend */
+
+ /*
+ * The remaining fields are set by assign hooks associated with entries in
+ * "vars". They should not be set directly except by those hook
+ * functions.
+ */
+ bool autocommit;
+ bool on_error_stop;
+ bool quiet;
+ bool singleline;
+ bool singlestep;
+ bool hide_compression;
+ bool hide_tableam;
+ int fetch_count;
+ int histsize;
+ int ignoreeof;
+ PSQL_ECHO echo;
+ PSQL_ECHO_HIDDEN echo_hidden;
+ PSQL_ERROR_ROLLBACK on_error_rollback;
+ PSQL_COMP_CASE comp_case;
+ HistControl histcontrol;
+ const char *prompt1;
+ const char *prompt2;
+ const char *prompt3;
+ PGVerbosity verbosity; /* current error verbosity level */
+ PGContextVisibility show_context; /* current context display level */
+} PsqlSettings;
+
+extern PsqlSettings pset;
+
+
+#ifndef EXIT_SUCCESS
+#define EXIT_SUCCESS 0
+#endif
+
+#ifndef EXIT_FAILURE
+#define EXIT_FAILURE 1
+#endif
+
+#define EXIT_BADCONN 2
+
+#define EXIT_USER 3
+
+#endif