Thread: event triggers with args?
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.
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
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.