[rhmessaging-commits] rhmessaging commits: r3110 - in mgmt/trunk/mint: sql and 1 other directory.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Fri Feb 6 11:28:59 EST 2009


Author: justi9
Date: 2009-02-06 11:28:59 -0500 (Fri, 06 Feb 2009)
New Revision: 3110

Modified:
   mgmt/trunk/mint/python/mint/schema.py
   mgmt/trunk/mint/python/mint/schemaparser.py
   mgmt/trunk/mint/sql/triggers.sql
Log:
Nuno's patch to simplify triggers, and a new schema

Modified: mgmt/trunk/mint/python/mint/schema.py
===================================================================
--- mgmt/trunk/mint/python/mint/schema.py	2009-02-05 18:53:07 UTC (rev 3109)
+++ mgmt/trunk/mint/python/mint/schema.py	2009-02-06 16:28:59 UTC (rev 3110)
@@ -1353,7 +1353,8 @@
   "connection": "clientConnection", "Connection": "ClientConnection", 
   "connectionRef": "clientConnectionRef", 
   "user": "gridUser", "User": "GridUser", 
-  "registeredTo": "broker"} 
+  "registeredTo": "broker",
+  "sync": "syncRsv"} 
 
 classToSchemaNameMap['Slot'] = 'Slot'
 schemaNameToClassMap['Slot'] = Slot

Modified: mgmt/trunk/mint/python/mint/schemaparser.py
===================================================================
--- mgmt/trunk/mint/python/mint/schemaparser.py	2009-02-05 18:53:07 UTC (rev 3109)
+++ mgmt/trunk/mint/python/mint/schemaparser.py	2009-02-06 16:28:59 UTC (rev 3110)
@@ -40,7 +40,8 @@
                           "connection": "clientConnection", "Connection": "ClientConnection", 
                           "connectionRef": "clientConnectionRef", 
                           "user": "gridUser", "User": "GridUser",
-                          "registeredTo": "broker"}
+                          "registeredTo": "broker",
+                          "sync": "syncRsv"}
 
   def renameReservedWord(self, name):
     if (name in self.reservedWords.keys()):
@@ -141,8 +142,11 @@
       colPythonName = self.style.dbColumnToPythonAttr(schemaName)
       keyPythonName = self.style.dbTableToPythonClass(schemaName)
       sqlTable = self.style.pythonClassToDBTable(pythonName)
-      self.sqlTriggersOutput += "CREATE TRIGGER update_stats AFTER INSERT ON %s \n" % (sqlTable)
-      self.sqlTriggersOutput += "  FOR EACH ROW EXECUTE PROCEDURE update_stats(); \n\n"
+      sqlParentTable = self.style.pythonClassToDBTable(self.style.dbTableToPythonClass(schemaName))
+      self.sqlTriggersOutput += self.sqlTriggerFunction % (sqlParentTable, sqlParentTable, sqlParentTable)
+      self.sqlTriggersOutput += "\n"
+      self.sqlTriggersOutput += "CREATE TRIGGER update_%s_stats AFTER INSERT ON %s \n" % (sqlParentTable, sqlTable)
+      self.sqlTriggersOutput += "  FOR EACH ROW EXECUTE PROCEDURE update_%s_stats(); \n\n" % (sqlParentTable)
       self.sqlTriggersOutput += "CREATE INDEX %s_update_time ON %s (qmf_update_time);\n\n" % (sqlTable, sqlTable)
     else:
       pythonName = self.style.dbTableToPythonClass(schemaName)
@@ -218,7 +222,8 @@
     self.finalPythonOutput += '  "connection": "clientConnection", "Connection": "ClientConnection", \n'
     self.finalPythonOutput += '  "connectionRef": "clientConnectionRef", \n'
     self.finalPythonOutput += '  "user": "gridUser", "User": "GridUser", \n'
-    self.finalPythonOutput += '  "registeredTo": "broker"} \n\n'
+    self.finalPythonOutput += '  "registeredTo": "broker",\n'
+    self.finalPythonOutput += '  "sync": "syncRsv"} \n\n'
 
     # TODO: optimize getting the id to the parent table from new.parent_table_id
     self.sqlTriggersOutput += """
@@ -239,30 +244,16 @@
 
 DROP FUNCTION create_plpgsql();
 
-CREATE OR REPLACE FUNCTION update_stats() RETURNS trigger AS '
-DECLARE
-  parent_table varchar;
-  select_parent varchar;
-  update_parent varchar;
-BEGIN 
-  -- remove "_stats" suffix from table name
-  parent_table := substr(tg_relname, 0, char_length(tg_relname) - 5);
-
-  select_parent := ''SELECT id FROM '' || parent_table ||
-	  '' WHERE id = (SELECT '' || parent_table || ''_id FROM '' || tg_relname || '' WHERE id = '' || 
-          new.id || '') FOR UPDATE'';
-
-  update_parent := ''UPDATE '' || parent_table ||
-  	  '' SET stats_prev_id = stats_curr_id, stats_curr_id = '' || new.id ||
-	  '' WHERE id = (SELECT '' || parent_table || ''_id FROM '' || tg_relname || '' WHERE id = '' || 
-          new.id || '')'';
-  EXECUTE select_parent;
-  EXECUTE update_parent;
-  RETURN new; 
-END 
-' LANGUAGE plpgsql; 
-
 """
+    self.sqlTriggerFunction = """
+CREATE OR REPLACE FUNCTION update_%s_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE %s SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.%s_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+"""
+
     outputFile = open(self.pythonFilePath, "w")
     sqlTriggersFile = open(self.sqlTriggersFilePath, "w")
     for xmlFile in self.xmlFilePaths:

Modified: mgmt/trunk/mint/sql/triggers.sql
===================================================================
--- mgmt/trunk/mint/sql/triggers.sql	2009-02-05 18:53:07 UTC (rev 3109)
+++ mgmt/trunk/mint/sql/triggers.sql	2009-02-06 16:28:59 UTC (rev 3110)
@@ -16,141 +16,302 @@
 
 DROP FUNCTION create_plpgsql();
 
-CREATE OR REPLACE FUNCTION update_stats() RETURNS trigger AS '
-DECLARE
-  parent_table varchar;
-  select_parent varchar;
-  update_parent varchar;
-BEGIN 
-  -- remove "_stats" suffix from table name
-  parent_table := substr(tg_relname, 0, char_length(tg_relname) - 5);
 
-  select_parent := ''SELECT id FROM '' || parent_table ||
-	  '' WHERE id = (SELECT '' || parent_table || ''_id FROM '' || tg_relname || '' WHERE id = '' || 
-          new.id || '') FOR UPDATE'';
+CREATE OR REPLACE FUNCTION update_slot_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE slot SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.slot_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
 
-  update_parent := ''UPDATE '' || parent_table ||
-  	  '' SET stats_prev_id = stats_curr_id, stats_curr_id = '' || new.id ||
-	  '' WHERE id = (SELECT '' || parent_table || ''_id FROM '' || tg_relname || '' WHERE id = '' || 
-          new.id || '')'';
-  EXECUTE select_parent;
-  EXECUTE update_parent;
-  RETURN new; 
-END 
-' LANGUAGE plpgsql; 
+CREATE TRIGGER update_slot_stats AFTER INSERT ON slot_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_slot_stats(); 
 
-CREATE TRIGGER update_stats AFTER INSERT ON slot_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
-
 CREATE INDEX slot_stats_update_time ON slot_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON job_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_job_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE job SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.job_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_job_stats AFTER INSERT ON job_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_job_stats(); 
+
 CREATE INDEX job_stats_update_time ON job_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON scheduler_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_scheduler_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE scheduler SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.scheduler_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_scheduler_stats AFTER INSERT ON scheduler_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_scheduler_stats(); 
+
 CREATE INDEX scheduler_stats_update_time ON scheduler_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON submitter_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_submitter_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE submitter SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.submitter_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_submitter_stats AFTER INSERT ON submitter_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_submitter_stats(); 
+
 CREATE INDEX submitter_stats_update_time ON submitter_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON negotiator_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_negotiator_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE negotiator SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.negotiator_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_negotiator_stats AFTER INSERT ON negotiator_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_negotiator_stats(); 
+
 CREATE INDEX negotiator_stats_update_time ON negotiator_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON collector_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_collector_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE collector SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.collector_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_collector_stats AFTER INSERT ON collector_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_collector_stats(); 
+
 CREATE INDEX collector_stats_update_time ON collector_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON master_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_master_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE master SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.master_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_master_stats AFTER INSERT ON master_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_master_stats(); 
+
 CREATE INDEX master_stats_update_time ON master_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON acl_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_acl_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE acl SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.acl_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_acl_stats AFTER INSERT ON acl_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_acl_stats(); 
+
 CREATE INDEX acl_stats_update_time ON acl_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON cluster_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_cluster_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE cluster SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.cluster_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_cluster_stats AFTER INSERT ON cluster_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_cluster_stats(); 
+
 CREATE INDEX cluster_stats_update_time ON cluster_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON store_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_store_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE store SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.store_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_store_stats AFTER INSERT ON store_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_store_stats(); 
+
 CREATE INDEX store_stats_update_time ON store_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON journal_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_journal_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE journal SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.journal_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_journal_stats AFTER INSERT ON journal_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_journal_stats(); 
+
 CREATE INDEX journal_stats_update_time ON journal_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON system_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_system_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE system SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.system_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_system_stats AFTER INSERT ON system_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_system_stats(); 
+
 CREATE INDEX system_stats_update_time ON system_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON broker_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_broker_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE broker SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.broker_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_broker_stats AFTER INSERT ON broker_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_broker_stats(); 
+
 CREATE INDEX broker_stats_update_time ON broker_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON agent_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_agent_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE agent SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.agent_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_agent_stats AFTER INSERT ON agent_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_agent_stats(); 
+
 CREATE INDEX agent_stats_update_time ON agent_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON vhost_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_vhost_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE vhost SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.vhost_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_vhost_stats AFTER INSERT ON vhost_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_vhost_stats(); 
+
 CREATE INDEX vhost_stats_update_time ON vhost_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON queue_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_queue_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE queue SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.queue_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_queue_stats AFTER INSERT ON queue_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_queue_stats(); 
+
 CREATE INDEX queue_stats_update_time ON queue_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON exchange_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_exchange_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE exchange SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.exchange_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_exchange_stats AFTER INSERT ON exchange_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_exchange_stats(); 
+
 CREATE INDEX exchange_stats_update_time ON exchange_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON binding_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_binding_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE binding SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.binding_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_binding_stats AFTER INSERT ON binding_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_binding_stats(); 
+
 CREATE INDEX binding_stats_update_time ON binding_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON client_connection_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_client_connection_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE client_connection SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.client_connection_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_client_connection_stats AFTER INSERT ON client_connection_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_client_connection_stats(); 
+
 CREATE INDEX client_connection_stats_update_time ON client_connection_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON link_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_link_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE link SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.link_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_link_stats AFTER INSERT ON link_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_link_stats(); 
+
 CREATE INDEX link_stats_update_time ON link_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON bridge_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_bridge_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE bridge SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.bridge_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_bridge_stats AFTER INSERT ON bridge_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_bridge_stats(); 
+
 CREATE INDEX bridge_stats_update_time ON bridge_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON session_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_session_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE session SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.session_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_session_stats AFTER INSERT ON session_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_session_stats(); 
+
 CREATE INDEX session_stats_update_time ON session_stats (qmf_update_time);
 
-CREATE TRIGGER update_stats AFTER INSERT ON sysimage_stats 
-  FOR EACH ROW EXECUTE PROCEDURE update_stats(); 
 
+CREATE OR REPLACE FUNCTION update_sysimage_stats() RETURNS trigger AS '
+BEGIN
+  UPDATE sysimage SET stats_prev_id = stats_curr_id, stats_curr_id = new.id WHERE id = new.sysimage_id;
+  RETURN new;
+END
+' LANGUAGE plpgsql;
+
+CREATE TRIGGER update_sysimage_stats AFTER INSERT ON sysimage_stats 
+  FOR EACH ROW EXECUTE PROCEDURE update_sysimage_stats(); 
+
 CREATE INDEX sysimage_stats_update_time ON sysimage_stats (qmf_update_time);
 




More information about the rhmessaging-commits mailing list