Skip to content

Commit 71f87bf

Browse files
json_query transaction mode
1 parent 4cc5556 commit 71f87bf

File tree

1 file changed

+24
-4
lines changed

1 file changed

+24
-4
lines changed

ydb/core/viewer/json_query.h

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
3939
TString Stats;
4040
TString Syntax;
4141
TString QueryId;
42+
TString TransactionMode;
4243
bool Direct = false;
4344
bool IsBase64Encode = true;
4445

@@ -82,6 +83,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
8283
Schema = StringToSchemaType(schemaStr);
8384
Syntax = params.Get("syntax");
8485
QueryId = params.Get("query_id");
86+
TransactionMode = params.Get("transaction_mode");
8587
Direct = FromStringWithDefault<bool>(params.Get("direct"), Direct);
8688
IsBase64Encode = FromStringWithDefault<bool>(params.Get("base64"), true);
8789
}
@@ -97,6 +99,7 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
9799
Action = Action.empty() ? requestData["action"].GetStringSafe({}) : Action;
98100
Syntax = Syntax.empty() ? requestData["syntax"].GetStringSafe({}) : Syntax;
99101
QueryId = QueryId.empty() ? requestData["query_id"].GetStringSafe({}) : QueryId;
102+
TransactionMode = TransactionMode.empty() ? requestData["transaction_mode"].GetStringSafe({}) : TransactionMode;
100103
}
101104
return success;
102105
}
@@ -231,8 +234,6 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
231234
} else if (Action == "execute-query") {
232235
request.SetAction(NKikimrKqp::QUERY_ACTION_EXECUTE);
233236
request.SetType(NKikimrKqp::QUERY_TYPE_SQL_GENERIC_QUERY);
234-
request.mutable_txcontrol()->mutable_begin_tx()->mutable_serializable_read_write();
235-
request.mutable_txcontrol()->set_commit_tx(true);
236237
request.SetKeepSession(false);
237238
} else if (Action == "explain-query") {
238239
request.SetAction(NKikimrKqp::QUERY_ACTION_EXPLAIN);
@@ -245,8 +246,6 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
245246
} else if (Action == "execute-data") {
246247
request.SetAction(NKikimrKqp::QUERY_ACTION_EXECUTE);
247248
request.SetType(NKikimrKqp::QUERY_TYPE_SQL_DML);
248-
request.mutable_txcontrol()->mutable_begin_tx()->mutable_serializable_read_write();
249-
request.mutable_txcontrol()->set_commit_tx(true);
250249
request.SetKeepSession(false);
251250
} else if (Action == "explain" || Action == "explain-ast" || Action == "explain-data") {
252251
request.SetAction(NKikimrKqp::QUERY_ACTION_EXPLAIN);
@@ -270,6 +269,16 @@ class TJsonQuery : public TViewerPipeClient<TJsonQuery> {
270269
} else if (Syntax == "pg") {
271270
request.SetSyntax(Ydb::Query::Syntax::SYNTAX_PG);
272271
}
272+
if (TransactionMode == "online-read-only") {
273+
request.mutable_txcontrol()->mutable_begin_tx()->mutable_online_read_only();
274+
} else if (TransactionMode == "stale-read-only") {
275+
request.mutable_txcontrol()->mutable_begin_tx()->mutable_stale_read_only();
276+
} else if (TransactionMode == "snapshot-read-only") {
277+
request.mutable_txcontrol()->mutable_begin_tx()->mutable_snapshot_read_only();
278+
} else if (TransactionMode == "serializable-read-write" || Action == "execute-query" || Action == "execute-data") {
279+
request.mutable_txcontrol()->mutable_begin_tx()->mutable_serializable_read_write();
280+
request.mutable_txcontrol()->set_commit_tx(true);
281+
}
273282
ActorIdToProto(SelfId(), event->Record.MutableRequestActorId());
274283
Send(NKqp::MakeKqpProxyID(SelfId().NodeId()), event.Release());
275284
BLOG_TRACE("Query sent");
@@ -664,6 +673,17 @@ YAML::Node TJsonRequestSwagger<TJsonQuery>::GetSwagger() {
664673
type: string
665674
enum: [profile, full]
666675
required: false
676+
- name: transaction_mode
677+
in: query
678+
description: >
679+
transaction mode:
680+
* `serializable-read-write`
681+
* `online-read-only`
682+
* `stale-read-only`
683+
* `snapshot-read-only`
684+
type: string
685+
enum: [serializable-read-write, online-read-only, stale-read-only, snapshot-read-only]
686+
required: false
667687
- name: direct
668688
in: query
669689
description: force processing query on current node

0 commit comments

Comments
 (0)