)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Once again, we have a case where we\u0027ve forgotten to apply a change to"},{"line_number":54,"context_line":"the shadow table. We also have our first instance of table, the \u0027tags\u0027"},{"line_number":55,"context_line":"table, that does is not soft deletable and therefore does not have a"},{"line_number":56,"context_line":"shadow table. Both are handled and the former can be resolved later."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Also note that we encounter a small bug in sqlalchemy-migrate, whereby"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"34c0021e_2b0aa95c","line":55,"range":{"start_line":55,"start_character":12,"end_line":55,"end_character":16},"updated":"2021-01-05 14:07:35.000000000","message":"nit: remove it","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cb1540da94fff576a21d9a9155d5f1f756ab2003","unresolved":true,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"Once again, we have a case where we\u0027ve forgotten to apply a change to"},{"line_number":54,"context_line":"the shadow table. We also have our first instance of table, the \u0027tags\u0027"},{"line_number":55,"context_line":"table, that does is not soft deletable and therefore does not have a"},{"line_number":56,"context_line":"shadow table. Both are handled and the former can be resolved later."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"Also note that we encounter a small bug in sqlalchemy-migrate along with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":7,"id":"9b2e946a_4b8f29f4","line":55,"range":{"start_line":55,"start_character":7,"end_line":55,"end_character":23},"updated":"2021-01-07 13:09:31.000000000","message":"nit: that is not","commit_id":"b4fc1c141bb90e372742398d127af627706e08b5"}],"nova/db/sqlalchemy/migrate_repo/compare_db_schemas":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f9e73567_74497e77","updated":"2021-01-05 14:07:35.000000000","message":"I guess this is an unintentional check in but I can accept to store this file while we are doing the compaction patches to let reviews recreate the schema diffs. Then at the end we can either drop it from the repo or clean it up and move it to the tools/ directory","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76ddfe47a01bf15dccec775415b93e4a1c98d09b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"fdf3c31a_77fc707b","in_reply_to":"f9e73567_74497e77","updated":"2021-01-06 17:36:47.000000000","message":"I\u0027ve dropped this. I have a better tool in [1] if we decide to put this in-tree.\n\n[1] https://review.opendev.org/c/openstack/nova/+/768364","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"}],"nova/db/sqlalchemy/migrate_repo/nova_after.sql":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"bbd714fe_23467d7e","updated":"2021-01-05 14:07:35.000000000","message":"I think this is unintentional check in let\u0027s not merge this file into the repo","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76ddfe47a01bf15dccec775415b93e4a1c98d09b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"9dd220dc_97ae0bae","in_reply_to":"bbd714fe_23467d7e","updated":"2021-01-06 17:36:47.000000000","message":"Done","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"}],"nova/db/sqlalchemy/migrate_repo/nova_before.sql":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f23cbd9a_24455bc4","updated":"2021-01-05 14:07:35.000000000","message":"ditto","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76ddfe47a01bf15dccec775415b93e4a1c98d09b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"1260e23b_b440c0d2","in_reply_to":"f23cbd9a_24455bc4","updated":"2021-01-06 17:36:47.000000000","message":"Done","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"}],"nova/db/sqlalchemy/migrate_repo/versions/273_sqlite_foreign_keys.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":53,"context_line":"]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"UNIQUES \u003d ["},{"line_number":56,"context_line":"    (\u0027compute_nodes\u0027, \u0027uniq_compute_nodes0host0hypervisor_hostname\u0027,"},{"line_number":57,"context_line":"     [\u0027host\u0027, \u0027hypervisor_hostname\u0027]),"},{"line_number":58,"context_line":"    (\u0027fixed_ips\u0027, \u0027uniq_fixed_ips0address0deleted\u0027,"},{"line_number":59,"context_line":"     [\u0027address\u0027, \u0027deleted\u0027]),"},{"line_number":60,"context_line":"    (\u0027instance_info_caches\u0027, \u0027uniq_instance_info_caches0instance_uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"31459ce8_70894605","side":"PARENT","line":57,"range":{"start_line":56,"start_character":4,"end_line":57,"end_character":38},"updated":"2021-01-05 14:07:35.000000000","message":"279 changed this to uniq_compute_nodes0host0hypervisor_hostname0deleted and that is now in 280 so we are OK.","commit_id":"2c3a648df7dcc316961b91cb9e6f6018e114f1c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76ddfe47a01bf15dccec775415b93e4a1c98d09b","unresolved":false,"context_lines":[{"line_number":53,"context_line":"]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"UNIQUES \u003d ["},{"line_number":56,"context_line":"    (\u0027compute_nodes\u0027, \u0027uniq_compute_nodes0host0hypervisor_hostname\u0027,"},{"line_number":57,"context_line":"     [\u0027host\u0027, \u0027hypervisor_hostname\u0027]),"},{"line_number":58,"context_line":"    (\u0027fixed_ips\u0027, \u0027uniq_fixed_ips0address0deleted\u0027,"},{"line_number":59,"context_line":"     [\u0027address\u0027, \u0027deleted\u0027]),"},{"line_number":60,"context_line":"    (\u0027instance_info_caches\u0027, \u0027uniq_instance_info_caches0instance_uuid\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"c198284d_9f57777a","side":"PARENT","line":57,"range":{"start_line":56,"start_character":4,"end_line":57,"end_character":38},"in_reply_to":"31459ce8_70894605","updated":"2021-01-06 17:36:47.000000000","message":"Ack","commit_id":"2c3a648df7dcc316961b91cb9e6f6018e114f1c2"}],"nova/db/sqlalchemy/migrate_repo/versions/278_remove_service_fk_in_compute_nodes.py":[{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":62,"context_line":"            fkey.drop()"},{"line_number":63,"context_line":"            break"},{"line_number":64,"context_line":"    for index in compute_nodes.indexes:"},{"line_number":65,"context_line":"        if \u0027service_id\u0027 in index.columns:"},{"line_number":66,"context_line":"            # Delete the nested index which was created by the FK"},{"line_number":67,"context_line":"            index.drop()"},{"line_number":68,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":6,"id":"12cddefd_072e7997","side":"PARENT","line":65,"updated":"2021-01-05 14:07:35.000000000","message":"there is no such index in 280 so I guess this migration deleted a nonexistent index. That is OK","commit_id":"2c3a648df7dcc316961b91cb9e6f6018e114f1c2"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76ddfe47a01bf15dccec775415b93e4a1c98d09b","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            fkey.drop()"},{"line_number":63,"context_line":"            break"},{"line_number":64,"context_line":"    for index in compute_nodes.indexes:"},{"line_number":65,"context_line":"        if \u0027service_id\u0027 in index.columns:"},{"line_number":66,"context_line":"            # Delete the nested index which was created by the FK"},{"line_number":67,"context_line":"            index.drop()"},{"line_number":68,"context_line":"            break"}],"source_content_type":"text/x-python","patch_set":6,"id":"91f530f1_11807d78","side":"PARENT","line":65,"in_reply_to":"12cddefd_072e7997","updated":"2021-01-06 17:36:47.000000000","message":"Indeed","commit_id":"2c3a648df7dcc316961b91cb9e6f6018e114f1c2"}],"nova/db/sqlalchemy/migrate_repo/versions/280_kilo.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"f94fe6c2402ad344d0f1a9db72d0202f219503e1","unresolved":false,"context_lines":[{"line_number":268,"context_line":"        Column(\u0027host\u0027, String(255), nullable\u003dTrue),"},{"line_number":269,"context_line":"        UniqueConstraint("},{"line_number":270,"context_line":"            \u0027host\u0027, \u0027hypervisor_hostname\u0027, \u0027deleted\u0027"},{"line_number":271,"context_line":"            name\u003d\u0027uniq_compute_nodes0host0hypervisor_hostname0deleted\u0027,"},{"line_number":272,"context_line":"        ),"},{"line_number":273,"context_line":"        mysql_engine\u003d\u0027InnoDB\u0027,"},{"line_number":274,"context_line":"        mysql_charset\u003d\u0027utf8\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"7f6b1bfe_50882dc5","line":271,"updated":"2020-10-15 16:13:36.000000000","message":"pep8: E999 SyntaxError: invalid syntax","commit_id":"a0b147615f388fc7b88907634788ad1a35ee5d32"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"9cf0711061e1095d20ba1705d00d12ef397dcbc0","unresolved":false,"context_lines":[{"line_number":1449,"context_line":"                columns\u003dfkey_pair[0],"},{"line_number":1450,"context_line":"                refcolumns\u003dfkey_pair[1],"},{"line_number":1451,"context_line":"                name\u003dfkey_pair[2],"},{"line_number":1452,"context_line":"            )"},{"line_number":1453,"context_line":""},{"line_number":1454,"context_line":"    # TODO(stephenfin): Fold these in somehow"},{"line_number":1455,"context_line":"    fkey \u003d ForeignKeyConstraint("}],"source_content_type":"text/x-python","patch_set":2,"id":"3f65232a_b02a73e4","line":1452,"updated":"2020-10-22 12:34:48.000000000","message":"damn, missing \u0027create\u0027 here :(","commit_id":"e37893ae6bab156aa300eee753c86fd1a2f76258"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"abf1389a_971a911d","side":"PARENT","line":1360,"updated":"2021-01-05 14:07:35.000000000","message":"273 re-creates this but 278 deletes it. So it is OK to drop it.","commit_id":"2c3a648df7dcc316961b91cb9e6f6018e114f1c2"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":80,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":81,"context_line":"            elif table_name \u003d\u003d \u0027key_pairs\u0027 and column.name \u003d\u003d \u0027type\u0027:"},{"line_number":82,"context_line":"                enum \u003d Enum(\u0027ssh\u0027, \u0027x509\u0027, name\u003d\u0027shadow_keypair_types\u0027)"},{"line_number":83,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":84,"context_line":"            else:"},{"line_number":85,"context_line":"                column_copy \u003d column.copy()"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"65e25a21_ec49f2b3","line":83,"updated":"2021-01-05 14:07:35.000000000","message":"this is form 275.\nwhy we need to special case it? Do we want to have different enum names for the shadow column?\nwhy we don\u0027t have the default set for the shadow?","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"76ddfe47a01bf15dccec775415b93e4a1c98d09b","unresolved":true,"context_lines":[{"line_number":80,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":81,"context_line":"            elif table_name \u003d\u003d \u0027key_pairs\u0027 and column.name \u003d\u003d \u0027type\u0027:"},{"line_number":82,"context_line":"                enum \u003d Enum(\u0027ssh\u0027, \u0027x509\u0027, name\u003d\u0027shadow_keypair_types\u0027)"},{"line_number":83,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":84,"context_line":"            else:"},{"line_number":85,"context_line":"                column_copy \u003d column.copy()"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fbb262af_e3bd6262","line":83,"in_reply_to":"65e25a21_ec49f2b3","updated":"2021-01-06 17:36:47.000000000","message":"I needed this to workaround the following issue with postgres:\n\n    $ python manage.py upgrade --database postgresql://nova:password@localhost/nova\n    279 -\u003e 280...\n    Table(\u0027shadow_key_pairs\u0027, MetaData(bind\u003dEngine(postgresql://nova:***@localhost/nova)), Column(\u0027created_at\u0027, TIMESTAMP(), table\u003d\u003cshadow_key_pairs\u003e), Column(\u0027updated_at\u0027, TIMESTAMP(), table\u003d\u003cshadow_key_pairs\u003e), Co\n    lumn(\u0027deleted_at\u0027, TIMESTAMP(), table\u003d\u003cshadow_key_pairs\u003e), Column(\u0027id\u0027, INTEGER(), table\u003d\u003cshadow_key_pairs\u003e, primary_key\u003dTrue, nullable\u003dFalse, server_default\u003dDefaultClause(\u003csqlalchemy.sql.elements.TextClause obj\n    ect at 0x7f14ce645e48\u003e, for_update\u003dFalse)), Column(\u0027name\u0027, VARCHAR(length\u003d255), table\u003d\u003cshadow_key_pairs\u003e), Column(\u0027user_id\u0027, VARCHAR(length\u003d255), table\u003d\u003cshadow_key_pairs\u003e), Column(\u0027fingerprint\u0027, VARCHAR(length\u003d2\n    55), table\u003d\u003cshadow_key_pairs\u003e), Column(\u0027public_key\u0027, TEXT(), table\u003d\u003cshadow_key_pairs\u003e), Column(\u0027deleted\u0027, INTEGER(), table\u003d\u003cshadow_key_pairs\u003e), Column(\u0027type\u0027, ENUM(\u0027ssh\u0027, \u0027x509\u0027, name\u003d\u0027keypair_types\u0027), table\u003d\u003csh\n    adow_key_pairs\u003e, nullable\u003dFalse, server_default\u003dDefaultClause(\u003csqlalchemy.sql.elements.TextClause object at 0x7f14ce648748\u003e, for_update\u003dFalse)), schema\u003dNone)\n    Exception while creating table.\n    Traceback (most recent call last):\n      File \"/home/stephenfin/Development/openstack/nova/.tox/py36/lib64/python3.6/site-packages/sqlalchemy/engine/base.py\", line 1277, in _execute_context\n        cursor, statement, parameters, context\n      File \"/home/stephenfin/Development/openstack/nova/.tox/py36/lib64/python3.6/site-packages/sqlalchemy/engine/default.py\", line 593, in do_execute\n        cursor.execute(statement, parameters)\n    psycopg2.errors.DuplicateObject: type \"keypair_types\" already exists\n\nHowever, it results in different results for both mysql:\n\n    $ diff 215-mysql.sql 279-mysql.sql\n    --- 215-mysql.sql       2021-01-06 15:12:29.361736227 +0000\n    +++ 279-mysql.sql       2021-01-06 15:16:47.414481364 +0000\n    @@ -1721,7 +1723,7 @@\n       `fingerprint` varchar(255) DEFAULT NULL,\n       `public_key` mediumtext DEFAULT NULL,\n       `deleted` int(11) DEFAULT NULL,\n    -  `type` enum(\u0027ssh\u0027,\u0027x509\u0027) NOT NULL DEFAULT \u0027ssh\u0027,\n    +  `type` enum(\u0027ssh\u0027,\u0027x509\u0027) DEFAULT NULL,\n       PRIMARY KEY (`id`)\n     ) ENGINE\u003dInnoDB DEFAULT CHARSET\u003dutf8;\n     /*!40101 SET character_set_client \u003d @saved_cs_client */;\n\nand postgres:\n\n    --- 215-postgres.sql    2021-01-06 15:13:11.240044313 +0000\n    +++ 279-postgres.sql    2021-01-06 15:17:23.849881339 +0000\n    @@ -66,6 +66,18 @@\n\n     ALTER TYPE public.shadow_instances0locked_by OWNER TO nova;\n\n    +--\n    +-- Name: shadow_keypair_types; Type: TYPE; Schema: public; Owner: nova\n    +--\n    +\n    +CREATE TYPE public.shadow_keypair_types AS ENUM (\n    +    \u0027ssh\u0027,\n    +    \u0027x509\u0027\n    +);\n    +\n    +\n    +ALTER TYPE public.shadow_keypair_types OWNER TO nova;\n    +\n     SET default_tablespace \u003d \u0027\u0027;\n\n     SET default_table_access_method \u003d heap;\n    @@ -3525,7 +3537,7 @@\n         fingerprint character varying(255),\n         public_key text,\n         deleted integer,\n    -    type public.keypair_types DEFAULT \u0027ssh\u0027::public.keypair_types NOT NULL\n    +    type public.shadow_keypair_types\n     );\n\nSo clearly this isn\u0027t the solution, but I\u0027m not sure what is yet. TBD.","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":15334,"name":"Stephen Finucane","display_name":"stephenfin","email":"stephenfin@redhat.com","username":"sfinucan"},"change_message_id":"01ec847de4f49f1700dcad1927b6fb12cb95206d","unresolved":false,"context_lines":[{"line_number":80,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":81,"context_line":"            elif table_name \u003d\u003d \u0027key_pairs\u0027 and column.name \u003d\u003d \u0027type\u0027:"},{"line_number":82,"context_line":"                enum \u003d Enum(\u0027ssh\u0027, \u0027x509\u0027, name\u003d\u0027shadow_keypair_types\u0027)"},{"line_number":83,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":84,"context_line":"            else:"},{"line_number":85,"context_line":"                column_copy \u003d column.copy()"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9a23f339_68c05587","line":83,"in_reply_to":"76cd8e80_2723a171","updated":"2021-01-07 13:28:54.000000000","message":"In case anyone else is looking at this, I resolved it by using a specific postgres Enum, as discussed in the commit message of the next PS [1]\n\n[1] https://review.opendev.org/c/openstack/nova/+/758396/7//COMMIT_MSG#62","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"cb1540da94fff576a21d9a9155d5f1f756ab2003","unresolved":true,"context_lines":[{"line_number":80,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":81,"context_line":"            elif table_name \u003d\u003d \u0027key_pairs\u0027 and column.name \u003d\u003d \u0027type\u0027:"},{"line_number":82,"context_line":"                enum \u003d Enum(\u0027ssh\u0027, \u0027x509\u0027, name\u003d\u0027shadow_keypair_types\u0027)"},{"line_number":83,"context_line":"                column_copy \u003d Column(column.name, enum)"},{"line_number":84,"context_line":"            else:"},{"line_number":85,"context_line":"                column_copy \u003d column.copy()"},{"line_number":86,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"76cd8e80_2723a171","line":83,"in_reply_to":"fbb262af_e3bd6262","updated":"2021-01-07 13:09:31.000000000","message":"thanks","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":1147,"context_line":"              agent_builds.c.architecture),"},{"line_number":1148,"context_line":""},{"line_number":1149,"context_line":"        # block_device_mapping"},{"line_number":1150,"context_line":"        Index(\u0027snapshot_id\u0027, block_device_mapping.c.snapshot_id),"},{"line_number":1151,"context_line":"        Index(\u0027volume_id\u0027, block_device_mapping.c.volume_id),"},{"line_number":1152,"context_line":"        Index(\u0027block_device_mapping_instance_uuid_idx\u0027,"},{"line_number":1153,"context_line":"              block_device_mapping.c.instance_uuid),"},{"line_number":1154,"context_line":"        Index(\u0027block_device_mapping_instance_uuid_device_name_idx\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"cdca9036_319fa5b9","line":1151,"range":{"start_line":1150,"start_character":1,"end_line":1151,"end_character":61},"updated":"2021-01-05 14:07:35.000000000","message":"This in sync with the 271 migration. However I feel this also have the potential to introduce conflict in postgres and sqlite. Obviously it does not cause any problem right now or we would have a fat bugreport open. So meh.","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":1177,"context_line":"        Index(\u0027dns_domains_project_id_idx\u0027, dns_domains.c.project_id),"},{"line_number":1178,"context_line":""},{"line_number":1179,"context_line":"        # fixed_ips"},{"line_number":1180,"context_line":"        Index(\u0027network_id\u0027, fixed_ips.c.network_id),"},{"line_number":1181,"context_line":"        Index(\u0027address\u0027, fixed_ips.c.address),"},{"line_number":1182,"context_line":"        Index(\u0027fixed_ips_instance_uuid_fkey\u0027, fixed_ips.c.instance_uuid),"},{"line_number":1183,"context_line":"        Index(\u0027fixed_ips_virtual_interface_id_fkey\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"eb53402c_241e80fa","line":1180,"range":{"start_line":1180,"start_character":8,"end_line":1180,"end_character":52},"updated":"2021-01-05 14:07:35.000000000","message":"271, possible future conflict in naming","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":1178,"context_line":""},{"line_number":1179,"context_line":"        # fixed_ips"},{"line_number":1180,"context_line":"        Index(\u0027network_id\u0027, fixed_ips.c.network_id),"},{"line_number":1181,"context_line":"        Index(\u0027address\u0027, fixed_ips.c.address),"},{"line_number":1182,"context_line":"        Index(\u0027fixed_ips_instance_uuid_fkey\u0027, fixed_ips.c.instance_uuid),"},{"line_number":1183,"context_line":"        Index(\u0027fixed_ips_virtual_interface_id_fkey\u0027,"},{"line_number":1184,"context_line":"              fixed_ips.c.virtual_interface_id),"}],"source_content_type":"text/x-python","patch_set":6,"id":"22e3d2e1_eeebddc5","line":1181,"range":{"start_line":1181,"start_character":8,"end_line":1181,"end_character":46},"updated":"2021-01-05 14:07:35.000000000","message":"that is a compound fix for multiple things. This index was missing in sqlite and fixed in 273. Also it was special cased before for mysql and for postgres, that is now replaced with a common index definition. It looks good.","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":1195,"context_line":"              fixed_ips.c.updated_at),"},{"line_number":1196,"context_line":""},{"line_number":1197,"context_line":"        # floating_ips"},{"line_number":1198,"context_line":"        Index(\u0027fixed_ip_id\u0027, floating_ips.c.fixed_ip_id),"},{"line_number":1199,"context_line":"        Index(\u0027floating_ips_host_idx\u0027, floating_ips.c.host),"},{"line_number":1200,"context_line":"        Index(\u0027floating_ips_project_id_idx\u0027, floating_ips.c.project_id),"},{"line_number":1201,"context_line":"        Index(\u0027floating_ips_pool_deleted_fixed_ip_id_project_id_idx\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"941140dc_0874674d","line":1198,"updated":"2021-01-05 14:07:35.000000000","message":"271, possible future naming conflict","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"85e900fd913cddd1cf95f21b41b1fa6e4f589ca7","unresolved":true,"context_lines":[{"line_number":1342,"context_line":"            Index("},{"line_number":1343,"context_line":"                \u0027security_group_id\u0027,"},{"line_number":1344,"context_line":"                security_group_instance_association.c.security_group_id),"},{"line_number":1345,"context_line":"        ]"},{"line_number":1346,"context_line":""},{"line_number":1347,"context_line":"        for index in mysql_pre_indexes:"},{"line_number":1348,"context_line":"            index.create(migrate_engine)"}],"source_content_type":"text/x-python","patch_set":6,"id":"19047296_02605f81","line":1345,"updated":"2021-01-05 14:07:35.000000000","message":"as far as I see this is a remainder for the mysql specific indexes from L1109 the rest was moved to be engine agnostic index. Looks good","commit_id":"93b95201efdc26a26128d6f8fc4cb4b098780fcd"}]}
