Mercurial > p > roundup > code
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 2408:e12a610eb7f3 | 2417:fe722c32ce0c |
|---|---|
| 120 self.create_version_2_tables() | 120 self.create_version_2_tables() |
| 121 | 121 |
| 122 def create_version_2_tables(self): | 122 def create_version_2_tables(self): |
| 123 # OTK store | 123 # OTK store |
| 124 self.cursor.execute('''CREATE TABLE otks (otk_key VARCHAR(255), | 124 self.cursor.execute('''CREATE TABLE otks (otk_key VARCHAR(255), |
| 125 otk_value VARCHAR(255), otk_time FLOAT(20))''') | 125 otk_value VARCHAR(255), otk_time REAL)''') |
| 126 self.cursor.execute('CREATE INDEX otks_key_idx ON otks(otk_key)') | 126 self.cursor.execute('CREATE INDEX otks_key_idx ON otks(otk_key)') |
| 127 | 127 |
| 128 # Sessions store | 128 # Sessions store |
| 129 self.cursor.execute('''CREATE TABLE sessions ( | 129 self.cursor.execute('''CREATE TABLE sessions ( |
| 130 session_key VARCHAR(255), session_time FLOAT(20), | 130 session_key VARCHAR(255), session_time REAL, |
| 131 session_value VARCHAR(255))''') | 131 session_value VARCHAR(255))''') |
| 132 self.cursor.execute('''CREATE INDEX sessions_key_idx ON | 132 self.cursor.execute('''CREATE INDEX sessions_key_idx ON |
| 133 sessions(session_key)''') | 133 sessions(session_key)''') |
| 134 | 134 |
| 135 # full-text indexing store | 135 # full-text indexing store |
| 139 _itemid VARCHAR(255), _prop VARCHAR(255))''') | 139 _itemid VARCHAR(255), _prop VARCHAR(255))''') |
| 140 self.cursor.execute('''CREATE TABLE __words (_word VARCHAR(30), | 140 self.cursor.execute('''CREATE TABLE __words (_word VARCHAR(30), |
| 141 _textid integer)''') | 141 _textid integer)''') |
| 142 self.cursor.execute('CREATE INDEX words_word_idx ON __words(_word)') | 142 self.cursor.execute('CREATE INDEX words_word_idx ON __words(_word)') |
| 143 | 143 |
| 144 def fix_version_2_tables(self): | |
| 145 # Convert journal date column to TIMESTAMP, params column to TEXT | |
| 146 self._convert_journal_tables() | |
| 147 | |
| 148 # Convert all String properties to TEXT | |
| 149 self._convert_string_properties() | |
| 150 | |
| 151 # convert session / OTK *_time columns to REAL | |
| 152 c = self.cursor | |
| 153 for name in ('otk', 'session'): | |
| 154 c.execute('drop index %ss_key_idx'%name) | |
| 155 c.execute('drop table %ss'%name) | |
| 156 c.execute('''CREATE TABLE %ss (%s_key VARCHAR(255), | |
| 157 %s_value VARCHAR(255), %s_time REAL)'''%(name, name, name, | |
| 158 name)) | |
| 159 c.execute('CREATE INDEX %ss_key_idx ON %ss(%s_key)'%(name, name, | |
| 160 name)) | |
| 161 | |
| 144 def add_actor_column(self): | 162 def add_actor_column(self): |
| 145 # update existing tables to have the new actor column | 163 # update existing tables to have the new actor column |
| 146 tables = self.database_schema['tables'] | 164 tables = self.database_schema['tables'] |
| 147 for name in tables.keys(): | 165 for name in tables.keys(): |
| 148 self.cursor.execute('ALTER TABLE _%s add __actor ' | 166 self.cursor.execute('ALTER TABLE _%s add __actor ' |
| 160 sql = 'select count(*) from pg_indexes where ' \ | 178 sql = 'select count(*) from pg_indexes where ' \ |
| 161 'tablename=%s and indexname=%s'%(self.arg, self.arg) | 179 'tablename=%s and indexname=%s'%(self.arg, self.arg) |
| 162 self.cursor.execute(sql, (table_name, index_name)) | 180 self.cursor.execute(sql, (table_name, index_name)) |
| 163 return self.cursor.fetchone()[0] | 181 return self.cursor.fetchone()[0] |
| 164 | 182 |
| 165 def create_class_table(self, spec): | 183 def create_class_table(self, spec, create_sequence=True): |
| 166 sql = 'CREATE SEQUENCE _%s_ids'%spec.classname | 184 if create_sequence: |
| 167 if __debug__: | 185 sql = 'CREATE SEQUENCE _%s_ids'%spec.classname |
| 168 print >>hyperdb.DEBUG, 'create_class_table', (self, sql) | 186 if __debug__: |
| 169 self.cursor.execute(sql) | 187 print >>hyperdb.DEBUG, 'create_class_table', (self, sql) |
| 188 self.cursor.execute(sql) | |
| 170 | 189 |
| 171 return rdbms_common.Database.create_class_table(self, spec) | 190 return rdbms_common.Database.create_class_table(self, spec) |
| 172 | 191 |
| 173 def drop_class_table(self, cn): | 192 def drop_class_table(self, cn): |
| 174 sql = 'drop table _%s'%cn | 193 sql = 'drop table _%s'%cn |
| 178 | 197 |
| 179 sql = 'drop sequence _%s_ids'%cn | 198 sql = 'drop sequence _%s_ids'%cn |
| 180 if __debug__: | 199 if __debug__: |
| 181 print >>hyperdb.DEBUG, 'drop_class', (self, sql) | 200 print >>hyperdb.DEBUG, 'drop_class', (self, sql) |
| 182 self.cursor.execute(sql) | 201 self.cursor.execute(sql) |
| 183 | |
| 184 def create_journal_table(self, spec): | |
| 185 cols = ',' . join(['"%s" VARCHAR(255)'%x | |
| 186 for x in 'nodeid date tag action params' . split()]) | |
| 187 sql = 'CREATE TABLE "%s__journal" (%s)'%(spec.classname, cols) | |
| 188 if __debug__: | |
| 189 print >>hyperdb.DEBUG, 'create_journal_table', (self, sql) | |
| 190 self.cursor.execute(sql) | |
| 191 self.create_journal_table_indexes(spec) | |
| 192 | |
| 193 def create_multilink_table(self, spec, ml): | |
| 194 sql = '''CREATE TABLE "%s_%s" (linkid VARCHAR(255), | |
| 195 nodeid VARCHAR(255))'''%(spec.classname, ml) | |
| 196 | |
| 197 if __debug__: | |
| 198 print >>hyperdb.DEBUG, 'create_class', (self, sql) | |
| 199 | |
| 200 self.cursor.execute(sql) | |
| 201 self.create_multilink_table_indexes(spec, ml) | |
| 202 | 202 |
| 203 def newid(self, classname): | 203 def newid(self, classname): |
| 204 sql = "select nextval('_%s_ids') from dual"%classname | 204 sql = "select nextval('_%s_ids') from dual"%classname |
| 205 if __debug__: | 205 if __debug__: |
| 206 print >>hyperdb.DEBUG, 'setid', (self, sql) | 206 print >>hyperdb.DEBUG, 'setid', (self, sql) |
