> guilla...@lelarge.info wrote:
> 
> This won't answer your question

It has been answered now. See my "case closed" email here:

www.postgresql.org/message-id/B33C40D9-2B79-44C7-B527-86E672BEA71A%40yugabyte.com

> …but still… I usually really like your scripts, it's nicely written, but this 
> part seems really weird to me:
> 
>> b...@yugabyte.com wrote:
>> 
>> -- No error
>> do $body$
>> declare
>>   p int not null := 0;
>> begin
>>   for p in (
>>     select pid
>>     from pg_stat_activity
>>     where backend_type =  'client backend'
>>     and   pid          <> pg_backend_pid())
>>   loop
>>     perform pg_terminate_backend(p);
>>   end loop;
>> end;
>> $body$;
> 
> While your script works great, I'm wondering why you don't write it this way:
> 
> SELECT pg_terminate_backend(pid) FROM pg_stat_activity
> WHERE backend_type =  'client backend' AND pid <> pg_backend_pid();
> 
> As it is less code, it's quicker to understand what it does.

Well, yes… I have often been accused of being anally fixated on details—and of 
verbosity. This is just the old chestnut that a "select" statement shouldn't 
have side effects. "pg_terminate_backend(p)" ought, by the book, to be a 
procedure. But I suppose that it dates from the time when PG had only 
user-defined functions (and no shipped procedures). And "perform" makes a 
function feel to me to be a bit more like a procedure than just selecting it 
feels. Others might well disagree…

Reply via email to