Thread: event triggers with args?

event triggers with args?

From
Fabien COELHO
Date:
While looking at event triggers, I noticed that, contrary to basic 
triggers, arguments are not allowed.

However, the example in the documentation with an hour-based filtering of 
ddl commands suggest some handling of arguments would be useful so as to 
allow more generic event triggers.

So I have a question: is there a particular reason why arguments were not 
provided in the first place?

-- 
Fabien.



Re: event triggers with args?

From
Andres Freund
Date:
On 2015-02-25 10:43:57 +0100, Fabien COELHO wrote:
> 
> While looking at event triggers, I noticed that, contrary to basic triggers,
> arguments are not allowed.
> 
> However, the example in the documentation with an hour-based filtering of
> ddl commands suggest some handling of arguments would be useful so as to
> allow more generic event triggers.
> 
> So I have a question: is there a particular reason why arguments were not
> provided in the first place?

Yea. The existing trigger argument mechanims is extremely odd
implementation wise - they don't have real datatypes and aren't passed
via the normal parameter passing mechanism. IIRC we discussed this back
when it was introduced and decided against introducing for now.

I think the whole trigger argument infrastructure, even for normal
triggers, should be rewritten. After that we could think of adding it
for event triggers.

Greetings,

Andres Freund

-- Andres Freund                       http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services



Re: event triggers with args?

From
Fabien COELHO
Date:
Hello Andres,

>> So I have a question: is there a particular reason why arguments were not
>> provided in the first place?
>
> Yea. The existing trigger argument mechanims is extremely odd
> implementation wise - they don't have real datatypes and aren't passed
> via the normal parameter passing mechanism.

Indeed, I can only agree!

> IIRC we discussed this back when it was introduced and decided against 
> introducing for now.
>
> I think the whole trigger argument infrastructure, even for normal 
> triggers, should be rewritten. After that we could think of adding it 
> for event triggers.

Ok. That sound reasonable. Thanks for the answer.

I think that the new method will have to be upward compatible. This 
suggest providing TG_ARGV with casted to text arguments. Not necessarily a 
big issue.

I've looked into the parser. ISTM that trigger call parameter list could 
use a "expr_list", which would have to be evaluated and serialised in 
pg_trigger, maybe as ROW does.

-- 
Fabien.