)]}'
{"neutron/db/common_db_mixin.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"d13e528267741f35b09d67c535ccff3d1ad97928","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            if func:"},{"line_number":214,"context_line":"                func(*args)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _get_collection_query(self, context, model, filters\u003dNone,"},{"line_number":217,"context_line":"                              sorts\u003dNone, limit\u003dNone, marker_obj\u003dNone,"},{"line_number":218,"context_line":"                              page_reverse\u003dFalse):"},{"line_number":219,"context_line":"        collection \u003d self._model_query(context, model)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_de405438","line":216,"range":{"start_line":216,"start_character":8,"end_line":216,"end_character":29},"updated":"2017-01-10 10:56:41.000000000","message":"so \u0027subquery\u0027 is currently used for nets and subnets, and they are queried only through this method?","commit_id":"0201e88147fb9d74af40603ce8050b812e9e64a6"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"9f762012f425a1d6dced63ae7ca195d4869b10c2","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            if func:"},{"line_number":214,"context_line":"                func(*args)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _get_collection_query(self, context, model, filters\u003dNone,"},{"line_number":217,"context_line":"                              sorts\u003dNone, limit\u003dNone, marker_obj\u003dNone,"},{"line_number":218,"context_line":"                              page_reverse\u003dFalse):"},{"line_number":219,"context_line":"        collection \u003d self._model_query(context, model)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_4fb910ec","line":216,"range":{"start_line":216,"start_character":8,"end_line":216,"end_character":29},"in_reply_to":"ba5201f7_14e55ba7","updated":"2017-01-10 11:59:45.000000000","message":"oh, definitely. We need to keep an eye out for non-deterministic queries like that. I looked through the examples in the code and all of the ones I looked at were using first() when querying by something that would return one result so they are okay.","commit_id":"0201e88147fb9d74af40603ce8050b812e9e64a6"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"827ec23d503cd7f7c48897826d159f1fd8cca786","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            if func:"},{"line_number":214,"context_line":"                func(*args)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _get_collection_query(self, context, model, filters\u003dNone,"},{"line_number":217,"context_line":"                              sorts\u003dNone, limit\u003dNone, marker_obj\u003dNone,"},{"line_number":218,"context_line":"                              page_reverse\u003dFalse):"},{"line_number":219,"context_line":"        collection \u003d self._model_query(context, model)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_14e55ba7","line":216,"range":{"start_line":216,"start_character":8,"end_line":216,"end_character":29},"in_reply_to":"ba5201f7_b4b80fe7","updated":"2017-01-10 11:48:51.000000000","message":"Yep. My point was, if somebody uses \u0027ctx.session.query(Network).first()\u0027 somewhere he might still hit the issue, right?","commit_id":"0201e88147fb9d74af40603ce8050b812e9e64a6"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"d249b2f53be4e6dd846179bdb1d0ad667171f245","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            if func:"},{"line_number":214,"context_line":"                func(*args)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"    def _get_collection_query(self, context, model, filters\u003dNone,"},{"line_number":217,"context_line":"                              sorts\u003dNone, limit\u003dNone, marker_obj\u003dNone,"},{"line_number":218,"context_line":"                              page_reverse\u003dFalse):"},{"line_number":219,"context_line":"        collection \u003d self._model_query(context, model)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba5201f7_b4b80fe7","line":216,"range":{"start_line":216,"start_character":8,"end_line":216,"end_character":29},"in_reply_to":"ba5201f7_de405438","updated":"2017-01-10 11:43:13.000000000","message":"The issue is when a limit query is issued. That always comes through _get_collection so we want to add on something to make the sorting stable. When sqlalchemy issues the subquery to load the relationship, it will carry over whatever was used to query the parent.","commit_id":"0201e88147fb9d74af40603ce8050b812e9e64a6"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"70930a2d2de50224385df246b57c4f7d197a86d5","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            # (http://docs.sqlalchemy.org/en/latest/faq/"},{"line_number":230,"context_line":"            #  ormconfiguration.html#faq-subqueryload-limit-sort)"},{"line_number":231,"context_line":"            uk_sets \u003d sa_utils.get_unique_keys(model)"},{"line_number":232,"context_line":"            if len(uk_sets) \u003e 0 and limit:"},{"line_number":233,"context_line":"                # just grab first set of unique keys and use them."},{"line_number":234,"context_line":"                # if model has no unqiue sets, \u0027paginate_query\u0027 will"},{"line_number":235,"context_line":"                # warn if sorting is unstable"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_551d5c65","line":232,"range":{"start_line":232,"start_character":15,"end_line":232,"end_character":27},"updated":"2017-01-12 08:30:50.000000000","message":"get_unique_keys returns None if it fails to fine any unique key, so It is better to change it to:\n\n  if uk_sets and limit:\n\n[1] http://git.openstack.org/cgit/openstack/oslo.db/tree/oslo_db/sqlalchemy/utils.py#n71","commit_id":"6740634645d44d3241cb8ddbdd1ee721f2167f08"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"67420667540c1abe4e83664bd873c93922768bab","unresolved":false,"context_lines":[{"line_number":229,"context_line":"            # (http://docs.sqlalchemy.org/en/latest/faq/"},{"line_number":230,"context_line":"            #  ormconfiguration.html#faq-subqueryload-limit-sort)"},{"line_number":231,"context_line":"            uk_sets \u003d sa_utils.get_unique_keys(model)"},{"line_number":232,"context_line":"            if len(uk_sets) \u003e 0 and limit:"},{"line_number":233,"context_line":"                # just grab first set of unique keys and use them."},{"line_number":234,"context_line":"                # if model has no unqiue sets, \u0027paginate_query\u0027 will"},{"line_number":235,"context_line":"                # warn if sorting is unstable"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a57fde8_446a0c1c","line":232,"range":{"start_line":232,"start_character":15,"end_line":232,"end_character":27},"in_reply_to":"9a57fde8_551d5c65","updated":"2017-01-12 10:44:08.000000000","message":"Done","commit_id":"6740634645d44d3241cb8ddbdd1ee721f2167f08"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"744d08ea766f75a859f42d1353a75cc8ecbbab56","unresolved":false,"context_lines":[{"line_number":231,"context_line":"            uk_sets \u003d sa_utils.get_unique_keys(model)"},{"line_number":232,"context_line":"            if uk_sets and limit:"},{"line_number":233,"context_line":"                # just grab first set of unique keys and use them."},{"line_number":234,"context_line":"                # if model has no unqiue sets, \u0027paginate_query\u0027 will"},{"line_number":235,"context_line":"                # warn if sorting is unstable"},{"line_number":236,"context_line":"                for k in uk_sets[0]:"},{"line_number":237,"context_line":"                    if k not in sort_keys:"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a57fde8_cac8b477","line":234,"range":{"start_line":234,"start_character":34,"end_line":234,"end_character":40},"updated":"2017-01-12 15:57:20.000000000","message":"unique","commit_id":"175bfe048283ae930b60b1cea87874d1fa1d10d6"}]}
