Re: « The PL/pgSQL interpreter parses the function's source text and produces an internal binary instruction tree... » - Mailing list pgsql-general

From Pavel Stehule
Subject Re: « The PL/pgSQL interpreter parses the function's source text and produces an internal binary instruction tree... »
Date
Msg-id CAFj8pRCEYriyh0WKdc2zf1Sv9cweHwRS76D5kGtw_07D2Csc-A@mail.gmail.com
Whole thread Raw
In response to Re: « The PL/pgSQL interpreter parses the function's source text and produces an internal binary instruction tree... »  (Bryn Llewellyn <bryn@yugabyte.com>)
List pgsql-general


pá 29. 7. 2022 v 4:57 odesílatel Bryn Llewellyn <bryn@yugabyte.com> napsal:

This isn't a bug.

It's actually a feature…

Having said that, there are certainly aspects of what happens when in plpgsql that don't have a lot of justification other than being implementation artifacts…

Thanks, Tom. I'll take your « aspects of… plpgsql [are simply] implementation artifacts » to mean that my hope to understand what is checked at "create or replace <my subprogram>" time and what is checked first at runtime is futile.

There does seem to be a general rule. But, as my example shows, there are exceptions to the rule. And it's impossible to make a simple user-facing statement of what determines "exceptional" status.

I suppose that the conclusion is clear: you can't be sure that a subprogram is good until every single code path (in the basic block coverage sense of this) has been tested. But, anyway, it was ever thus. (Error-free compilation never did guarantee error-free runtime outcomes.)

plpgsql_check https://github.com/okbob/plpgsql_check can help with it. It does full static (without execution) analyze

Regards

Pavel



I'll call this "case closed" then.

pgsql-general by date:

Previous
From: Bryn Llewellyn
Date:
Subject: Re: « The PL/pgSQL interpreter parses the function's source text and produces an internal binary instruction tree... »
Next
From: Gianni Ceccarelli
Date:
Subject: Re: Syntax error when combining --set and --command has me stumped