Skip to content

Commit 8bf6bea

Browse files
committed
wow tx begin works
1 parent b43710a commit 8bf6bea

File tree

5 files changed

+70
-32
lines changed

5 files changed

+70
-32
lines changed

examples/query-service/basic_example.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ def main():
2121

2222
it = session.execute("select 1; select 2;", commit_tx=False)
2323
for result_set in it:
24-
pass
25-
# print(f"columns: {str(result_set.columns)}")
26-
# print(f"rows: {str(result_set.rows)}")
24+
# pass
25+
print(f"columns: {str(result_set.columns)}")
26+
print(f"rows: {str(result_set.rows)}")
2727

2828

2929

tests/query/test_query_transaction.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ def test_transaction_begin(self, driver_sync):
1010

1111
tx = session.transaction()
1212

13-
assert tx._tx_state.tx_id == None
13+
assert tx.tx_id == None
1414

1515
tx.begin()
1616

17-
assert tx._tx_state.tx_id != None
17+
assert tx.tx_id != None

ydb/query/base.py

Lines changed: 47 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,6 @@
1717
class QueryClientSettings: ...
1818

1919

20-
class IQueryTxContext: ...
21-
22-
2320
class QuerySessionState:
2421
_session_id: Optional[str]
2522
_node_id: Optional[int]
@@ -60,6 +57,7 @@ def set_attached(self, attached: bool) -> None:
6057

6158

6259
class IQuerySession(abc.ABC):
60+
@abc.abstractmethod
6361
def __init__(self, driver: SupportedDriverType, settings: QueryClientSettings = None):
6462
pass
6563

@@ -72,7 +70,48 @@ def delete(self) -> None:
7270
pass
7371

7472
@abc.abstractmethod
75-
def transaction(self, tx_mode: BaseQueryTxMode) -> IQueryTxContext:
73+
def transaction(self, tx_mode: BaseQueryTxMode) -> "IQueryTxContext":
74+
pass
75+
76+
77+
class IQueryTxContext(abc.ABC):
78+
79+
@abc.abstractmethod
80+
def __init__(self, driver: SupportedDriverType, session_state: QuerySessionState, session: IQuerySession, tx_mode: BaseQueryTxMode = None):
81+
pass
82+
83+
@abc.abstractmethod
84+
def __enter__(self):
85+
pass
86+
87+
@abc.abstractmethod
88+
def __exit__(self, *args, **kwargs):
89+
pass
90+
91+
@property
92+
@abc.abstractmethod
93+
def session_id(self):
94+
pass
95+
96+
@property
97+
@abc.abstractmethod
98+
def tx_id(self):
99+
pass
100+
101+
@abc.abstractmethod
102+
def begin():
103+
pass
104+
105+
@abc.abstractmethod
106+
def commit():
107+
pass
108+
109+
@abc.abstractmethod
110+
def rollback():
111+
pass
112+
113+
@abc.abstractmethod
114+
def execute(query: str):
76115
pass
77116

78117

@@ -103,6 +142,9 @@ def create_execute_query_request(query: str, session_id: str, commit_tx: bool):
103142

104143
def wrap_execute_query_response(rpc_state, response_pb):
105144

106-
print(response_pb)
145+
# print("RESP:")
146+
# print(f"meta: {response_pb.tx_meta}")
147+
# print(response_pb)
148+
107149

108150
return convert.ResultSet.from_message(response_pb.result_set)

ydb/query/session.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ def _execute_call(self, query: str, commit_tx: bool):
7777
session_id=self._state.session_id,
7878
commit_tx=commit_tx
7979
)
80+
print(request)
8081
return self._driver(
8182
request,
8283
_apis.QueryService.Stub,

ydb/query/transaction.py

Lines changed: 17 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,23 @@
1111

1212
from .._tx_ctx_impl import TxState, reset_tx_id_handler
1313
from .._session_impl import bad_session_handler
14-
from ..table import (
15-
AbstractTransactionModeBuilder,
16-
ITxContext,
17-
SerializableReadWrite
18-
)
14+
from . import base
1915

2016
logger = logging.getLogger(__name__)
2117

22-
def patch_table_service_tx_mode_to_query_service(tx_mode: AbstractTransactionModeBuilder):
23-
if tx_mode.name == 'snapshot_read_only':
24-
tx_mode = _ydb_query_public.QuerySnapshotReadOnly()
25-
elif tx_mode.name == 'serializable_read_write':
26-
tx_mode = _ydb_query_public.QuerySerializableReadWrite()
27-
elif tx_mode.name =='online_read_only':
28-
tx_mode = _ydb_query_public.QueryOnlineReadOnly()
29-
elif tx_mode.name == 'stale_read_only':
30-
tx_mode = _ydb_query_public.QueryStaleReadOnly()
31-
else:
32-
raise issues.YDBInvalidArgumentError(f'Unknown transaction mode: {tx_mode.name}')
18+
# def patch_table_service_tx_mode_to_query_service(tx_mode: AbstractTransactionModeBuilder):
19+
# if tx_mode.name == 'snapshot_read_only':
20+
# tx_mode = _ydb_query_public.QuerySnapshotReadOnly()
21+
# elif tx_mode.name == 'serializable_read_write':
22+
# tx_mode = _ydb_query_public.QuerySerializableReadWrite()
23+
# elif tx_mode.name =='online_read_only':
24+
# tx_mode = _ydb_query_public.QueryOnlineReadOnly()
25+
# elif tx_mode.name == 'stale_read_only':
26+
# tx_mode = _ydb_query_public.QueryStaleReadOnly()
27+
# else:
28+
# raise issues.YDBInvalidArgumentError(f'Unknown transaction mode: {tx_mode.name}')
3329

34-
return tx_mode
30+
# return tx_mode
3531

3632

3733
def _construct_tx_settings(tx_state):
@@ -69,7 +65,8 @@ def wrap_tx_begin_response(rpc_state, response_pb, session_state, tx_state, tx):
6965
# issues._process_response(response_pb.operation)
7066
print("wrap result")
7167
message = _ydb_query.BeginTransactionResponse.from_proto(response_pb)
72-
tx_state.tx_id = message.tx_meta.id
68+
69+
tx_state.tx_id = message.tx_meta.tx_id
7370
return tx
7471

7572

@@ -83,7 +80,7 @@ def wrap_result_on_rollback_or_commit_tx(rpc_state, response_pb, session_state,
8380
return tx
8481

8582

86-
class BaseTxContext(ITxContext):
83+
class BaseTxContext(base.IQueryTxContext):
8784

8885
_COMMIT = "commit"
8986
_ROLLBACK = "rollback"
@@ -108,9 +105,7 @@ def __init__(self, driver, session_state, session, tx_mode=None):
108105
"""
109106
self._driver = driver
110107
if tx_mode is None:
111-
tx_mode = patch_table_service_tx_mode_to_query_service(SerializableReadWrite())
112-
else:
113-
tx_mode = patch_table_service_tx_mode_to_query_service(tx_mode)
108+
tx_mode = _ydb_query_public.QuerySerializableReadWrite()
114109
self._tx_state = TxState(tx_mode)
115110
self._session_state = session_state
116111
self.session = session

0 commit comments

Comments
 (0)