Re: [HACKERS] psql output change in 9.4
Bruce Momjian br...@momjian.us writes: On Sun, Oct 12, 2014 at 12:17:31AM -0400, Peter Eisentraut wrote: Patch attached. I think this would be for 9.5 only, at this point. Funny, I was *just* working on that, too. I propose a patch that reverts the output to how it was in 9.3 (without anything in parentheses), and implements the output of \pset without any arguments separately, thus: Agreed. Works for me, too. If we are reverting to 9.3's output in the base case, I think this *does* need to get back-patched into 9.4. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] psql output change in 9.4
On 10/11/14 8:25 PM, Bruce Momjian wrote: On Mon, Aug 11, 2014 at 02:28:45PM -0400, Robert Haas wrote: On Mon, Aug 11, 2014 at 1:52 PM, Tom Lane t...@sss.pgh.pa.us wrote: Robert Haas robertmh...@gmail.com writes: On Fri, Aug 8, 2014 at 9:34 PM, Peter Eisentraut pete...@gmx.net wrote: What is the point of that change? I think the output could justly be criticized for making it insufficiently clear that the parenthesized text is, in fact, the name of the pset parameter. Quite; that wasn't apparent to me either. We could write something like: Border style (parameter border) is 1. How about Border style (\pset border) is 1. That would look just fine as a response to \a or \x, but I'm not sure it would look as good as a response to \pset, which prints out that line for every parameter (why does every line say \pset when the command I just typed is \pset?). However, I can certainly live with it if others prefer that to what I suggested. I went with quoting the pset variable: test= \a Output format (format) is aligned. test= \x Expanded display (expanded) is on. Patch attached. I think this would be for 9.5 only, at this point. Funny, I was *just* working on that, too. I propose a patch that reverts the output to how it was in 9.3 (without anything in parentheses), and implements the output of \pset without any arguments separately, thus: # \a Output format is unaligned. # \pset border 2 columns0 expanded auto fieldsep '|' fieldsep_zero off footer on format unaligned linestyle unicode null '' numericlocale off pager 1 recordsep '\n' recordsep_zero off tableattr title tuples_onlyoff (This is also symmetric with what \set outputs.) On closer examination, the change in 9.4, besides having the aesthetic issues discussed earlier, also created some outright incorrect output by mixing together fieldsep/fieldsep_zero and recordsep/recordsep_zero. These issues become much clearer if you separate the case of this is what you just set from these are all the current settings. commit 42b78a38970808611133031c9e6b30466fdd84b4 Author: Peter Eisentraut pete...@gmx.net Date: Sun Oct 12 00:08:52 2014 -0400 Fix \pset without arguments diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 0d9b677..d8c477a 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -69,6 +69,7 @@ static void minimal_error_message(PGresult *res); static void printSSLInfo(void); static bool printPsetInfo(const char *param, struct printQueryOpt *popt); +static char *pset_value_string(const char *param, struct printQueryOpt *popt); #ifdef WIN32 static void checkWin32Codepage(void); @@ -1050,15 +1051,19 @@ exec_command(const char *cmd, int i; static const char *const my_list[] = { -border, columns, expanded, fieldsep, +border, columns, expanded, fieldsep, fieldsep_zero, footer, format, linestyle, null, -numericlocale, pager, recordsep, +numericlocale, pager, recordsep, recordsep_zero, tableattr, title, tuples_only, NULL }; for (i = 0; my_list[i] != NULL; i++) -printPsetInfo(my_list[i], pset.popt); + { +char *val = pset_value_string(my_list[i], pset.popt); +printf(%-14s %s\n, my_list[i], val); +free(val); + } success = true; } @@ -2199,10 +2204,6 @@ process_file(char *filename, bool single_txn, bool use_relative_path) -/* - * do_pset - * - */ static const char * _align2string(enum printFormat in) { @@ -2237,6 +2238,10 @@ _align2string(enum printFormat in) } +/* + * do_pset + * + */ bool do_pset(const char *param, const char *value, printQueryOpt *popt, bool quiet) { @@ -2447,80 +2452,69 @@ printPsetInfo(const char *param, struct printQueryOpt *popt) /* 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); - } + printf(_(Border style is %d.\n), 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); + printf(_(Target width is unset.\n)); else - printf(_(Target width (%s) is %d.\n), param, - popt-topt.columns); + printf(_(Target width is %d.\n), 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); + printf(_(Expanded display is on.\n)); else if (popt-topt.expanded == 2) - printf(_(Expanded display (%s) is used automatically.\n), param); + printf(_(Expanded display is used automatically.\n)); else - printf(_(Expanded display (%s) is off.\n),
Re: [HACKERS] psql output change in 9.4
On Fri, Aug 8, 2014 at 9:34 PM, Peter Eisentraut pete...@gmx.net wrote: This is 9.3: peter=# \a Output format is unaligned. peter=# \a Output format is aligned. peter=# \x Expanded display is on. peter=# \x Expanded display is off. This is new in 9.4: peter=# \a Output format (format) is unaligned. peter=# \a Output format (format) is aligned. peter=# \x Expanded display (expanded) is on. peter=# \x Expanded display (expanded) is off. What is the point of that change? I suppose it is so that you can use \pset without arguments to show all settings: peter=# \pset Border style (border) is 1. Target width (columns) unset. Expanded display (expanded) is off. ... But those are unrelated features, and the changed output doesn't make any sense in the contexts I show above. I think this should be reverted, and the \pset output should be implemented separately. Yes, the \pset patch (commit c64e68fd9f1132fec563fb5de53dc3bcccb5fc3b) caused this behavior change. I can't remember whether I noticed it at the time and thought it was a reasonable change, or whether I didn't notice it when committing. Either way, clarifying the name of the parameter which is being displayed does not seem like particularly bad idea to me even in the contexts you mention. I've certainly run commands like \a and \t and then said to myself, crap, which pset parameter does this correspond to?. And there was no easy way to figure it out. I think the output could justly be criticized for making it insufficiently clear that the parenthesized text is, in fact, the name of the pset parameter. We could write something like: Border style (parameter border) is 1. But I don't know whether that would be considered an improvement or just extra verbosity. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] psql output change in 9.4
Robert Haas robertmh...@gmail.com writes: On Fri, Aug 8, 2014 at 9:34 PM, Peter Eisentraut pete...@gmx.net wrote: What is the point of that change? I think the output could justly be criticized for making it insufficiently clear that the parenthesized text is, in fact, the name of the pset parameter. Quite; that wasn't apparent to me either. We could write something like: Border style (parameter border) is 1. How about Border style (\pset border) is 1. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] psql output change in 9.4
2014-08-11 19:52 GMT+02:00 Tom Lane t...@sss.pgh.pa.us: Robert Haas robertmh...@gmail.com writes: On Fri, Aug 8, 2014 at 9:34 PM, Peter Eisentraut pete...@gmx.net wrote: What is the point of that change? I think the output could justly be criticized for making it insufficiently clear that the parenthesized text is, in fact, the name of the pset parameter. Quite; that wasn't apparent to me either. We could write something like: Border style (parameter border) is 1. How about Border style (\pset border) is 1. +1 Pavel regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] psql output change in 9.4
On Mon, Aug 11, 2014 at 1:52 PM, Tom Lane t...@sss.pgh.pa.us wrote: Robert Haas robertmh...@gmail.com writes: On Fri, Aug 8, 2014 at 9:34 PM, Peter Eisentraut pete...@gmx.net wrote: What is the point of that change? I think the output could justly be criticized for making it insufficiently clear that the parenthesized text is, in fact, the name of the pset parameter. Quite; that wasn't apparent to me either. We could write something like: Border style (parameter border) is 1. How about Border style (\pset border) is 1. That would look just fine as a response to \a or \x, but I'm not sure it would look as good as a response to \pset, which prints out that line for every parameter (why does every line say \pset when the command I just typed is \pset?). However, I can certainly live with it if others prefer that to what I suggested. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
[HACKERS] psql output change in 9.4
This is 9.3: peter=# \a Output format is unaligned. peter=# \a Output format is aligned. peter=# \x Expanded display is on. peter=# \x Expanded display is off. This is new in 9.4: peter=# \a Output format (format) is unaligned. peter=# \a Output format (format) is aligned. peter=# \x Expanded display (expanded) is on. peter=# \x Expanded display (expanded) is off. What is the point of that change? I suppose it is so that you can use \pset without arguments to show all settings: peter=# \pset Border style (border) is 1. Target width (columns) unset. Expanded display (expanded) is off. ... But those are unrelated features, and the changed output doesn't make any sense in the contexts I show above. I think this should be reverted, and the \pset output should be implemented separately. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers