psql \watch always ignores \pset null

Started by Fujii Masaoabout 11 years ago5 messages
#1Fujii Masao
masao.fujii@gmail.com

Hi,

/*
* Set up rendering options, in particular, disable the pager, because
* nobody wants to be prompted while watching the output of 'watch'.
*/
myopt.nullPrint = NULL;
myopt.topt.pager = 0;

I found psql's \watch command always ignores \pset null setting.
The above source code comment explains why it does,
but I'd like to see the specified string for null value even in \watch's
output, in order to distinguish null and an empty value. Thought?
Is there any reason why \watch must ignore \pset null setting?

Regards,

--
Fujii Masao

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Fujii Masao (#1)
Re: psql \watch always ignores \pset null

Fujii Masao <masao.fujii@gmail.com> writes:

Hi,

/*
* Set up rendering options, in particular, disable the pager, because
* nobody wants to be prompted while watching the output of 'watch'.
*/
myopt.nullPrint = NULL;
myopt.topt.pager = 0;

I found psql's \watch command always ignores \pset null setting.
The above source code comment explains why it does,
but I'd like to see the specified string for null value even in \watch's
output, in order to distinguish null and an empty value. Thought?
Is there any reason why \watch must ignore \pset null setting?

Hmmm ... the comment offers a reasonable argument for forcing pager = 0,
but I agree the nullPrint change is not adequately explained.
Will, do you remember why you did that?

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

#3Will Leinweber
will@heroku.com
In reply to: Tom Lane (#2)
Re: psql \watch always ignores \pset null

On Tue, Nov 18, 2014 at 9:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Fujii Masao <masao.fujii@gmail.com> writes:

Hi,

/*
* Set up rendering options, in particular, disable the pager, because
* nobody wants to be prompted while watching the output of 'watch'.
*/
myopt.nullPrint = NULL;
myopt.topt.pager = 0;

I found psql's \watch command always ignores \pset null setting.
The above source code comment explains why it does,
but I'd like to see the specified string for null value even in \watch's
output, in order to distinguish null and an empty value. Thought?
Is there any reason why \watch must ignore \pset null setting?

Hmmm ... the comment offers a reasonable argument for forcing pager = 0,
but I agree the nullPrint change is not adequately explained.
Will, do you remember why you did that?

regards, tom lane

I tracked down the individual commit[1]https://github.com/will/postgres/commit/c42d29fece16ec9cb13c159b3307ab9fca892eb2 from my history where I added
that. What I added there is very similar to sections in
src/bin/psql/describe.c. I can't remember specifically my reasoning
then, but it's likely I copied the patterns there while getting things
working.

I do still think it's important to remove the pager, but the nullPrint
is probably a mistake.

[1]: https://github.com/will/postgres/commit/c42d29fece16ec9cb13c159b3307ab9fca892eb2

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

#4Tom Lane
tgl@sss.pgh.pa.us
In reply to: Will Leinweber (#3)
Re: psql \watch always ignores \pset null

Will Leinweber <will@heroku.com> writes:

On Tue, Nov 18, 2014 at 9:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Fujii Masao <masao.fujii@gmail.com> writes:

Is there any reason why \watch must ignore \pset null setting?

Hmmm ... the comment offers a reasonable argument for forcing pager = 0,
but I agree the nullPrint change is not adequately explained.
Will, do you remember why you did that?

I tracked down the individual commit[1] from my history where I added
that. What I added there is very similar to sections in
src/bin/psql/describe.c. I can't remember specifically my reasoning
then, but it's likely I copied the patterns there while getting things
working.
I do still think it's important to remove the pager, but the nullPrint
is probably a mistake.

I took a quick look and noted that the other places where nullPrint is
summarily forced to null are for \d and similar queries. For those,
the code can reasonably have an opinion about what the presentation should
be like, since it knows what SQL query it's issuing. That argument surely
doesn't apply to \watch, so I'm in agreement with Fujii that it'd be
better to respect the user's \pset setting.

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

#5Fujii Masao
masao.fujii@gmail.com
In reply to: Tom Lane (#4)
Re: psql \watch always ignores \pset null

On Wed, Nov 19, 2014 at 3:24 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Will Leinweber <will@heroku.com> writes:

On Tue, Nov 18, 2014 at 9:54 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

Fujii Masao <masao.fujii@gmail.com> writes:

Is there any reason why \watch must ignore \pset null setting?

Hmmm ... the comment offers a reasonable argument for forcing pager = 0,
but I agree the nullPrint change is not adequately explained.
Will, do you remember why you did that?

I tracked down the individual commit[1] from my history where I added
that. What I added there is very similar to sections in
src/bin/psql/describe.c. I can't remember specifically my reasoning
then, but it's likely I copied the patterns there while getting things
working.
I do still think it's important to remove the pager, but the nullPrint
is probably a mistake.

I took a quick look and noted that the other places where nullPrint is
summarily forced to null are for \d and similar queries. For those,
the code can reasonably have an opinion about what the presentation should
be like, since it knows what SQL query it's issuing. That argument surely
doesn't apply to \watch, so I'm in agreement with Fujii that it'd be
better to respect the user's \pset setting.

Thanks! I've just fixed this problem.

Regards,

--
Fujii Masao

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers