)]}'
{"ceilometer/storage/sqlalchemy/migrate_repo/versions/035_event_index_cleanup.py":[{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"66c6f10aae12b9a38668a79f33bbe3d121e71114","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    if meta.bind.engine.name \u003d\u003d \u0027mysql\u0027:"},{"line_number":40,"context_line":"        event_params[\u0027name\u0027] \u003d \"trait_ibfk_2\""},{"line_number":41,"context_line":"        event_type_params[\u0027name\u0027] \u003d \"_\".join((\u0027fk\u0027, \u0027event_type\u0027, \u0027id\u0027))"},{"line_number":42,"context_line":"        trait_type_params[\u0027name\u0027] \u003d \"_\".join((\u0027fk\u0027, \u0027trait_type\u0027, \u0027id\u0027))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    if create:"},{"line_number":45,"context_line":"        ForeignKeyConstraint(**event_params).create()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_3d9b8f73","line":42,"updated":"2014-05-02 08:46:15.000000000","message":"Is the join actually buying you anything here?\n\nSince the joined tuples are constant in both case, would simply the following be clearer?\n\n   event_type_params[\u0027name\u0027] \u003d \u0027fk_event_type_id\u0027\n   trait_type_params[\u0027name\u0027] \u003d \u0027fk_trait_type_id\u0027\n\nAlso more consistent with the pattern used in line 40.","commit_id":"516c2b2c8687777d94f6bac628cf6b5bc3022c45"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0749986d49bb49771a69bddd08c714bf56fcc598","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    if meta.bind.engine.name \u003d\u003d \u0027mysql\u0027:"},{"line_number":40,"context_line":"        event_params[\u0027name\u0027] \u003d \"trait_ibfk_2\""},{"line_number":41,"context_line":"        event_type_params[\u0027name\u0027] \u003d \"_\".join((\u0027fk\u0027, \u0027event_type\u0027, \u0027id\u0027))"},{"line_number":42,"context_line":"        trait_type_params[\u0027name\u0027] \u003d \"_\".join((\u0027fk\u0027, \u0027trait_type\u0027, \u0027id\u0027))"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    if create:"},{"line_number":45,"context_line":"        ForeignKeyConstraint(**event_params).create()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_f17790d2","line":42,"in_reply_to":"9ad9bd40_3d9b8f73","updated":"2014-05-02 13:22:43.000000000","message":"copy/paste really... i can change it but i did it this way just so if you search files it\u0027d be easier to track the name.\n\npreference?","commit_id":"516c2b2c8687777d94f6bac628cf6b5bc3022c45"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"66c6f10aae12b9a38668a79f33bbe3d121e71114","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    trait \u003d sa.Table(\u0027trait\u0027, meta, autoload\u003dTrue)"},{"line_number":59,"context_line":"    event \u003d sa.Table(\u0027event\u0027, meta, autoload\u003dTrue)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    _handle_foreign_keys(meta)"},{"line_number":62,"context_line":"    # drop all indexes (including indices indirectly created by foreign keys"},{"line_number":63,"context_line":"    # in MySQL InnoDB)"},{"line_number":64,"context_line":"    for index in trait.indexes:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_5d905343","line":61,"updated":"2014-05-02 08:46:15.000000000","message":"Not loving the defaulted create kwarg, from a readability PoV. Would read clearer to me more explicitly, say:\n\n  _handle_foreign_keys(meta, create\u003dFalse)","commit_id":"516c2b2c8687777d94f6bac628cf6b5bc3022c45"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0749986d49bb49771a69bddd08c714bf56fcc598","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    trait \u003d sa.Table(\u0027trait\u0027, meta, autoload\u003dTrue)"},{"line_number":59,"context_line":"    event \u003d sa.Table(\u0027event\u0027, meta, autoload\u003dTrue)"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    _handle_foreign_keys(meta)"},{"line_number":62,"context_line":"    # drop all indexes (including indices indirectly created by foreign keys"},{"line_number":63,"context_line":"    # in MySQL InnoDB)"},{"line_number":64,"context_line":"    for index in trait.indexes:"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_517d9cb0","line":61,"in_reply_to":"9ad9bd40_5d905343","updated":"2014-05-02 13:22:43.000000000","message":"will do","commit_id":"516c2b2c8687777d94f6bac628cf6b5bc3022c45"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"66c6f10aae12b9a38668a79f33bbe3d121e71114","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    for index in event.indexes:"},{"line_number":68,"context_line":"        if (len(index.columns.keys()) \u003d\u003d 1 and"},{"line_number":69,"context_line":"                index.columns.keys()[0] \u003d\u003d \u0027event_type_id\u0027):"},{"line_number":70,"context_line":"            index.drop()"},{"line_number":71,"context_line":"    sa.Index(\u0027ix_event_type_id\u0027, event.c.event_type_id).create()"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_9d9adb61","line":69,"updated":"2014-05-02 08:46:15.000000000","message":"Clearer as simply:\n\n  if index.columns.keys() \u003d\u003d [\u0027event_type_id\u0027]:","commit_id":"516c2b2c8687777d94f6bac628cf6b5bc3022c45"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"0749986d49bb49771a69bddd08c714bf56fcc598","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    for index in event.indexes:"},{"line_number":68,"context_line":"        if (len(index.columns.keys()) \u003d\u003d 1 and"},{"line_number":69,"context_line":"                index.columns.keys()[0] \u003d\u003d \u0027event_type_id\u0027):"},{"line_number":70,"context_line":"            index.drop()"},{"line_number":71,"context_line":"    sa.Index(\u0027ix_event_type_id\u0027, event.c.event_type_id).create()"},{"line_number":72,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad9bd40_b1450872","line":69,"in_reply_to":"9ad9bd40_9d9adb61","updated":"2014-05-02 13:22:43.000000000","message":"will do","commit_id":"516c2b2c8687777d94f6bac628cf6b5bc3022c45"}],"ceilometer/storage/sqlalchemy/migrate_repo/versions/038_event_index_cleanup.py":[{"author":{"_account_id":10987,"name":"Igor Degtiarov","username":"tovstun","inactive":true},"change_message_id":"4328032aff9f1c785e6f14a8a40c8a5309598dfb","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    trait_type_params \u003d {\u0027columns\u0027: [trait.c.trait_type_id],"},{"line_number":38,"context_line":"                         \u0027refcolumns\u0027: [trait_type.c.id]}"},{"line_number":39,"context_line":"    if meta.bind.engine.name \u003d\u003d \u0027mysql\u0027:"},{"line_number":40,"context_line":"        event_params[\u0027name\u0027] \u003d \"trait_ibfk_2\""},{"line_number":41,"context_line":"        event_type_params[\u0027name\u0027] \u003d \"_\".join((\u0027fk\u0027, \u0027event_type\u0027, \u0027id\u0027))"},{"line_number":42,"context_line":"        trait_type_params[\u0027name\u0027] \u003d \"_\".join((\u0027fk\u0027, \u0027trait_type\u0027, \u0027id\u0027))"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_c971120e","line":40,"updated":"2014-06-24 13:17:37.000000000","message":"I am not sure, but may be it should be s/trait_ibfk_2/trait_idfk_2/ ?","commit_id":"0b3f6ce7747c4c56bd1c0c87703822a8ae6a85ef"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1ee3622d9c0f4f411c9bd1a1ab57e5fa6594acd0","unresolved":false,"context_lines":[{"line_number":37,"context_line":"    trait_type_params \u003d {\u0027columns\u0027: [trait.c.trait_type_id],"},{"line_number":38,"context_line":"                         \u0027refcolumns\u0027: [trait_type.c.id]}"},{"line_number":39,"context_line":"    if meta.bind.engine.name \u003d\u003d \u0027mysql\u0027:"},{"line_number":40,"context_line":"        event_params[\u0027name\u0027] \u003d \"trait_ibfk_2\""},{"line_number":41,"context_line":"        event_type_params[\u0027name\u0027] \u003d \"_\".join((\u0027fk\u0027, \u0027event_type\u0027, \u0027id\u0027))"},{"line_number":42,"context_line":"        trait_type_params[\u0027name\u0027] \u003d \"_\".join((\u0027fk\u0027, \u0027trait_type\u0027, \u0027id\u0027))"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1ae5cdf2_f3a87823","line":40,"in_reply_to":"1ae5cdf2_c971120e","updated":"2014-06-24 14:22:06.000000000","message":"good catch, ibfk is the default naming innodb gives to keys. i\u0027ve checked to verify. \n\nhttp://dba.stackexchange.com/questions/15530/what-does-ibfk-stand-for-in-mysql","commit_id":"0b3f6ce7747c4c56bd1c0c87703822a8ae6a85ef"},{"author":{"_account_id":2284,"name":"Eoghan Glynn","email":"eglynn@redhat.com","username":"eglynn"},"change_message_id":"3e529ad3b4ef35d947b688021efae929ea6c2ed6","unresolved":false,"context_lines":[{"line_number":50,"context_line":"    def __exit__(self, type, value, traceback):"},{"line_number":51,"context_line":"        ForeignKeyConstraint(**self.event_params).create()"},{"line_number":52,"context_line":"        ForeignKeyConstraint(**self.event_type_params).create()"},{"line_number":53,"context_line":"        ForeignKeyConstraint(**self.trait_type_params).create()"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"def upgrade(migrate_engine):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1ae5cdf2_9002bd70","line":53,"updated":"2014-06-24 18:58:33.000000000","message":"A dumb question, but can you explain why the FK constraints need to be dropped before changing the indices, before being re-created on exit?\n\nBTW I found it a tiny bit jarring for __enter__ to tear stuff down and then __exit__ to set it up again, but that\u0027s just me :)","commit_id":"a28ecaa9f831b2fc97a1c81896ef25d57ca58c38"}]}
