Thank you for the comments.
First of all your patch does not conform with the project style. Please
have a look at how other files are indented, in particular regarding
brace position and ereport() arguments (any function arguments really,
but in ereport your problems are more visible). Also, always use
ereport() for user messages, elog() for conditions that involve
can't-happen situations (server bugs, like not finding a tuple in a
catalog that should be there, etc).
OK !!! I am going to correct these problems.
Also there are some changes that you certainly don't want committed.
For example why are you removing the TransState from xact.c?
I simply moved it to the xact.h...
Basically, it was done to be able to access the current transaction
state from other files.
Thus, I can avoid to rebuild the structure that stores the global
triggers in the middle of a transaction.
However, the lack of this functionality it is not critical since the
superuser is the only
person that can change such triggers.
Also, consider using the XactCallback mechanism instead of inventing
your own.
Unfortunately, the XactCallback is called after "commit" which
means that a transaction cannot be rolled back.
For synchronous replication, it is necessary to have a before commit event.
Moreover, the addition of a callback function implies modifications to
the source code, am I wrong ?
These global triggers could be easily adapted to call functions "before"
and "after commit" without
changing the code.
On a different front, have you considered talking to the people behind
Slony-II to see if they'd have some use for your hooks?
I would like to share the hooks with them and other things that I have
been done.
Best regards,
Alfranio Junior.
---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings