Re: Getting the function definition from oid in before firing the function

From: Mohammed Ajil <ajilm(at)student(dot)ethz(dot)ch>
To: Jim Nasby <Jim(dot)Nasby(at)BlueTreble(dot)com>, <pgsql-general(at)postgresql(dot)org>
Subject: Re: Getting the function definition from oid in before firing the function
Date: 2016-01-06 07:29:50
Message-ID: 568CC26E.6000409@student.ethz.ch
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi,

Thanks for your answer!
I know that this is not the only language for triggers, but the
algorithm I have to implement only supports these triggers.
I have looked at the audit trigger, but that is not quite what I am
trying to achieve. I have implemented the stack push and pop for the
initial commands at another location, what I am trying to do now is keep
track of what triggers are fired, since they recursively can fire more
triggers.

What is an executor hook?

Regards,

Mohammed

On 01/06/2016 03:20 AM, Jim Nasby wrote:
> On 1/5/16 8:13 AM, Mohammed Ajil wrote:
>> Now my problem consists of two steps:
>> - First I need to decide if the algorithm supports the trigger type
>> (only of LANGUAGE PLPGSQL).
>
> plpgsql is NOT the only language that supports triggers.
>
>> - Second I need to get the SQL command that the function will execute.
>>
>> What I tried was the following:
>> In the file trigger.c I have found the location where the function is
>> called.
>
> I think triggers is the wrong way to approach this; it's full of holes
> (not the least of which is triggers don't fire on SELECT). You'd be much
> better off with an executor hook.
>
> Have you looked at https://github.com/2ndQuadrant/pgaudit?

--
--------------------------------------------
Mohammed Ajil
Bsc CS D-INFK
ajilm(at)student(dot)ethz(dot)ch

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Pavel Stehule 2016-01-06 07:36:57 Re: Code of Conduct: Is it time?
Previous Message Oleg Bartunov 2016-01-06 07:08:24 Re: Code of Conduct: Is it time?