On 1/3/21 9:45 AM, Thiemo Kellner wrote:
Quoting Tom Lane <tgl@xxxxxxxxxxxxx>:
Thiemo Kellner <thiemo@xxxxxxxxxxxxxxxxxxxx> writes:
create trigger CALCULATION_METHOD_BR_IU
before insert on CALCULATION_METHOD
for each row
execute function METHOD_CHECK(current_schema);
Executing such, the string "current_schema" gets literalised, i.e.
single quoted:
Yup, per the CREATE TRIGGER documentation [1]:
arguments
An optional comma-separated list of arguments to be provided to the
function when the trigger is executed. The arguments are literal
string constants. Simple names and numeric constants can be written
here, too, but they will all be converted to strings. Please check
the
description of the implementation language of the trigger function to
find out how these arguments can be accessed within the function; it
might be different from normal function arguments.
I strongly feel this is a bug,
It's operating as designed. There might be scope for a feature
improvement here, but it'd be a far-from-trivial task, with probably
a lot of ensuing compatibility breakage.
Oh, thanks! I did not read careful enough. I could not imagine such a
behaviour to be intentional.
Well, I guess, I can put the correct schema at installation, but would
have liked to have a more general approach. Furthermore, I think this
also implies that installation can only be done by psql. :-s
Why not grab the CURRENT_SCHEMA in the function?:
DECLARE
V_COUNT smallint;
C_SCHEMA varchar := CURRENT_SCHEMA;
--
Adrian Klaver
adrian.klaver@xxxxxxxxxxx