)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"5973c3c18dc697d7d40c836dade2546f750a9b5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"bfc745e5_1254b37d","updated":"2026-05-07 20:10:44.000000000","message":"Hopefully Terry agrees :)","commit_id":"43bb18280403bd1c81732d2c6acc37dd51d73ada"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"d1de83000cfab2b888a37abdc44cd3f2a854f03e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"aa124ef2_d8bd2ad2","updated":"2026-05-08 13:21:38.000000000","message":"In the linked patch on the same topic, there is a change from db_find() to db_find_rows() which changes the return type. Just curious, if we don\u0027t want to actually change the type of the return/change code, why change what it returns?\n\nMy main concern is that RowView wraps a Row object, and is supposed to be interchangeable with one, and adding code that makes it behave like a dict means there will be code that uses it like that, which means that a Row would not work in its place.\n\nNot saying I can\u0027t be convinced, but it worries me a little. I\u0027m out on PTO today and maybe some other people have thoughts on it.","commit_id":"43bb18280403bd1c81732d2c6acc37dd51d73ada"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6b4c408467fb338f5cd845dabec0030bce6e19af","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"11775bfb_a41dbb65","in_reply_to":"1aaa9c69_1e5ac064","updated":"2026-05-12 06:36:55.000000000","message":"Ok, I think I\u0027m going to to the opposite: to provide a method to return a dictionary from a RowView object. That will preserve the access methods but will provide this extra functionality.","commit_id":"43bb18280403bd1c81732d2c6acc37dd51d73ada"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"01ae1809ef0f242bfab86f23a3c42e4877d27e94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"1aaa9c69_1e5ac064","in_reply_to":"aa124ef2_d8bd2ad2","updated":"2026-05-11 10:02:20.000000000","message":"Hello Terry. In the last PS I reverted the `db_find_rows` change [1].\n\nI initially added this change because the `lookup` (L833 of [1]) method returns RowView too. I wanted this method to always return the same type.\n\nWhat I can try is to convert to string the RowView object returned in the `lookup` method.\n\n[1]https://review.opendev.org/c/openstack/neutron/+/984408/9/neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py","commit_id":"43bb18280403bd1c81732d2c6acc37dd51d73ada"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"692603c538c52966509b5595ef47f18b342ccf04","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"584db47c_5b38e1a4","updated":"2026-05-20 23:42:31.000000000","message":"I think the two neutron functional tests are failing due to the get_column_value() change which can break condition_match() because the type returned changes from a Row to a uuid. Maybe we can just leave get_column_value() alone to avoid potential outside breakage and substitute uuids for rows from its results, e.g.\n\n```\ndef rows_to_uuids(val):\n    if isinstance(val, idl.Row):\n        return val.uuid\n    if isinstance(val, list):\n        return [v.uuid if isinstance(v, idl.Row) else v for v in val]\n    if isinstance(val, dict):\n        return {(k.uuid if isinstance(k, idl.Row) else k):\n                (v.uuid if isinstance(v, idl.Row) else v)\n                for k, v in val.items()}\n    return val\n```\nand then call `deepcopy(idlutils.rows_to_uuids(idlutils.get_column_value(...))`?","commit_id":"f5035d7b6cd991c26902cc109eceaa9c2f7e2eee"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"db69964f274b949a1fbdc25fe2239b4bb5861784","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"43463fa1_dbcdbef4","in_reply_to":"584db47c_5b38e1a4","updated":"2026-05-21 06:53:24.000000000","message":"Right and out mutual friend Claude suggests the same. Let me push an update.","commit_id":"f5035d7b6cd991c26902cc109eceaa9c2f7e2eee"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"8db12f0575ef46e75b335e00ed5ca438c321c03f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3e55919a_3eeed3ac","updated":"2026-05-21 16:02:14.000000000","message":"Great, thanks @ralonsoh@redhat.com! (For your patch and your patience!)","commit_id":"cf2a8fccd22f54223339a6a52b42c1ee2d060264"}]}
