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

 

Reply via email to