Skip to content

Commit 6f980fe

Browse files
committed
fix review comments
1 parent b4eeb02 commit 6f980fe

File tree

4 files changed

+27
-7
lines changed

4 files changed

+27
-7
lines changed

tests/query/test_query_session_pool.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import pytest
2-
2+
import ydb
33
from ydb.query.pool import QuerySessionPool
44
from ydb.query.session import QuerySessionSync, QuerySessionStateEnum
55

@@ -20,7 +20,7 @@ def test_oneshot_ddl_query(self, pool: QuerySessionPool):
2020
pool.execute_with_retries("drop table Queen;")
2121

2222
def test_oneshot_query_raises(self, pool: QuerySessionPool):
23-
with pytest.raises(Exception):
23+
with pytest.raises(ydb.GenericError):
2424
pool.execute_with_retries("Is this the real life? Is this just fantasy?")
2525

2626
def test_retry_op_uses_created_session(self, pool: QuerySessionPool):
@@ -40,9 +40,8 @@ def callee(session: QuerySessionSync):
4040

4141
def test_retry_op_raises(self, pool: QuerySessionPool):
4242
def callee(session: QuerySessionSync):
43-
res = session.execute("Caught in a landslide, no escape from reality")
44-
for _ in res:
43+
with session.execute("Caught in a landslide, no escape from reality"):
4544
pass
4645

47-
with pytest.raises(Exception):
46+
with pytest.raises(ydb.GenericError):
4847
pool.retry_operation_sync(callee)

tests/query/test_query_transaction.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,12 @@ def test_tx_allow_double_rollback(self, tx: BaseTxContext):
2121
tx.rollback()
2222
tx.rollback()
2323

24+
@pytest.mark.skip(reason="Not sure should we keep this behavior or not")
2425
def test_tx_commit_raises_before_begin(self, tx: BaseTxContext):
2526
with pytest.raises(RuntimeError):
2627
tx.commit()
2728

29+
@pytest.mark.skip(reason="Not sure should we keep this behavior or not")
2830
def test_tx_rollback_raises_before_begin(self, tx: BaseTxContext):
2931
with pytest.raises(RuntimeError):
3032
tx.rollback()

ydb/query/base.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,5 +328,5 @@ def __enter__(self):
328328
return self
329329

330330
def __exit__(self, exc_type, exc_val, exc_tb):
331-
for _ in self.it:
331+
for _ in self:
332332
pass

ydb/query/transaction.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,12 @@ class QueryTxStateEnum(enum.Enum):
2525

2626
class QueryTxStateHelper(abc.ABC):
2727
_VALID_TRANSITIONS = {
28-
QueryTxStateEnum.NOT_INITIALIZED: [QueryTxStateEnum.BEGINED, QueryTxStateEnum.DEAD],
28+
QueryTxStateEnum.NOT_INITIALIZED: [
29+
QueryTxStateEnum.BEGINED,
30+
QueryTxStateEnum.DEAD,
31+
QueryTxStateEnum.COMMITTED,
32+
QueryTxStateEnum.ROLLBACKED,
33+
],
2934
QueryTxStateEnum.BEGINED: [QueryTxStateEnum.COMMITTED, QueryTxStateEnum.ROLLBACKED, QueryTxStateEnum.DEAD],
3035
QueryTxStateEnum.COMMITTED: [],
3136
QueryTxStateEnum.ROLLBACKED: [],
@@ -246,6 +251,13 @@ def commit(self, settings=None):
246251
if self._tx_state._already_in(QueryTxStateEnum.COMMITTED):
247252
return
248253
self._ensure_prev_stream_finished()
254+
255+
if self._tx_state._state == QueryTxStateEnum.NOT_INITIALIZED:
256+
# TODO(vgvoleg): Discuss should we raise before begin or not
257+
self._tx_state._change_state(QueryTxStateEnum.COMMITTED)
258+
self._tx_state.tx_id = None
259+
return
260+
249261
self._tx_state._check_invalid_transition(QueryTxStateEnum.COMMITTED)
250262

251263
return self._driver(
@@ -262,6 +274,13 @@ def rollback(self, settings=None):
262274
return
263275

264276
self._ensure_prev_stream_finished()
277+
278+
if self._tx_state._state == QueryTxStateEnum.NOT_INITIALIZED:
279+
# TODO(vgvoleg): Discuss should we raise before begin or not
280+
self._tx_state._change_state(QueryTxStateEnum.ROLLBACKED)
281+
self._tx_state.tx_id = None
282+
return
283+
265284
self._tx_state._check_invalid_transition(QueryTxStateEnum.ROLLBACKED)
266285

267286
return self._driver(

0 commit comments

Comments
 (0)