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)

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