static void minimal_error_message(PGresult *res);
static void printSSLInfo(void);
+static bool printPsetInfo(const char *param, struct printQueryOpt *popt);
#ifdef WIN32
static void checkWin32Codepage(void);
if (!opt0)
{
- psql_error("\\%s: missing required argument\n", cmd);
- success = false;
+ size_t i;
+ /* list all variables */
+ static const char *const my_list[] = {
+ "border", "columns", "expanded", "fieldsep",
+ "footer", "format", "linestyle", "null",
+ "numericlocale", "pager", "recordsep",
+ "tableattr", "title", "tuples_only",
+ NULL };
+ for (i = 0; my_list[i] != NULL; i++) {
+ printPsetInfo(my_list[i], &pset.popt);
+ }
+
+ success = true;
+
}
else
success = do_pset(opt0, opt1, &pset.popt, pset.quiet);
return false;
}
- if (!quiet)
- printf(_("Output format is %s.\n"), _align2string(popt->topt.format));
}
/* set table line style */
return false;
}
- if (!quiet)
- printf(_("Line style is %s.\n"),
- get_line_style(&popt->topt)->name);
}
/* set border style/width */
if (value)
popt->topt.border = atoi(value);
- if (!quiet)
- printf(_("Border style is %d.\n"), popt->topt.border);
}
/* set expanded/vertical mode */
popt->topt.expanded = ParseVariableBool(value);
else
popt->topt.expanded = !popt->topt.expanded;
- if (!quiet)
- {
- if (popt->topt.expanded == 1)
- printf(_("Expanded display is on.\n"));
- else if (popt->topt.expanded == 2)
- printf(_("Expanded display is used automatically.\n"));
- else
- printf(_("Expanded display is off.\n"));
- }
}
/* locale-aware numeric output */
popt->topt.numericLocale = ParseVariableBool(value);
else
popt->topt.numericLocale = !popt->topt.numericLocale;
- if (!quiet)
- {
- if (popt->topt.numericLocale)
- puts(_("Showing locale-adjusted numeric output."));
- else
- puts(_("Locale-adjusted numeric output is off."));
- }
}
/* null display */
free(popt->nullPrint);
popt->nullPrint = pg_strdup(value);
}
- if (!quiet)
- printf(_("Null display is \"%s\".\n"), popt->nullPrint ? popt->nullPrint : "");
}
/* field separator for unaligned text */
popt->topt.fieldSep.separator = pg_strdup(value);
popt->topt.fieldSep.separator_zero = false;
}
- if (!quiet)
- {
- if (popt->topt.fieldSep.separator_zero)
- printf(_("Field separator is zero byte.\n"));
- else
- printf(_("Field separator is \"%s\".\n"), popt->topt.fieldSep.separator);
- }
}
else if (strcmp(param, "fieldsep_zero") == 0)
free(popt->topt.fieldSep.separator);
popt->topt.fieldSep.separator = NULL;
popt->topt.fieldSep.separator_zero = true;
- if (!quiet)
- printf(_("Field separator is zero byte.\n"));
}
/* record separator for unaligned text */
popt->topt.recordSep.separator = pg_strdup(value);
popt->topt.recordSep.separator_zero = false;
}
- if (!quiet)
- {
- if (popt->topt.recordSep.separator_zero)
- printf(_("Record separator is zero byte.\n"));
- else if (strcmp(popt->topt.recordSep.separator, "\n") == 0)
- printf(_("Record separator is <newline>."));
- else
- printf(_("Record separator is \"%s\".\n"), popt->topt.recordSep.separator);
- }
}
else if (strcmp(param, "recordsep_zero") == 0)
free(popt->topt.recordSep.separator);
popt->topt.recordSep.separator = NULL;
popt->topt.recordSep.separator_zero = true;
- if (!quiet)
- printf(_("Record separator is zero byte.\n"));
}
/* toggle between full and tuples-only format */
popt->topt.tuples_only = ParseVariableBool(value);
else
popt->topt.tuples_only = !popt->topt.tuples_only;
- if (!quiet)
- {
- if (popt->topt.tuples_only)
- puts(_("Showing only tuples."));
- else
- puts(_("Tuples only is off."));
- }
}
/* set title override */
popt->title = NULL;
else
popt->title = pg_strdup(value);
-
- if (!quiet)
- {
- if (popt->title)
- printf(_("Title is \"%s\".\n"), popt->title);
- else
- printf(_("Title is unset.\n"));
- }
}
/* set HTML table tag options */
popt->topt.tableAttr = NULL;
else
popt->topt.tableAttr = pg_strdup(value);
-
- if (!quiet)
- {
- if (popt->topt.tableAttr)
- printf(_("Table attribute is \"%s\".\n"), popt->topt.tableAttr);
- else
- printf(_("Table attributes unset.\n"));
- }
}
/* toggle use of pager */
popt->topt.pager = 0;
else
popt->topt.pager = 1;
- if (!quiet)
- {
- if (popt->topt.pager == 1)
- puts(_("Pager is used for long output."));
- else if (popt->topt.pager == 2)
- puts(_("Pager is always used."));
- else
- puts(_("Pager usage is off."));
- }
}
/* disable "(x rows)" footer */
popt->topt.default_footer = ParseVariableBool(value);
else
popt->topt.default_footer = !popt->topt.default_footer;
- if (!quiet)
- {
- if (popt->topt.default_footer)
- puts(_("Default footer is on."));
- else
- puts(_("Default footer is off."));
- }
}
/* set border style/width */
{
if (value)
popt->topt.columns = atoi(value);
+ }
+ else
+ {
+ psql_error("\\pset: unknown option: %s\n", param);
+ return false;
+ }
+
+ if (!quiet)
+ printPsetInfo(param, &pset.popt);
+
+ return true;
+}
+
+
+static bool
+printPsetInfo(const char *param, struct printQueryOpt *popt)
+{
+ Assert(param != NULL);
+
+ /* show border style/width */
+ if (strcmp(param, "border") == 0)
+ {
+ if (!popt->topt.border)
+ printf(_("Border style (%s) unset.\n"), param);
+ else
+ printf(_("Border style (%s) is %d.\n"), param,
+ popt->topt.border);
+ }
+
+ /* show the target width for the wrapped format */
+ else if (strcmp(param, "columns") == 0)
+ {
+ if (!popt->topt.columns)
+ printf(_("Target width (%s) unset.\n"), param);
+ else
+ printf(_("Target width (%s) is %d.\n"), param,
+ popt->topt.columns);
+ }
+
+ /* show expanded/vertical mode */
+ else if (strcmp(param, "x") == 0 || strcmp(param, "expanded") == 0 || strcmp(param, "vertical") == 0)
+ {
+ if (popt->topt.expanded == 1)
+ printf(_("Expanded display (%s) is on.\n"), param);
+ else if (popt->topt.expanded == 2)
+ printf(_("Expanded display (%s) is used automatically.\n"), param);
+ else
+ printf(_("Expanded display (%s) is off.\n"), param);
+ }
+
+ /* show field separator for unaligned text */
+ else if (strcmp(param, "fieldsep") == 0)
+ {
+ if (popt->topt.fieldSep.separator_zero)
+ printf(_("Field separator (%s) is zero byte.\n"), param);
+ else
+ printf(_("Field separator (%s) is \"%s\".\n"), param,
+ popt->topt.fieldSep.separator);
+ }
+
+ else if (strcmp(param, "fieldsep_zero") == 0)
+ {
+ printf(_("Field separator (%s) is zero byte.\n"), param);
+ }
+
+ /* show disable "(x rows)" footer */
+ else if (strcmp(param, "footer") == 0)
+ {
+ if (popt->topt.default_footer)
+ printf(_("Default footer (%s) is on.\n"), param);
+ else
+ printf(_("Default footer (%s) is off."), param);
+ }
+
+ /* show format */
+ else if (strcmp(param, "format") == 0)
+ {
+ if (!popt->topt.format)
+ printf(_("Output format (%s) is aligned.\n"), param);
+ else
+ printf(_("Output format (%s) is %s.\n"), param,
+ _align2string(popt->topt.format));
+ }
+
+ /* show table line style */
+ else if (strcmp(param, "linestyle") == 0)
+ {
+ printf(_("Line style (%s) is %s.\n"), param,
+ get_line_style(&popt->topt)->name);
+ }
+
+ /* show null display */
+ else if (strcmp(param, "null") == 0)
+ {
+ printf(_("Null display (%s) is \"%s\".\n"), param,
+ popt->nullPrint ? popt->nullPrint : "");
+ }
+
+ /* show locale-aware numeric output */
+ else if (strcmp(param, "numericlocale") == 0)
+ {
+ if (popt->topt.numericLocale)
+ printf(_("Locale-adjusted numeric output (%s) is on.\n"), param);
+ else
+ printf(_("Locale-adjusted numeric output (%s) is off.\n"), param);
+ }
+
+ /* show toggle use of pager */
+ else if (strcmp(param, "pager") == 0)
+ {
+ if (popt->topt.pager == 1)
+ printf(_("Pager (%s) is used for long output.\n"), param);
+ else if (popt->topt.pager == 2)
+ printf(_("Pager (%s) is always used.\n"), param);
+ else
+ printf(_("Pager (%s) usage is off.\n"), param);
+ }
+
+ /* show record separator for unaligned text */
+ else if (strcmp(param, "recordsep") == 0)
+ {
+ if (popt->topt.recordSep.separator_zero)
+ printf(_("Record separator (%s) is zero byte.\n"), param);
+ else if (strcmp(popt->topt.recordSep.separator, "\n") == 0)
+ printf(_("Record separator (%s) is <newline>.\n"), param);
+ else
+ printf(_("Record separator (%s) is \"%s\".\n"), param,
+ popt->topt.recordSep.separator);
+ }
+
+ else if (strcmp(param, "recordsep_zero") == 0)
+ {
+ printf(_("Record separator (%s) is zero byte.\n"), param);
+ }
+
+ /* show HTML table tag options */
+ else if (strcmp(param, "T") == 0 || strcmp(param, "tableattr") == 0)
+ {
+ if (popt->topt.tableAttr)
+ printf(_("Table attribute (%s) is \"%s\".\n"), param,
+ popt->topt.tableAttr);
+ else
+ printf(_("Table attributes (%s) unset.\n"), param);
+ }
- if (!quiet)
- printf(_("Target width is %d.\n"), popt->topt.columns);
+ /* show title override */
+ else if (strcmp(param, "title") == 0)
+ {
+ if (popt->title)
+ printf(_("Title (%s) is \"%s\".\n"), param, popt->title);
+ else
+ printf(_("Title (%s) unset.\n"), param);
+ }
+
+ /* show toggle between full and tuples-only format */
+ else if (strcmp(param, "t") == 0 || strcmp(param, "tuples_only") == 0)
+ {
+ if (popt->topt.tuples_only)
+ printf(_("Tuples only (%s) is on.\n"), param);
+ else
+ printf(_("Tuples only (%s) is off.\n"), param);
}
else