Author: nunofsantos
Date: 2008-12-04 18:52:51 -0500 (Thu, 04 Dec 2008)
New Revision: 2930
Modified:
mgmt/trunk/mint/python/mint/__init__.py
mgmt/trunk/mint/python/mint/schemaparser.py
mgmt/trunk/mint/python/mint/update.py
mgmt/trunk/mint/sql/triggers.sql
Log:
enable use of triggers to update current/previous statistics
Modified: mgmt/trunk/mint/python/mint/__init__.py
===================================================================
--- mgmt/trunk/mint/python/mint/__init__.py 2008-12-04 22:39:37 UTC (rev 2929)
+++ mgmt/trunk/mint/python/mint/__init__.py 2008-12-04 23:52:51 UTC (rev 2930)
@@ -74,6 +74,35 @@
finally:
conn.close()
+ def __splitSQLStatements(self, text):
+ result = list()
+ unmatchedQuote = False
+ tmpStmt = ""
+
+ for stmt in text.split(";"):
+ stmt = stmt.rstrip()
+ quotePos = stmt.find("'")
+ while quotePos > 0:
+ quotePos += 1
+ if quotePos < len(stmt):
+ if stmt[quotePos] != "'":
+ unmatchedQuote = not unmatchedQuote
+ else:
+ # ignore 2 single quotes
+ quotePos += 1
+ quotePos = stmt.find("'", quotePos)
+
+ if len(stmt.lstrip()) > 0:
+ tmpStmt += stmt + ";"
+ if not unmatchedQuote:
+ # single quote has been matched/closed, generate statement
+ result.append(tmpStmt.lstrip())
+ tmpStmt = ""
+
+ if unmatchedQuote:
+ result.append(tmpStmt.lstrip())
+ return result
+
def createSchema(self, file_paths):
conn = self.getConnection()
@@ -96,8 +125,7 @@
pass
for path, text in scripts:
- # TODO: fix splitting of sql statements by ';' before enabling triggers
- stmts = text.split(";")
+ stmts = self.__splitSQLStatements(text)
count = 0
for stmt in stmts:
Modified: mgmt/trunk/mint/python/mint/schemaparser.py
===================================================================
--- mgmt/trunk/mint/python/mint/schemaparser.py 2008-12-04 22:39:37 UTC (rev 2929)
+++ mgmt/trunk/mint/python/mint/schemaparser.py 2008-12-04 23:52:51 UTC (rev 2930)
@@ -135,7 +135,7 @@
pythonName = self.style.dbTableToPythonClass(schemaName + "_stats")
colPythonName = self.style.dbColumnToPythonAttr(schemaName)
keyPythonName = self.style.dbTableToPythonClass(schemaName)
- self.sqlTriggersOutput += "DROP TRIGGER update_stats ON %s; \n" %
(self.style.pythonClassToDBTable(pythonName))
+ #self.sqlTriggersOutput += "DROP TRIGGER update_stats ON %s; \n" %
(self.style.pythonClassToDBTable(pythonName))
self.sqlTriggersOutput += "CREATE TRIGGER update_stats AFTER INSERT ON %s
\n" % (self.style.pythonClassToDBTable(pythonName))
self.sqlTriggersOutput += " FOR EACH ROW EXECUTE PROCEDURE update_stats();
\n\n"
else:
Modified: mgmt/trunk/mint/python/mint/update.py
===================================================================
--- mgmt/trunk/mint/python/mint/update.py 2008-12-04 22:39:37 UTC (rev 2929)
+++ mgmt/trunk/mint/python/mint/update.py 2008-12-04 23:52:51 UTC (rev 2930)
@@ -319,13 +319,8 @@
op = SqlInsert(statsCls, attrs)
op.execute(cursor, attrs)
- statsId = cursor.fetchone()[0]
-
log.debug("%s(%s) created", statsCls.__name__, id)
- op = SqlSetStatsRefs(cls)
- op.execute(cursor, {"statsId": statsId, "id": id})
-
class MethodUpdate(ModelUpdate):
def __init__(self, model, broker, seq, response):
super(MethodUpdate, self).__init__(model, broker, response)
Modified: mgmt/trunk/mint/sql/triggers.sql
===================================================================
--- mgmt/trunk/mint/sql/triggers.sql 2008-12-04 22:39:37 UTC (rev 2929)
+++ mgmt/trunk/mint/sql/triggers.sql 2008-12-04 23:52:51 UTC (rev 2930)
@@ -14,95 +14,72 @@
END
' LANGUAGE plpgsql;
-DROP TRIGGER update_stats ON slot_stats;
CREATE TRIGGER update_stats AFTER INSERT ON slot_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON job_stats;
CREATE TRIGGER update_stats AFTER INSERT ON job_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON scheduler_stats;
CREATE TRIGGER update_stats AFTER INSERT ON scheduler_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON submitter_stats;
CREATE TRIGGER update_stats AFTER INSERT ON submitter_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON negotiator_stats;
CREATE TRIGGER update_stats AFTER INSERT ON negotiator_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON collector_stats;
CREATE TRIGGER update_stats AFTER INSERT ON collector_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON master_stats;
CREATE TRIGGER update_stats AFTER INSERT ON master_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON acl_stats;
CREATE TRIGGER update_stats AFTER INSERT ON acl_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON cluster_stats;
CREATE TRIGGER update_stats AFTER INSERT ON cluster_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON store_stats;
CREATE TRIGGER update_stats AFTER INSERT ON store_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON journal_stats;
CREATE TRIGGER update_stats AFTER INSERT ON journal_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON system_stats;
CREATE TRIGGER update_stats AFTER INSERT ON system_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON broker_stats;
CREATE TRIGGER update_stats AFTER INSERT ON broker_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON agent_stats;
CREATE TRIGGER update_stats AFTER INSERT ON agent_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON vhost_stats;
CREATE TRIGGER update_stats AFTER INSERT ON vhost_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON queue_stats;
CREATE TRIGGER update_stats AFTER INSERT ON queue_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON exchange_stats;
CREATE TRIGGER update_stats AFTER INSERT ON exchange_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON binding_stats;
CREATE TRIGGER update_stats AFTER INSERT ON binding_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON client_connection_stats;
CREATE TRIGGER update_stats AFTER INSERT ON client_connection_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON link_stats;
CREATE TRIGGER update_stats AFTER INSERT ON link_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON bridge_stats;
CREATE TRIGGER update_stats AFTER INSERT ON bridge_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON session_stats;
CREATE TRIGGER update_stats AFTER INSERT ON session_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
-DROP TRIGGER update_stats ON sysimage_stats;
CREATE TRIGGER update_stats AFTER INSERT ON sysimage_stats
FOR EACH ROW EXECUTE PROCEDURE update_stats();
Show replies by date