Re: FOR integer loop bug? - Mailing list pgsql-general

From Adrian Klaver
Subject Re: FOR integer loop bug?
Date
Msg-id e06ecb67-8b02-68c6-e5d3-0a99b61e6a24@aklaver.com
Whole thread Raw
In response to Re: FOR integer loop bug?  (Pavel Stehule <pavel.stehule@gmail.com>)
Responses Re: FOR integer loop bug?  (Ron <ronljohnsonjr@gmail.com>)
List pgsql-general
On 4/8/22 10:58 AM, Pavel Stehule wrote:
> 
> 
> pá 8. 4. 2022 v 19:56 odesílatel Adrian Klaver 
> <a
> 
>     Why is the three period form allowed through and why does it produce no
>     result?
> 
> 
> Maybe
> 
> (2022-04-08 19:57:57) postgres=# select .10;
> ┌──────────┐
> │ ?column? │
> ╞══════════╡
> │     0.10 │
> └──────────┘
> (1 row)

Alright so 1...10 is taken as 1::integer .. 0.10::integer CAST results 
in 0 and ends up as 1..0. This then is covered by:

"If the lower bound is greater than the upper bound (or less than, in 
the REVERSE case), the loop body is not executed at all. No error is 
raised."

Confirmed by:

CREATE OR REPLACE FUNCTION utility.for_loop_test()
  RETURNS void
  LANGUAGE plpgsql
AS $function$
BEGIN
     FOR i IN REVERSE  1...10 LOOP
         RAISE NOTICE '%', i;
     END LOOP;
END;

$function$
;

select for_loop_test();
NOTICE:  1
NOTICE:  0
  for_loop_test
---------------

Hmm, I'm going to have to think on this.

> 
> 
>     -- 
>     Adrian Klaver
>     adrian.klaver@aklaver.com <mailto:adrian.klaver@aklaver.com>
> 
> 


-- 
Adrian Klaver
adrian.klaver@aklaver.com



pgsql-general by date:

Previous
From: Ron
Date:
Subject: Re: Long running processes and commit writing to disk
Next
From: Ron
Date:
Subject: Re: FOR integer loop bug?