)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"81009a81facbfc995b9c5e8859f23d8309bdc35e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"as part of the migration FKs get removed which will also have"},{"line_number":11,"context_line":"some performance improvements"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Co-Authored-By: Matthew Treinish \u003cmtreinish@kortar.org\u003e"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"Change-Id: Ie22ed9ef2ae0ad4fc0491ff93e77bc7c506c9cb4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"ba8a016a_166d3504","line":13,"updated":"2015-11-16 22:36:08.000000000","message":"I\u0027m not sure I\u0027m really a co-author, I must have added this in on rev2, but this is sufficiently different we should remove this","commit_id":"9e772f7e03a7945c9c3511b86da72d4e05f168f9"}],"subunit2sql/db/models.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a0885958a5820f85cc6c9fd3d29ab0c039e9a45f","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                                          name\u003d\u0027ix_test_run_test_id_run_id\u0027))"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    id \u003d sa.Column(sa.BigInteger, primary_key\u003dTrue)"},{"line_number":79,"context_line":"    test_id \u003d sa.Column(sa.BigInteger, sa.ForeignKey(\u0027tests.id\u0027),"},{"line_number":80,"context_line":"                        nullable\u003dFalse)"},{"line_number":81,"context_line":"    run_id \u003d sa.Column(sa.BigInteger, sa.ForeignKey(\u0027runs.id\u0027), nullable\u003dFalse)"},{"line_number":82,"context_line":"    status \u003d sa.Column(sa.String(256))"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_8a2463af","line":79,"updated":"2015-11-17 19:41:40.000000000","message":"I thought we dropped foreign keys","commit_id":"ede6cb2481c6b76083485beaaadb27dc1e1ab12d"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a0885958a5820f85cc6c9fd3d29ab0c039e9a45f","unresolved":false,"context_lines":[{"line_number":78,"context_line":"    id \u003d sa.Column(sa.BigInteger, primary_key\u003dTrue)"},{"line_number":79,"context_line":"    test_id \u003d sa.Column(sa.BigInteger, sa.ForeignKey(\u0027tests.id\u0027),"},{"line_number":80,"context_line":"                        nullable\u003dFalse)"},{"line_number":81,"context_line":"    run_id \u003d sa.Column(sa.BigInteger, sa.ForeignKey(\u0027runs.id\u0027), nullable\u003dFalse)"},{"line_number":82,"context_line":"    status \u003d sa.Column(sa.String(256))"},{"line_number":83,"context_line":"    start_time \u003d sa.Column(sa.DateTime())"},{"line_number":84,"context_line":"    start_time_microsecond \u003d sa.Column(sa.Integer(), default\u003d0)"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_2a3c57c7","line":81,"updated":"2015-11-17 19:41:40.000000000","message":"I thought we dropped foreign keys","commit_id":"ede6cb2481c6b76083485beaaadb27dc1e1ab12d"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a0885958a5820f85cc6c9fd3d29ab0c039e9a45f","unresolved":false,"context_lines":[{"line_number":93,"context_line":"    id \u003d sa.Column(sa.BigInteger, primary_key\u003dTrue)"},{"line_number":94,"context_line":"    key \u003d sa.Column(sa.String(255))"},{"line_number":95,"context_line":"    value \u003d sa.Column(sa.String(255))"},{"line_number":96,"context_line":"    run_id \u003d sa.Column(sa.BigInteger, sa.ForeignKey(\u0027runs.id\u0027))"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"class TestRunMetadata(BASE, SubunitBase):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_aa4e076d","line":96,"updated":"2015-11-17 19:41:40.000000000","message":"I thought we dropped foreign keys","commit_id":"ede6cb2481c6b76083485beaaadb27dc1e1ab12d"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a0885958a5820f85cc6c9fd3d29ab0c039e9a45f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    id \u003d sa.Column(sa.BigInteger, primary_key\u003dTrue)"},{"line_number":105,"context_line":"    key \u003d sa.Column(sa.String(255))"},{"line_number":106,"context_line":"    value \u003d sa.Column(sa.String(255))"},{"line_number":107,"context_line":"    test_run_id \u003d sa.Column(sa.BigInteger, sa.ForeignKey(\u0027test_runs.id\u0027))"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"class TestMetadata(BASE, SubunitBase):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_6a581f33","line":107,"updated":"2015-11-17 19:41:40.000000000","message":"I thought we dropped foreign keys","commit_id":"ede6cb2481c6b76083485beaaadb27dc1e1ab12d"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a0885958a5820f85cc6c9fd3d29ab0c039e9a45f","unresolved":false,"context_lines":[{"line_number":115,"context_line":"    id \u003d sa.Column(sa.BigInteger, primary_key\u003dTrue)"},{"line_number":116,"context_line":"    key \u003d sa.Column(sa.String(255))"},{"line_number":117,"context_line":"    value \u003d sa.Column(sa.String(255))"},{"line_number":118,"context_line":"    test_id \u003d sa.Column(sa.Integer, sa.ForeignKey(\u0027tests.id\u0027))"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"class Attachments(BASE, SubunitBase):"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_2a15373f","line":118,"updated":"2015-11-17 19:41:40.000000000","message":"Shouldn\u0027t this be BigInteger?","commit_id":"ede6cb2481c6b76083485beaaadb27dc1e1ab12d"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"a0885958a5820f85cc6c9fd3d29ab0c039e9a45f","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    __tablename__ \u003d \u0027attachments\u0027"},{"line_number":123,"context_line":"    __table_args__ \u003d (sa.Index(\u0027ix_attachemnts_id\u0027,"},{"line_number":124,"context_line":"                               \u0027test_run_id\u0027),)"},{"line_number":125,"context_line":"    id \u003d sa.Column(sa.Integer, primary_key\u003dTrue)"},{"line_number":126,"context_line":"    test_run_id \u003d sa.Column(sa.BigInteger)"},{"line_number":127,"context_line":"    label \u003d sa.Column(sa.String(255))"},{"line_number":128,"context_line":"    attachment \u003d sa.Column(sa.LargeBinary())"}],"source_content_type":"text/x-python","patch_set":13,"id":"ba8a016a_07038c10","line":125,"updated":"2015-11-17 19:41:40.000000000","message":"Why is this not a BigInteger like the others?","commit_id":"ede6cb2481c6b76083485beaaadb27dc1e1ab12d"}],"subunit2sql/migrations/versions/2822a408bdd0_uuid_to_integer_ids.py":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"81009a81facbfc995b9c5e8859f23d8309bdc35e","unresolved":false,"context_lines":[{"line_number":133,"context_line":"    else:"},{"line_number":134,"context_line":"        new_id_source \u003d \u0027NULL\u0027"},{"line_number":135,"context_line":"    op.execute(\u0027INSERT INTO tests_new SELECT id, {}, test_id, run_count, \u0027"},{"line_number":136,"context_line":"               \u0027success, failure, run_time FROM tests\u0027.format(new_id_source))"},{"line_number":137,"context_line":"    op.execute(\u0027INSERT INTO runs_new SELECT id, {}, skips, fails, passes, \u0027"},{"line_number":138,"context_line":"               \u0027run_time, artifacts, run_at FROM runs\u0027.format(new_id_source))"},{"line_number":139,"context_line":"    if new_id_source \u003d\u003d \u0027ROWID\u0027:"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_a95f2e0d","line":136,"updated":"2015-11-16 22:36:08.000000000","message":"postgres is not happy with this:\n\nhttp://logs.openstack.org/09/235009/4/check/gate-subunit2sql-python27/088fb08/console.html#_2015-11-16_21_41_40_231","commit_id":"9e772f7e03a7945c9c3511b86da72d4e05f168f9"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"81009a81facbfc995b9c5e8859f23d8309bdc35e","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        new_rm_id \u003d \u0027rm.ROWID\u0027"},{"line_number":175,"context_line":"    else:"},{"line_number":176,"context_line":"        new_rm_id \u003d \u0027NULL\u0027"},{"line_number":177,"context_line":"    op.execute(\u0027INSERT INTO run_metadata_new SELECT rm.id, {}, key, value, \u0027"},{"line_number":178,"context_line":"               \u0027run_id, rn.new_id FROM run_metadata rm INNER JOIN \u0027"},{"line_number":179,"context_line":"               \u0027runs_new rn ON rm.run_id \u003d rn.id\u0027.format(new_rm_id))"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_76360105","line":177,"updated":"2015-11-16 22:36:08.000000000","message":"mysql does not like this sql statement, it throws a syntax error on it:\n\nhttp://logs.openstack.org/09/235009/4/check/gate-subunit2sql-python27/088fb08/console.html#_2015-11-16_21_41_39_808","commit_id":"9e772f7e03a7945c9c3511b86da72d4e05f168f9"},{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"81009a81facbfc995b9c5e8859f23d8309bdc35e","unresolved":false,"context_lines":[{"line_number":221,"context_line":"    op.rename_table(\"test_run_metadata_new\", \"test_run_metadata\")"},{"line_number":222,"context_line":"    op.rename_table(\"run_metadata_new\", \"run_metadata\")"},{"line_number":223,"context_line":"    op.rename_table(\"attachments_new\", \"attachments\")"},{"line_number":224,"context_line":"    "},{"line_number":225,"context_line":"    # Drop olds"},{"line_number":226,"context_line":"    op.drop_table(\"test_runs_old\")"},{"line_number":227,"context_line":"    op.drop_table(\"test_metadata_old\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"ba8a016a_f67431d0","line":224,"updated":"2015-11-16 22:36:08.000000000","message":"white space","commit_id":"9e772f7e03a7945c9c3511b86da72d4e05f168f9"},{"author":{"_account_id":1921,"name":"Andrea Frittoli","email":"andrea.frittoli@gmail.com","username":"andrea-frittoli"},"change_message_id":"f098d06d53644aa30278a2b49a2c881341d2e3c8","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            errors.append(\"{} has {} rows and {}_new has {} rows\".format("},{"line_number":289,"context_line":"                table, old_count, table, new_count))"},{"line_number":290,"context_line":"    if errors:"},{"line_number":291,"context_line":"        raise RuntimeError(\"Failed count checks: {}\".format(\u0027,\u0027.join(errors)))"},{"line_number":292,"context_line":""},{"line_number":293,"context_line":"    # Rename tables"},{"line_number":294,"context_line":"    op.rename_table(\"tests\", \"tests_old\")"}],"source_content_type":"text/x-python","patch_set":18,"id":"ba8a016a_6798f46a","line":291,"updated":"2015-11-19 14:00:01.000000000","message":"If there is an error, the _new table will stay around, which is probably good for troubleshooting. However a new migration won\u0027t run until those are cleaned up.\nI guess it would be good to mentioned that in the error message, but I\u0027m not going to -1 on this.","commit_id":"b094b96bb9eee0de46f6a69f4a147711ca649477"}]}
