#NEWLINE# def do_upgrade( env , ver , cursor ) : #NEWLINE# #INDENT# 'Add an auto-increment primary key to `node_change` table and indices\n    (repos, rev, path) and (repos, path, rev) (#3676).\n    ' #NEWLINE# ( db_connector , _ ) = DatabaseManager ( env ) . _get_connector ( ) #NEWLINE# table = Table ( 'node_change' , key = 'id' ) [ ( Column ( 'id' , auto_increment = True ) , Column ( 'repos' , type = 'int' ) , Column ( 'rev' , key_size = 40 ) , Column ( 'path' , key_size = 255 ) , Column ( 'node_type' , size = 1 ) , Column ( 'change_type' , size = 1 ) , Column ( 'base_path' ) , Column ( 'base_rev' ) , Index ( [ 'repos' , 'rev' , 'path' ] ) , Index ( [ 'repos' , 'path' , 'rev' ] ) ) ] #NEWLINE# with env . db_transaction : #NEWLINE# #INDENT# cursor . execute ( 'CREATE TEMPORARY TABLE node_change_old AS\n                          SELECT * FROM node_change' ) #NEWLINE# cursor . execute ( 'DROP TABLE node_change' ) #NEWLINE# for stmt in db_connector . to_sql ( table ) : #NEWLINE# #INDENT# cursor . execute ( stmt ) #NEWLINE# #UNINDENT# cursor . execute ( '            INSERT INTO node_change\n            (repos,rev,path,node_type,change_type,base_path,base_rev)\n            SELECT repos,rev,path,node_type,change_type,base_path,base_rev\n            FROM node_change_old' ) #NEWLINE# cursor . execute ( 'DROP TABLE node_change_old' )