Only execute an automatic 'begin' statement if the TransactionStatus is
IDLE, so that a failure to execute 'begin' doesn't overshadow a failure
to execute a user query.
if self._autocommit:
return
- if self.pgconn.transaction_status == TransactionStatus.INTRANS:
+ if self.pgconn.transaction_status != TransactionStatus.IDLE:
return
self.pgconn.send_query(b"begin")
if self._autocommit:
return
- if self.pgconn.transaction_status == TransactionStatus.INTRANS:
+ if self.pgconn.transaction_status != TransactionStatus.IDLE:
return
self.pgconn.send_query(b"begin")
cur.execute("meh")
assert conn.pgconn.transaction_status == conn.TransactionStatus.INERROR
+ with pytest.raises(psycopg3.errors.InFailedSqlTransaction):
+ cur.execute("select 1")
+
conn.commit()
assert conn.pgconn.transaction_status == conn.TransactionStatus.IDLE
assert cur.execute("select * from foo").fetchone() is None