# Base implementation, not thread safe.
# Subclasses must call it holding a lock
self._check_intrans("read_only")
- self._read_only = value
+ self._read_only = bool(value)
self._begin_statement = b""
@property
# Base implementation, not thread safe.
# Subclasses must call it holding a lock
self._check_intrans("deferrable")
- self._deferrable = value
+ self._deferrable = bool(value)
self._begin_statement = b""
def _check_intrans(self, attribute: str) -> None:
assert cur.execute("select 1").fetchone() == (1,)
assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE
+ conn.autocommit = ""
+ assert conn.autocommit is False
+ conn.autocommit = "yeah"
+ assert conn.autocommit is True
+
def test_autocommit_connect(dsn):
conn = Connection.connect(dsn, autocommit=True)
"select current_setting(%s)", [f"transaction_{guc}"]
).fetchone()[0]
assert tx_values_map[pgval] == value
+
+
+def test_set_transaction_param_strange(conn):
+ for val in ("asdf", 0, 5):
+ with pytest.raises(ValueError):
+ conn.isolation_level = val
+
+ conn.isolation_level = psycopg.IsolationLevel.SERIALIZABLE.value
+ assert conn.isolation_level is psycopg.IsolationLevel.SERIALIZABLE
+
+ conn.read_only = 1
+ assert conn.read_only is True
+
+ conn.deferrable = 0
+ assert conn.deferrable is False
assert await cur.fetchone() == (1,)
assert aconn.pgconn.transaction_status == aconn.TransactionStatus.IDLE
+ await aconn.set_autocommit("")
+ assert aconn.autocommit is False
+ await aconn.set_autocommit("yeah")
+ assert aconn.autocommit is True
+
async def test_autocommit_connect(dsn):
aconn = await psycopg.AsyncConnection.connect(dsn, autocommit=True)
)
pgval = (await cur.fetchone())[0]
assert tx_values_map[pgval] == value
+
+
+async def test_set_transaction_param_strange(aconn):
+ for val in ("asdf", 0, 5):
+ with pytest.raises(ValueError):
+ await aconn.set_isolation_level(val)
+
+ await aconn.set_isolation_level(psycopg.IsolationLevel.SERIALIZABLE.value)
+ assert aconn.isolation_level is psycopg.IsolationLevel.SERIALIZABLE
+
+ await aconn.set_read_only(1)
+ assert aconn.read_only is True
+
+ await aconn.set_deferrable(0)
+ assert aconn.deferrable is False