PL/pgSQL THEN binging in condition - Mailing list pgsql-bugs

From PetSerAl
Subject PL/pgSQL THEN binging in condition
Date
Msg-id CAKygsHSpPYjBuh=02bdwSHMSa2RZwwn7fxUKirGYB67SMj1Sbg@mail.gmail.com
Whole thread Raw
Responses Re: PL/pgSQL THEN binging in condition
List 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.

pgsql-bugs by date:

Previous
From: Tom Lane
Date:
Subject: Re: BUG #18621: postgres_fdw cannot work with tables that use schemaless functions in triggers
Next
From: Pavel Stehule
Date:
Subject: Re: PL/pgSQL THEN binging in condition