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

From Pavel Stehule
Subject Re: FOR integer loop bug?
Date
Msg-id CAFj8pRB9W7q_tW9LqoxZERS7286bdLw4uLSnCd2ww_Ph9SgECw@mail.gmail.com
Whole thread Raw
In response to FOR integer loop bug?  (Adrian Klaver <adrian.klaver@aklaver.com>)
Responses Re: FOR integer loop bug?  (Adrian Klaver <adrian.klaver@aklaver.com>)
List pgsql-general


pá 8. 4. 2022 v 19:56 odesílatel Adrian Klaver <adrian.klaver@aklaver.com> napsal:
Postgres 14.2

In commenting on a SO question I came across the below.

Given:

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

$function$
;

select for_loop_test();
NOTICE:  1
NOTICE:  2
NOTICE:  3
NOTICE:  4
NOTICE:  5
NOTICE:  6
NOTICE:  7
NOTICE:  8
NOTICE:  9
NOTICE:  10

Then, note 1...10:

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

$function$

select for_loop_test();
  for_loop_test
---------------

If you do:

FOR i IN 1....10 LOOP

or

FOR i IN 1.10 LOOP

You get:

ERROR:  syntax error at or near ".."
LINE 6:     FOR i IN 1....10 LOOP

ERROR:  syntax error at or near "1.10"
LINE 6:     FOR i IN 1.10 LOOP

respectively.

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)

 

--
Adrian Klaver
adrian.klaver@aklaver.com


pgsql-general by date:

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