On 4/8/22 13:07, Adrian Klaver wrote:
> 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.
The only thinking is: "That's a bug waiting to happen!"
--
Angular momentum makes the world go 'round.