added explicit install target
[sfa.git] / geni / util / genitable.py
index 53b69c6..ed9ca30 100644 (file)
@@ -6,9 +6,10 @@
 
 import report
 
-from pg import DB
+from pg import DB, ProgrammingError
 from gid import *
 from record import *
+from geni.util.debug import *
 
 GENI_TABLE_PREFIX = "geni$"
 
@@ -37,15 +38,28 @@ class GeniTable():
         return False
 
     def create(self):
+        
         querystr = "CREATE TABLE " + self.tablename + " ( \
                 key text, \
                 name text, \
                 gid text, \
                 type text, \
                 pointer integer);"
-
-        self.cnx.query('DROP TABLE IF EXISTS ' + self.tablename)
+        template = "CREATE INDEX %s_%s_idx ON %s (%s);"
+        indexes = [template % ( self.tablename, field, self.tablename, field) \
+                   for field in ['name', 'type' ]]
+        # IF EXISTS doenst exist in postgres < 8.2
+        try:
+            self.cnx.query('DROP TABLE IF EXISTS ' + self.tablename)
+        except ProgrammingError:
+            try:
+                self.cnx.query('DROP TABLE ' + self.tablename)
+            except ProgrammingError:
+                pass
+        
         self.cnx.query(querystr)
+        for index in indexes:
+            self.cnx.query(index)
 
     def remove(self, record):
         query_str = "DELETE FROM " + self.tablename + " WHERE key = '" + record.get_key() + "'"