From 228009a3f2f6ee5ab0e570bc0c7e0ab3aa65c21a Mon Sep 17 00:00:00 2001 From: Fantix King Date: Thu, 13 Feb 2025 13:39:30 -0500 Subject: [PATCH] add back check_capabilities --- edb/server/dbview/dbview.pyx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/edb/server/dbview/dbview.pyx b/edb/server/dbview/dbview.pyx index 087b3d0f8ffe..35abd3f532bb 100644 --- a/edb/server/dbview/dbview.pyx +++ b/edb/server/dbview/dbview.pyx @@ -1709,6 +1709,23 @@ cdef class DatabaseConnectionView: msg, ) + if not self.in_tx() and query_capabilities & enums.Capability.WRITE: + isolation = self.config_lookup("default_transaction_isolation") + if isolation and isolation.to_str() != "Serializable": + raise query_capabilities.make_error( + ~enums.Capability.WRITE, + errors.TransactionError, + f"default_transaction_isolation is set to " + f"{isolation.to_str()}", + ) + access_mode = self.config_lookup("default_transaction_access_mode") + if access_mode and access_mode.to_str() == "ReadOnly": + raise query_capabilities.make_error( + ~enums.Capability.WRITE, + errors.TransactionError, + "default_transaction_access_mode is set to ReadOnly", + ) + async def reload_state_serializer(self): # This should only happen once when a different protocol version is # used after schema change, or non-current version of protocol is used