)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"8220c98f525296c6e329843d22adcdda2c97bade","unresolved":true,"context_lines":[{"line_number":16,"context_line":"Even though mariadb optimizes these style of queries sometimes"},{"line_number":17,"context_line":"(`derived_merge` optimizer), we should not rely on this."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In some cases, we can replace the entire select field list with"},{"line_number":20,"context_line":"`COUNT(*)`. This is only possible if the query has no `GROUP BY`"},{"line_number":21,"context_line":"clause, because otherwise the `COUNT(*)` aggregation would apply to the"},{"line_number":22,"context_line":"groups instead of the entire result set."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Signed-Off-By: Jonas Schäfer \u003cjonas.schaefer@cloudandheat.com\u003e"},{"line_number":25,"context_line":"Change-Id: I6eca066d47503a15d46706b1f925fba5b2919e14"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"50669769_0b2b5ed8","line":22,"range":{"start_line":19,"start_character":0,"end_line":22,"end_character":40},"updated":"2026-02-02 10:05:45.000000000","message":"nice explanation, thanks","commit_id":"e2938ddbaeeb2e0fab522462f0ade77fa1977b7d"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"383f9270c2187b1d946a895974209d58dbb6abf1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Even though mariadb optimizes these style of queries sometimes"},{"line_number":17,"context_line":"(`derived_merge` optimizer), we should not rely on this."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"In some cases, we can replace the entire select field list with"},{"line_number":20,"context_line":"`COUNT(*)`. This is only possible if the query has no `GROUP BY`"},{"line_number":21,"context_line":"clause, because otherwise the `COUNT(*)` aggregation would apply to the"},{"line_number":22,"context_line":"groups instead of the entire result set."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Signed-Off-By: Jonas Schäfer \u003cjonas.schaefer@cloudandheat.com\u003e"},{"line_number":25,"context_line":"Change-Id: I6eca066d47503a15d46706b1f925fba5b2919e14"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"701ba200_88110f8f","line":22,"range":{"start_line":19,"start_character":0,"end_line":22,"end_character":40},"in_reply_to":"50669769_0b2b5ed8","updated":"2026-03-09 12:50:14.000000000","message":"Done","commit_id":"e2938ddbaeeb2e0fab522462f0ade77fa1977b7d"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"50aca0d07df586766cf062c2e8b8e129f251998c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"fbabedb9_e643bec3","updated":"2026-01-27 07:19:33.000000000","message":"recheck timeout","commit_id":"502434a1b96a55c97d25de90a90f6be26beef711"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8708c31d04f944075f91b661f9b7d3e40fe9936d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"a07315b4_25cd1eea","updated":"2026-01-29 16:08:37.000000000","message":"Looks promising, please restore `objects.db.api` file","commit_id":"775fd1c664ce02d87b1dc56cca796a8dbe6c8cc4"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"694eee9357b1d6a0ee9d8e3616c1ec87e0d4380d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"8c9f30e4_7e3eb822","updated":"2026-01-30 07:19:17.000000000","message":"Thanks for the review. Fixed the accidentally-modified file!","commit_id":"775fd1c664ce02d87b1dc56cca796a8dbe6c8cc4"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"3d822e5efae6d44b43b384dd286e445b3d7d8dc1","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":4,"id":"5d2f40c2_fd622d13","updated":"2026-01-27 12:34:03.000000000","message":"There is a risk of adverse effects: if any of these queries ever grows a GROUP BY clause explicitly or implicitly, that\u0027ll cause major havoc. That havoc will be detected in one of two ways:\n\n* If there are no entries matching the query, None will be returned, which will cause a type error down the road.\n* If there are is than one entry matching the query, a MultipleRowsFound exception will be raised.\n\n(If there is exactly one entry, the result is correct.)\n\nI\u0027m not sure if there\u0027s a good way to prevent this from happening in the future.","commit_id":"775fd1c664ce02d87b1dc56cca796a8dbe6c8cc4"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"aa7a6a275d537297738a955fc3e6ec81731fc6d0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"088d99b3_c3c19858","updated":"2026-01-27 13:25:27.000000000","message":"recheck\nstrange, rally fails with subnet update issue, perhaps just a glitch somewhere:\n2026-01-27 12:27:11.830708 | controller |   File \"/opt/stack/rally-openstack/rally_openstack/common/services/network/neutron.py\", line 565, in update_subnet\n2026-01-27 12:27:11.830717 | controller |     resp \u003d self.client.update_subnet(subnet_id, {\"subnet\": body})[\"subnet\"]","commit_id":"775fd1c664ce02d87b1dc56cca796a8dbe6c8cc4"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"17cdcfec5e2b635a33c6c78333a35c378b0132af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"625354ca_f6a40c31","updated":"2026-03-16 08:19:05.000000000","message":"recheck network failure during install","commit_id":"e2938ddbaeeb2e0fab522462f0ade77fa1977b7d"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"938a4b6d7e8ad8375147d2caf65b6089ded1f6aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"40f93a9e_0aa9e0dd","updated":"2026-01-30 10:00:13.000000000","message":"recheck no functional change since last revision","commit_id":"e2938ddbaeeb2e0fab522462f0ade77fa1977b7d"}],"neutron/objects/db/api.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8708c31d04f944075f91b661f9b7d3e40fe9936d","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# TODO(ihrachys): cover the module with functional tests targeting supported"},{"line_number":14,"context_line":"# backends"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron_lib.db import api as db_api"},{"line_number":18,"context_line":"from neutron_lib.db import model_query"},{"line_number":19,"context_line":"from neutron_lib import exceptions as n_exc"}],"source_content_type":"text/x-python","patch_set":4,"id":"d6e359c9_ef3d0e0e","line":16,"range":{"start_line":15,"start_character":1,"end_line":16,"end_character":1},"updated":"2026-01-29 16:08:37.000000000","message":"Please restore this file","commit_id":"775fd1c664ce02d87b1dc56cca796a8dbe6c8cc4"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"694eee9357b1d6a0ee9d8e3616c1ec87e0d4380d","unresolved":false,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"# TODO(ihrachys): cover the module with functional tests targeting supported"},{"line_number":14,"context_line":"# backends"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"from neutron_lib.db import api as db_api"},{"line_number":18,"context_line":"from neutron_lib.db import model_query"},{"line_number":19,"context_line":"from neutron_lib import exceptions as n_exc"}],"source_content_type":"text/x-python","patch_set":4,"id":"c9da1b9f_3b637777","line":16,"range":{"start_line":15,"start_character":1,"end_line":16,"end_character":1},"in_reply_to":"d6e359c9_ef3d0e0e","updated":"2026-01-30 07:19:17.000000000","message":"Done","commit_id":"775fd1c664ce02d87b1dc56cca796a8dbe6c8cc4"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8708c31d04f944075f91b661f9b7d3e40fe9936d","unresolved":true,"context_lines":[{"line_number":42,"context_line":"            query_field \u003d obj_cls.primary_keys[0]"},{"line_number":43,"context_line":"            if query_field in obj_cls.fields_need_translation:"},{"line_number":44,"context_line":"                query_field \u003d obj_cls.fields_need_translation[query_field]"},{"line_number":45,"context_line":"        return _get_filter_query("},{"line_number":46,"context_line":"            obj_cls, context,"},{"line_number":47,"context_line":"            query_field\u003dquery_field,"},{"line_number":48,"context_line":"            query_limit\u003dquery_limit,"},{"line_number":49,"context_line":"            **kwargs).count()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def _kwargs_to_filters(**kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"6e002b35_6bdd6793","line":49,"range":{"start_line":45,"start_character":1,"end_line":49,"end_character":29},"updated":"2026-01-29 16:08:37.000000000","message":"Please restore this file","commit_id":"775fd1c664ce02d87b1dc56cca796a8dbe6c8cc4"},{"author":{"_account_id":33742,"name":"Jonas Schäfer","email":"jonas.schaefer@cloudandheat.com","username":"jssfr"},"change_message_id":"694eee9357b1d6a0ee9d8e3616c1ec87e0d4380d","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            query_field \u003d obj_cls.primary_keys[0]"},{"line_number":43,"context_line":"            if query_field in obj_cls.fields_need_translation:"},{"line_number":44,"context_line":"                query_field \u003d obj_cls.fields_need_translation[query_field]"},{"line_number":45,"context_line":"        return _get_filter_query("},{"line_number":46,"context_line":"            obj_cls, context,"},{"line_number":47,"context_line":"            query_field\u003dquery_field,"},{"line_number":48,"context_line":"            query_limit\u003dquery_limit,"},{"line_number":49,"context_line":"            **kwargs).count()"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"def _kwargs_to_filters(**kwargs):"}],"source_content_type":"text/x-python","patch_set":4,"id":"055ae477_a2371e68","line":49,"range":{"start_line":45,"start_character":1,"end_line":49,"end_character":29},"in_reply_to":"6e002b35_6bdd6793","updated":"2026-01-30 07:19:17.000000000","message":"Good catch!\n\n(for those curious how that happened: I initially applied the change here, too, but this function is too generic and sometimes called with queries containing a GROUP BY clause, hence I had to remove it again. But while it existed, pep8 complained about the line length and afterwards I forgot to revert it.)","commit_id":"775fd1c664ce02d87b1dc56cca796a8dbe6c8cc4"}]}
