Hello,

the construct surprised me when I saw it in the function the first time,
but it is correct and works as expected - it allows writing the function as
SQL instead of PLPGSQL while it ensures that for a parameter null value it
evaluates to true instead of filtering the resultset.
What is the issue/better solution proposal?

Kind regards Ales Zeleny


čt 4. 8. 2022 v 23:15 odesílatel Joe Conway <m...@joeconway.com> napsal:

> On 8/4/22 08:34, Aleš Zelený wrote:
> >> SELECT ... simple join of two tables...
> >>      WHERE opd.id_data_provider = _id_data_provider
> >>        AND CASE WHEN _external_id IS NULL
> >>                 THEN external_id IS NULL
> >>                 ELSE external_id = _external_id
> >>            END
> >>        AND CASE WHEN _external_complete_id IS NULL
> >>                 THEN _external_complete_id IS NULL
>
> Unrelated to your question, but shouldn't that actually read:
>
>         AND CASE WHEN _external_complete_id IS NULL
>                  THEN external_complete_id IS NULL
>                      ^^^
>
> >>                 ELSE external_complete_id = _external_complete_id
> >>            END;
> >> $function$
>
> --
> Joe Conway
> RDS Open Source Databases
> Amazon Web Services: https://aws.amazon.com
>

Reply via email to