public inbox for [email protected]  
help / color / mirror / Atom feed
From: Peter Eisentraut <[email protected]>
To: Fabien COELHO <[email protected]>
Cc: [email protected] <[email protected]>
Subject: Re: psql - add SHOW_ALL_RESULTS option
Date: Mon, 27 Dec 2021 13:44:29 +0100
Message-ID: <[email protected]> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2112230703530.2668598@pseudo>
References: <[email protected]>
	<[email protected]>
	<[email protected]>
	<[email protected]>
	<alpine.DEB.2.22.394.2104151336060.191178@pseudo>
	<[email protected]>
	<alpine.DEB.2.22.394.2106121130400.4105466@pseudo>
	<CALDaNm0+pzGgp-M1mAoUVYRtjadbWYuB96J8RaV9iH3+HA8FTA@mail.gmail.com>
	<alpine.DEB.2.22.394.2107151742300.1705285@pseudo>
	<[email protected]>
	<alpine.DEB.2.22.394.2107221655020.25741@pseudo>
	<[email protected]>
	<alpine.DEB.2.22.394.2109251058000.3216312@pseudo>
	<alpine.DEB.2.22.394.2110021622530.2817726@pseudo>
	<[email protected]>
	<alpine.DEB.2.22.394.2112230703530.2668598@pseudo>

On 23.12.21 12:40, Fabien COELHO wrote:
>> In [0], it was reported that certain replication commands result in 
>> infinite loops because of faulty error handling.  This still happens.  
>> I wrote a test for it, attached here.  (I threw in a few more basic 
>> tests, just to have some more coverage that was lacking, and to have a 
>> file to put the new test in.)
> 
> Hmmm… For some unclear reason on errors on a PGRES_COPY_* state 
> PQgetResult keeps on returning an empty result. PQexec manually ignores 
> it, so I did the same with a comment, but for me the real bug is somehow 
> in PQgetResult behavior…
> 
>> In [1], it was reported that server crashes produce duplicate error 
>> messages. This also still happens.  I didn't write a test for it, 
>> maybe you have an idea.  (Obviously, we could check whether the error 
>> message is literally there twice in the output, but that doesn't seem 
>> very general.)  But it's easy to test manually: just have psql 
>> connect, shut down the server, then run a query.
> 
> This is also a feature/bug of libpq which happens to be hidden by 
> PQexec: when one command crashes PQgetResult actually returns *2* 
> results. First one with the FATAL message, second one when libpq figures 
> out that the connection was lost with the second message appended to the 
> first. PQexec just happen to silently ignore the first result. I added a 
> manual reset of the error message when first shown so that it is not 
> shown twice. It is unclear to me whether the reset should be somewhere 
> in libpq instead. I added a voluntary crash at the end of the psql test.

I agree that these two behaviors in libpq are dubious, especially the 
second one.  I want to spend some time analyzing this more and see if 
fixes in libpq might be appropriate.





view thread (104+ messages)  latest in thread

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: psql - add SHOW_ALL_RESULTS option
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox