)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36080,"name":"Erkin Mussurmankulov","display_name":"Eric","email":"erkin.mussurmankulov@ps.kz","username":"mongoose404","status":"PS Cloud services employee"},"change_message_id":"6be141e33be9064fa21e79376f7933f52c7f2854","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"55a34b74_7b4e994b","updated":"2026-07-27 16:40:06.000000000","message":"recheck","commit_id":"99b65c4488cd27ac68b4bed1893ce9729e187efb"}],"trove/common/db/postgresql/models.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"5d02d00e72c632472f0341391d8a32cfe3ebcce8","unresolved":false,"context_lines":[{"line_number":49,"context_line":"    def _is_valid_schema_name(self, value):"},{"line_number":50,"context_line":"        if not value:"},{"line_number":51,"context_line":"            return False"},{"line_number":52,"context_line":"        if \u0027\\x00\u0027 in value: # NUL forbidden"},{"line_number":53,"context_line":"            return False"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            value.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"d3c2d3cb_9fd55940","line":52,"updated":"2026-08-17 09:12:03.000000000","message":"pep8: E261 at least two spaces before inline comment","commit_id":"89a001979aaf74105b95915d1f8fc629e0c89de4"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"833cc1b8b1c5da34d374dc46c993d30aac6392e0","unresolved":true,"context_lines":[{"line_number":46,"context_line":"    def _max_schema_name_length(self):"},{"line_number":47,"context_line":"        return 63"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _is_valid_schema_name(self, value):"},{"line_number":50,"context_line":"        if not value:"},{"line_number":51,"context_line":"            return False"},{"line_number":52,"context_line":"        if \u0027\\x00\u0027 in value:  # NUL forbidden"}],"source_content_type":"text/x-python","patch_set":5,"id":"831b51bd_8e6070e4","line":49,"updated":"2026-08-18 11:35:44.000000000","message":"Shouldn\u0027t the same validation be added for `_is_valid_user_name()` as well?","commit_id":"6ad83084b3937c87bff026457ad396bc1cb0bde9"},{"author":{"_account_id":36080,"name":"Erkin Mussurmankulov","display_name":"Eric","email":"erkin.mussurmankulov@ps.kz","username":"mongoose404","status":"PS Cloud services employee"},"change_message_id":"8eb3ba1fd52825320f25b50b80501c3114ed1d9f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def _max_schema_name_length(self):"},{"line_number":47,"context_line":"        return 63"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _is_valid_schema_name(self, value):"},{"line_number":50,"context_line":"        if not value:"},{"line_number":51,"context_line":"            return False"},{"line_number":52,"context_line":"        if \u0027\\x00\u0027 in value:  # NUL forbidden"}],"source_content_type":"text/x-python","patch_set":5,"id":"e68aa291_25427551","line":49,"in_reply_to":"831b51bd_8e6070e4","updated":"2026-08-19 17:01:13.000000000","message":"The user length is validated below, in the PostgreSQLUser class in the `_max_user_name_length()` method.","commit_id":"6ad83084b3937c87bff026457ad396bc1cb0bde9"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"0eb80d681e3607bff034486c20668619fea20bd1","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    def _max_schema_name_length(self):"},{"line_number":47,"context_line":"        return 63"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def _is_valid_schema_name(self, value):"},{"line_number":50,"context_line":"        if not value:"},{"line_number":51,"context_line":"            return False"},{"line_number":52,"context_line":"        if \u0027\\x00\u0027 in value:  # NUL forbidden"}],"source_content_type":"text/x-python","patch_set":5,"id":"b2bf2ed3_5727b33e","line":49,"in_reply_to":"e68aa291_25427551","updated":"2026-08-20 03:46:41.000000000","message":"Oops, my bad!","commit_id":"6ad83084b3937c87bff026457ad396bc1cb0bde9"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"833cc1b8b1c5da34d374dc46c993d30aac6392e0","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        if \u0027\\x00\u0027 in value:  # NUL forbidden"},{"line_number":53,"context_line":"            return False"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            value.encode(\u0027utf-8\u0027)"},{"line_number":56,"context_line":"        except UnicodeEncodeError:"},{"line_number":57,"context_line":"            return False"},{"line_number":58,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"a7ad97dd_e5be5bfa","line":55,"updated":"2026-08-18 11:35:44.000000000","message":"I\u0027m not sure how critical this is since database names are usually ASCII, but PostgreSQL [limits identifiers to 63 bytes](https://www.postgresql.org/docs/17/sql-syntax-lexical.html). Since the current validation checks the number of characters, in some cases a name may be truncated","commit_id":"6ad83084b3937c87bff026457ad396bc1cb0bde9"},{"author":{"_account_id":36080,"name":"Erkin Mussurmankulov","display_name":"Eric","email":"erkin.mussurmankulov@ps.kz","username":"mongoose404","status":"PS Cloud services employee"},"change_message_id":"8eb3ba1fd52825320f25b50b80501c3114ed1d9f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        if \u0027\\x00\u0027 in value:  # NUL forbidden"},{"line_number":53,"context_line":"            return False"},{"line_number":54,"context_line":"        try:"},{"line_number":55,"context_line":"            value.encode(\u0027utf-8\u0027)"},{"line_number":56,"context_line":"        except UnicodeEncodeError:"},{"line_number":57,"context_line":"            return False"},{"line_number":58,"context_line":"        return True"}],"source_content_type":"text/x-python","patch_set":5,"id":"a0cee366_58ddcde7","line":55,"in_reply_to":"a7ad97dd_e5be5bfa","updated":"2026-08-19 17:01:13.000000000","message":"I agree that we should check whether the database and user name lengths are working correctly, considering changes in the input, and implement additional changes in the codebase if necessary. But I prefer to do it as a separate MR because this MR should have a single scope: supporting arbitrary symbols in names.\nThe current task already introduces 7 MRs, which is already hard to comprehend and review.","commit_id":"6ad83084b3937c87bff026457ad396bc1cb0bde9"}],"trove/guestagent/datastore/postgres/service.py":[{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"833cc1b8b1c5da34d374dc46c993d30aac6392e0","unresolved":true,"context_lines":[{"line_number":523,"context_line":"        # We should be sure that database which we try to connect"},{"line_number":524,"context_line":"        # is exists."},{"line_number":525,"context_line":"        if not self._database_exists(database):"},{"line_number":526,"context_line":"            raise exception.DatabaseNotFound(database\u003ddatabase)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"        self.use_database(database)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"e0fe87d1_b867dcc7","line":526,"updated":"2026-08-18 11:35:44.000000000","message":"exception.DatabaseNotFound(uuid\u003ddatabase)","commit_id":"6ad83084b3937c87bff026457ad396bc1cb0bde9"},{"author":{"_account_id":36080,"name":"Erkin Mussurmankulov","display_name":"Eric","email":"erkin.mussurmankulov@ps.kz","username":"mongoose404","status":"PS Cloud services employee"},"change_message_id":"8eb3ba1fd52825320f25b50b80501c3114ed1d9f","unresolved":false,"context_lines":[{"line_number":523,"context_line":"        # We should be sure that database which we try to connect"},{"line_number":524,"context_line":"        # is exists."},{"line_number":525,"context_line":"        if not self._database_exists(database):"},{"line_number":526,"context_line":"            raise exception.DatabaseNotFound(database\u003ddatabase)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"        self.use_database(database)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"ee066178_0da569c2","line":526,"in_reply_to":"e0fe87d1_b867dcc7","updated":"2026-08-19 17:01:13.000000000","message":"This is correct, but it looks like it\u0027s better to fix it in a separate MR.\nI\u0027ve removed the fix above as well.","commit_id":"6ad83084b3937c87bff026457ad396bc1cb0bde9"},{"author":{"_account_id":39300,"name":"Olessya Khussainova","display_name":"Olessya Khussainova","email":"olessya.khussainova@ps.kz","username":"Cellofun"},"change_message_id":"0eb80d681e3607bff034486c20668619fea20bd1","unresolved":false,"context_lines":[{"line_number":523,"context_line":"        # We should be sure that database which we try to connect"},{"line_number":524,"context_line":"        # is exists."},{"line_number":525,"context_line":"        if not self._database_exists(database):"},{"line_number":526,"context_line":"            raise exception.DatabaseNotFound(database\u003ddatabase)"},{"line_number":527,"context_line":""},{"line_number":528,"context_line":"        self.use_database(database)"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"aedba1d9_053c13da","line":526,"in_reply_to":"ee066178_0da569c2","updated":"2026-08-20 03:46:41.000000000","message":"Great, thank you 🙂","commit_id":"6ad83084b3937c87bff026457ad396bc1cb0bde9"}]}
