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