Commit a7eece4f authored by Tom Lane's avatar Tom Lane

Fix breakage of "\pset format latex".

Commit eaf746a5 unintentionally made psql's "latex" output format
inaccessible, since not only "latex" but all abbreviations of it
were considered ambiguous against "latex-longtable".  Let's go
back to the longstanding behavior that all shortened versions
mean "latex", and you have to write at least "latex-" to get
"latex-longtable".  This leaves the only difference from pre-v12
behavior being that "\pset format a" is considered ambiguous.

The fact that the regression tests didn't expose this is pretty bad,
but fixing it is material for a separate commit.

Discussion: https://postgr.es/m/cb7e1caf-3ea6-450d-af28-f524903a030c@manitou-mail.org
parent 36d442a2
...@@ -3698,7 +3698,6 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet) ...@@ -3698,7 +3698,6 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
{"asciidoc", PRINT_ASCIIDOC}, {"asciidoc", PRINT_ASCIIDOC},
{"html", PRINT_HTML}, {"html", PRINT_HTML},
{"latex", PRINT_LATEX}, {"latex", PRINT_LATEX},
{"latex-longtable", PRINT_LATEX_LONGTABLE},
{"troff-ms", PRINT_TROFF_MS}, {"troff-ms", PRINT_TROFF_MS},
{"unaligned", PRINT_UNALIGNED}, {"unaligned", PRINT_UNALIGNED},
{"wrapped", PRINT_WRAPPED} {"wrapped", PRINT_WRAPPED}
...@@ -3725,13 +3724,22 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet) ...@@ -3725,13 +3724,22 @@ do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet)
} }
} }
} }
if (match_pos < 0) if (match_pos >= 0)
popt->topt.format = formats[match_pos].number;
else if (pg_strncasecmp("latex-longtable", value, vallen) == 0)
{
/*
* We must treat latex-longtable specially because latex is a
* prefix of it; if both were in the table above, we'd think
* "latex" is ambiguous.
*/
popt->topt.format = PRINT_LATEX_LONGTABLE;
}
else
{ {
psql_error("\\pset: allowed formats are aligned, asciidoc, html, latex, latex-longtable, troff-ms, unaligned, wrapped\n"); psql_error("\\pset: allowed formats are aligned, asciidoc, html, latex, latex-longtable, troff-ms, unaligned, wrapped\n");
return false; return false;
} }
else
popt->topt.format = formats[match_pos].number;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment