Hi all.
I'm lead developer for pgCodeKeeper which is a tool for PostgreSQL database
schema comparison.

In our tool we have a pg_dump-like schema reader for comparing against live
DB instances.
This reader consumes majority of the time the comparison operation takes
and we had an idea to speed it up.
To do this we need to be able to track last modification time of every DB
object and an extension with event triggers seems like a suitable tool for
The extension we've implemented is available, for anyone interested:

However, we've discovered that event triggers provide almost no data for
GRANT/REVOKE commands, in particular, there's no way to find out which
objects were altered by these commands.
pg_event_trigger_ddl_commands() does provide a pg_ddl_command data which
seems to contain objects list for GRANT, however it seems totally
inaccessible in plpgsql.

This leads to my question: do we need to dive into writing a C function for
our extension to access pg_ddl_command or some other lower-lever
representation? Or can we use something else to solve our task, maybe
avoiding event triggers entirely?

Alexander Levsha

Reply via email to