Thread: psql \watch always ignores \pset null

psql \watch always ignores \pset null

From
Fujii Masao
Date:
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



Re: psql \watch always ignores \pset null

From
Tom Lane
Date:
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



Re: psql \watch always ignores \pset null

From
Will Leinweber
Date:
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] 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



Re: psql \watch always ignores \pset null

From
Tom Lane
Date:
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



Re: psql \watch always ignores \pset null

From
Fujii Masao
Date:
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