4
4
from trac .db .api import DatabaseManager
5
5
6
6
# Database version identifier for upgrades.
7
- db_version = 1
7
+ db_version = 2
8
8
9
9
# Database schema
10
10
schema = {
13
13
Column ('version' , type = 'int' ),
14
14
Column ('text' ),
15
15
Column ('path' ),
16
- Column ('revision' , type = 'int' ),
16
+ Column ('revision' ),
17
17
Column ('line' , type = 'int' ),
18
18
Column ('author' ),
19
19
Column ('time' , type = 'int' ),
@@ -36,7 +36,23 @@ def create_tables(env, db):
36
36
str (db_version ))
37
37
# Upgrades
38
38
def upgrade_from_1_to_2 (env , db ):
39
- pass
39
+ columns = [c .name for c in schema ['code_comments' ].columns ]
40
+ cursor = db .cursor ()
41
+ values = cursor .execute ('PRAGMA INDEX_LIST(`code_comments`)' )
42
+ indexes = values .fetchall ()
43
+ for index in indexes :
44
+ if index [1 ].startswith ('code_comments' ):
45
+ cursor .execute ('DROP INDEX IF EXISTS %s' % index [1 ])
46
+ values = cursor .execute ('SELECT %s FROM code_comments' % ',' .join (columns ))
47
+ lines = values .fetchall ()
48
+ cursor .execute ('ALTER TABLE code_comments RENAME TO tmp_code_comments' )
49
+ for stmt in to_sql (env , schema ['code_comments' ]):
50
+ cursor .execute (stmt )
51
+ for line in lines :
52
+ ins = 'INSERT INTO code_comments (%s) VALUES (%s)' % (',' .join (columns ), ',' .join (['\' %s\' ' % str (v ).replace ('\' ' ,'\' \' ' ) for v in line ]))
53
+ print ins
54
+ cursor .execute (ins )
55
+ cursor .execute ('DROP TABLE tmp_code_comments' )
40
56
41
57
upgrade_map = {
42
58
2 : upgrade_from_1_to_2
0 commit comments