diff roundup/backends/back_postgresql.py @ 2417:fe722c32ce0c maint-0.7

merge from HEAD
author Richard Jones <richard@users.sourceforge.net>
date Wed, 09 Jun 2004 06:16:56 +0000
parents 0b198ed096af
children 74474ec41050
line wrap: on
line diff
--- a/roundup/backends/back_postgresql.py	Wed Jun 09 00:17:30 2004 +0000
+++ b/roundup/backends/back_postgresql.py	Wed Jun 09 06:16:56 2004 +0000
@@ -122,12 +122,12 @@
     def create_version_2_tables(self):
         # OTK store
         self.cursor.execute('''CREATE TABLE otks (otk_key VARCHAR(255),
-            otk_value VARCHAR(255), otk_time FLOAT(20))''')
+            otk_value VARCHAR(255), otk_time REAL)''')
         self.cursor.execute('CREATE INDEX otks_key_idx ON otks(otk_key)')
 
         # Sessions store
         self.cursor.execute('''CREATE TABLE sessions (
-            session_key VARCHAR(255), session_time FLOAT(20),
+            session_key VARCHAR(255), session_time REAL,
             session_value VARCHAR(255))''')
         self.cursor.execute('''CREATE INDEX sessions_key_idx ON
             sessions(session_key)''')
@@ -141,6 +141,24 @@
             _textid integer)''')
         self.cursor.execute('CREATE INDEX words_word_idx ON __words(_word)')
 
+    def fix_version_2_tables(self):
+        # Convert journal date column to TIMESTAMP, params column to TEXT
+        self._convert_journal_tables()
+
+        # Convert all String properties to TEXT
+        self._convert_string_properties()
+
+        # convert session / OTK *_time columns to REAL
+        c = self.cursor
+        for name in ('otk', 'session'):
+            c.execute('drop index %ss_key_idx'%name)
+            c.execute('drop table %ss'%name)
+            c.execute('''CREATE TABLE %ss (%s_key VARCHAR(255),
+                %s_value VARCHAR(255), %s_time REAL)'''%(name, name, name,
+                name))
+            c.execute('CREATE INDEX %ss_key_idx ON %ss(%s_key)'%(name, name,
+                name))
+
     def add_actor_column(self):
         # update existing tables to have the new actor column
         tables = self.database_schema['tables']
@@ -162,11 +180,12 @@
         self.cursor.execute(sql, (table_name, index_name))
         return self.cursor.fetchone()[0]
 
-    def create_class_table(self, spec):
-        sql = 'CREATE SEQUENCE _%s_ids'%spec.classname
-        if __debug__:
-            print >>hyperdb.DEBUG, 'create_class_table', (self, sql)
-        self.cursor.execute(sql)
+    def create_class_table(self, spec, create_sequence=True):
+        if create_sequence:
+            sql = 'CREATE SEQUENCE _%s_ids'%spec.classname
+            if __debug__:
+                print >>hyperdb.DEBUG, 'create_class_table', (self, sql)
+            self.cursor.execute(sql)
 
         return rdbms_common.Database.create_class_table(self, spec)
 
@@ -181,25 +200,6 @@
             print >>hyperdb.DEBUG, 'drop_class', (self, sql)
         self.cursor.execute(sql)
 
-    def create_journal_table(self, spec):
-        cols = ',' . join(['"%s" VARCHAR(255)'%x
-          for x in 'nodeid date tag action params' . split()])
-        sql  = 'CREATE TABLE "%s__journal" (%s)'%(spec.classname, cols)
-        if __debug__:
-            print >>hyperdb.DEBUG, 'create_journal_table', (self, sql)
-        self.cursor.execute(sql)
-        self.create_journal_table_indexes(spec)
-
-    def create_multilink_table(self, spec, ml):
-        sql = '''CREATE TABLE "%s_%s" (linkid VARCHAR(255),
-            nodeid VARCHAR(255))'''%(spec.classname, ml)
-
-        if __debug__:
-            print >>hyperdb.DEBUG, 'create_class', (self, sql)
-
-        self.cursor.execute(sql)
-        self.create_multilink_table_indexes(spec, ml)
-
     def newid(self, classname):
         sql = "select nextval('_%s_ids') from dual"%classname
         if __debug__:

Roundup Issue Tracker: http://roundup-tracker.org/