PL/pgSQL THEN binging in condition

From: PetSerAl <petseral(at)gmail(dot)com>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Subject: PL/pgSQL THEN binging in condition
Date: 2024-09-17 18:03:52
Message-ID: CAKygsHSpPYjBuh=02bdwSHMSa2RZwwn7fxUKirGYB67SMj1Sbg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

postgres=# SELECT version();
version
------------------------------------------------------------
PostgreSQL 16.4, compiled by Visual C++ build 1940, 64-bit
(1 row)

postgres=# DO $$
postgres$# BEGIN
postgres$# IF
postgres$# CASE
postgres$# WHEN TRUE
postgres$# THEN TRUE
postgres$# END
postgres$# THEN
postgres$# NULL;
postgres$# END IF;
postgres$# END
postgres$# $$;
ERROR: syntax error at end of input
LINE 5: WHEN TRUE
^

It seems error here because first THEN bound to IF statement rather than
CASE expression. Workaround here would be using parenthesis:

postgres=# DO $$
postgres$# BEGIN
postgres$# IF
postgres$# (CASE
postgres$# WHEN TRUE
postgres$# THEN TRUE
postgres$# END)
postgres$# THEN
postgres$# NULL;
postgres$# END IF;
postgres$# END
postgres$# $$;
DO

If behavior can not be changed for compatibility reasons, it at least can
use better error message.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Pavel Stehule 2024-09-17 18:45:55 Re: PL/pgSQL THEN binging in condition
Previous Message Tom Lane 2024-09-17 14:18:45 Re: BUG #18621: postgres_fdw cannot work with tables that use schemaless functions in triggers