1
2
3
4
5
6
7
8
9
10
11
12
13
14 from trac.db.api import DatabaseManager
15 from trac.db.schema import Column, Index, Table
16
17
19 """Add an auto-increment primary key to `node_change` table and indices
20 (repos, rev, path) and (repos, path, rev) (#3676).
21 """
22 db_connector, _ = DatabaseManager(env).get_connector()
23 table = Table('node_change', key='id')[
24 Column('id', auto_increment=True),
25 Column('repos', type='int'),
26 Column('rev', key_size=40),
27 Column('path', key_size=255),
28 Column('node_type', size=1),
29 Column('change_type', size=1),
30 Column('base_path'),
31 Column('base_rev'),
32 Index(['repos', 'rev', 'path']),
33 Index(['repos', 'path', 'rev'])]
34
35 with env.db_transaction:
36 cursor.execute("""CREATE TEMPORARY TABLE node_change_old AS
37 SELECT * FROM node_change""")
38 cursor.execute("DROP TABLE node_change")
39
40 for stmt in db_connector.to_sql(table):
41 cursor.execute(stmt)
42
43 cursor.execute("""\
44 INSERT INTO node_change
45 (repos,rev,path,node_type,change_type,base_path,base_rev)
46 SELECT repos,rev,path,node_type,change_type,base_path,base_rev
47 FROM node_change_old""")
48 cursor.execute("DROP TABLE node_change_old")
49