I'm currently working on a master student research project “support triggers on
columns” that is supervised by a professor from my university (Ottawa U).
I have contacted Neil Conway whose name is with this item on the TODO list. It
happened that he actually lives very close to me(Queen's U in Kingston). He has agreed that I work on this.
Please take a look of my design (Some of the ideas are from Neil)
- change gram.y for CREATE TRIGGER to support the optional column list for this
feature,
- change CreateTrigStmt, trigger, trigdesc node to add support for an optional
List of columns; change the various Node support functions (equalfuncs.c,
copyfuncs.c, etc.)
- change InsertTrigger, (Copy+Free+ equal)TriggerDesc, Relationbuild function
to add support an optional List of columns.
- change the pg_trigger system catalog to support the new column .
- change CreateTrigger() to perform some semantic analysis on the list of columns
(ensure no column names are duplicated, ensure each name references an
extent and non-dropped column, and so forth)
- when deciding which triggers to invoke (executePlan() in execMain.c), add logic
to compare the list of columns in the to-be-executed command with the
list of columns in any applicable columns,and only fire a trigger of the column
lists that are appropriately compatible
-investigate the interaction between the column list and rules
I have spent the past four months on this and I have
finished the YYpaser, Catalog, trigger creation and some other support
functions, I am working on trigger execution right now. I expect the project
will be completed by the end of July. I would like to know your comments on my
design and the procedure of getting my work accepted.
Thanks
Mark Wu