Hi Barry! I can't find your branch on Launchpad.net. Could you post the link to it?
Thanks! jay On Thu, Apr 22, 2010 at 11:27 PM, Barry Leslie <[email protected]> wrote: > Hi, > > I am working on a low level events plugin. The idea is that this API can be > used to implement other plugins which are interested in observing different > database events and doing something with the information. > > There are 3 type of events: "Session Events", "Schema Events", and "Table > Events". The plugins can register which events they are interested in and > then they will be notified of only the events they are interested in. > > New plugin events can be added as people have need of them, currently I have > added the events I need for the PBMS daemon: > > /* Schema events: */ > PRE_DROP_TABLE, POST_DROP_TABLE, > PRE_RENAME_TABLE, POST_RENAME_TABLE, > > /* Table events: */ > PRE_WRITE_ROW, POST_WRITE_ROW, > PRE_UPDATE_ROW, POST_UPDATE_ROW, > PRE_DELETE_ROW, POST_DELETE_ROW, > > /* Session events: */ > PRE_CREATE_DATABASE, POST_CREATE_DATABASE, > PRE_DROP_DATABASE, POST_DROP_DATABASE, > > Table events are specific to a table so in he case of PBMS I can say I am > interested in table events that occur only on tables that contain BLOB > columns and I can specify exactly which events I am interested in. > > Schema events are events that occur with in a specific database. So a plugin > can tell drizzle that it is only interested in schema events that occur on > database 'XYZ'. > > Session events are events that occur out side of the context of a database > or table. It would be possible for example to only track session events for > specific users. > > For any one event drizzle only calls the event observers that have > registered an interest in that event. So if no plugins have registered an > interest in an event nothing is done. > > The event handlers are specific to each event, passing in what ever > information is relevant to that event. There is NO generic event handler. > > The 'PRE' events may allow data modification depending on the type of event. > If a 'PRE' event handler fails then the action will be aborted. "POST" event > handlers are ReadOny and cannot modify the data, they are also not allowed > to fail, or if they do it will have no effect on the operation. > > I have pushed up the branch "drizzle_events" containing my new plugin API. > The main points of interest are: > > drizzled/plugin/event.h > drizzled/plugin/event.cc > > You can look in drizzled/table_share.h and drizzled/session.h to see how the > events of interest are registered with the table, schema. or session. > > You will find some example event points in: > drizzled/cursor.cc > drizzled/plugin/storage_engine.cc > drizzled/statement/create_schema.cc > drizzled/statement/drop_schema.cc > > I have also created an example pluggin that observes some events and prints > them out as they occur. > > plugin/hello_events > > So I will just put on my flame proof suit and wait for people's comments and > suggestions. :) > > Barry > > > ------------------------------------------------------------------------- > Barry Leslie > > SNAP Innovation Softwareentwicklung GmbH > Senior Software Engineer > > Tel: (001) 250 884 1820 > Fax: (001) 250 595 4460 > Email: [email protected] > Web: www.PrimeBase.com > > SNAP Innovation Softwareentwicklung GmbH, D-22765 Hamburg, > Max-Brauer-Allee 50, Germany > Amtsgericht Hamburg HRB 61066, Geschäftsführer: Ulrich Zimmer, Paul > McCullagh > ------------------------------------------------------------------------- > > > > > _______________________________________________ > Mailing list: https://launchpad.net/~drizzle-discuss > Post to : [email protected] > Unsubscribe : https://launchpad.net/~drizzle-discuss > More help : https://help.launchpad.net/ListHelp > _______________________________________________ Mailing list: https://launchpad.net/~drizzle-discuss Post to : [email protected] Unsubscribe : https://launchpad.net/~drizzle-discuss More help : https://help.launchpad.net/ListHelp

