Hi, Thanks! I will have a look and reply in about one week.
Regards, Thomas On Thursday, August 5, 2010, Kerry Sainsbury <[email protected]> wrote: > Hi Thomas, > > How do you like this example. It's very simple. Basically you copy and paste > Java code and call it a "MODULE". The class can then be called from whatever > wants it (and I can easily implement my simpler trigger idea just by putting > in a "SimpleTrigger" class that I can extend in another module. Note there is > no need to name a module, as we can just use the class name: > > > CREATE MODULE AS > $$ > import java.sql.*; > import org.h2.api.Trigger; > > public abstract class SimpleTrigger implements Trigger { > public void init(Connection conn, String schemaName, String > triggerName, String tableName, boolean before, int type) throws SQLException { > } > public abstract void fire(Connection conn, Object[] oldRow, > Object[] newRow) throws SQLException; > public void close() throws SQLException { > } > public void remove() throws SQLException { > } > } > $$ > > > CREATE MODULE AS > $$ > import java.sql.*; > > public class MyTrigger extends SimpleTrigger { > public void fire(Connection conn, Object[] oldRow, Object[] newRow) > throws SQLException { > newRow[0] = ((String)newRow[0]).toUpperCase(); > } > } > $$ > > > CREATE TRIGGER TRIG_INS BEFORE INSERT ON TEST FOR EACH ROW CALL "MyTrigger" > > > DROP TRIGGER TRIG_INS > DROP MODULE MyTrigger > DROP MODULE SimpleTrigger > > > What do you think? > > Cheers > Kerry > > > > On Thu, Jul 22, 2010 at 8:02 AM, Thomas Mueller > <[email protected]> wrote: > Hi, > > I think the > CREATE CODE MyTriggerCode LANGUAGE JAVA FOR TRIGGER AS > is very verbose. What about: > CREATE TRIGGER ... AS? > That's similar syntax as CREATE ALIAS ... AS. > > H2 only supports Java currently, so there is no reason to require > "JAVA". Once other languages are supported it can still be added as an > option. > > However I'm not sure if it makes sense to provide shortcut to directly > register a trigger as source code *snippet* (that is, only the fire > method). I think it's no problem to require the source code of the > *complete* class in this case. If you write short static function, > then the current CREATE ALIAS ... AS source is handy (I used it many > times). But if you write a trigger, you anyway do that in the IDE, > meaning you anyway have the source code of the complete class > somewhere. Because you want to use auto-complete of the IDE, and so > forth. Triggers are almost never as simple as a Java function. > > I think if we want to support CREATE CODE then this should be only > used to add classes to the "internal classpath" of H2. Independent of > for what those classes are used (trigger, aggregate, function > alias,...), and therefore without any magic to adopt to the right type > / add missing glue code. Even without automatically adding import > statements. Those classes can then be used for many things. For > example a class that contains multiple public static methods plus a > trigger (or even multiple triggers using inner classes). Or it could > even contain multiple classes, or a jar file (which would be stored in > the database). Instead of CREATE CODE what about CREATE MODULE or > CREATE LIBRARY? There could be a module / library for MySQL helper > functions, for PostgreSQL helper functions, and so on. Like a Apache > HTTP module. There should be an way to "auto-start", maybe using a > method in the loaded library. > > Existing features could then be retro-fitted as modules / libraries. > For example fulltext search. > > Regards, > Thomas > > -- > You received this message because you are subscribed to the Google Groups "H2 > Database" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/h2-database?hl=en. > > > > > -- > You received this message because you are subscribed to the Google Groups "H2 > Database" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/h2-database?hl=en. > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.
