Skip to content

Commit a0429ce

Browse files
committed
fix issues
1 parent d5ddbc2 commit a0429ce

File tree

4 files changed

+12
-18
lines changed

4 files changed

+12
-18
lines changed

ydb/core/kqp/session_actor/kqp_query_state.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -123,9 +123,10 @@ bool TKqpQueryState::SaveAndCheckCompileResult(TEvKqp::TEvCompileResponse* ev) {
123123
return true;
124124
}
125125

126-
bool TKqpQueryState::SaveAndCheckParseResult(TEvKqp::TEvParseResponse* ev) {
127-
Statements = std::move(ev->AstStatements);
128-
Orbit = std::move(ev->Orbit);
126+
bool TKqpQueryState::SaveAndCheckParseResult(TEvKqp::TEvParseResponse&& ev) {
127+
Statements = std::move(ev.AstStatements);
128+
CurrentStatementId = 0;
129+
Orbit = std::move(ev.Orbit);
129130
return true;
130131
}
131132

@@ -140,7 +141,7 @@ std::unique_ptr<TEvKqp::TEvCompileRequest> TKqpQueryState::BuildCompileRequest(s
140141
settings.IsPrepareQuery = GetAction() == NKikimrKqp::QUERY_ACTION_PREPARE;
141142

142143
bool keepInCache = false;
143-
bool perStatementResult = !HasTxControl();
144+
const bool perStatementResult = !HasTxControl() && GetAction() == NKikimrKqp::QUERY_ACTION_EXECUTE;
144145
switch (GetAction()) {
145146
case NKikimrKqp::QUERY_ACTION_EXECUTE:
146147
query = TKqpQueryId(Cluster, Database, GetQuery(), settings, GetQueryParameterTypes());
@@ -150,19 +151,16 @@ std::unique_ptr<TEvKqp::TEvCompileRequest> TKqpQueryState::BuildCompileRequest(s
150151
case NKikimrKqp::QUERY_ACTION_PREPARE:
151152
query = TKqpQueryId(Cluster, Database, GetQuery(), settings, GetQueryParameterTypes());
152153
keepInCache = query->IsSql();
153-
perStatementResult = false;
154154
break;
155155

156156
case NKikimrKqp::QUERY_ACTION_EXECUTE_PREPARED:
157157
uid = GetPreparedQuery();
158158
keepInCache = GetQueryKeepInCache();
159-
perStatementResult = false;
160159
break;
161160

162161
case NKikimrKqp::QUERY_ACTION_EXPLAIN:
163162
query = TKqpQueryId(Cluster, Database, GetQuery(), settings, GetQueryParameterTypes());
164163
keepInCache = false;
165-
perStatementResult = false;
166164
break;
167165

168166
default:
@@ -176,6 +174,7 @@ std::unique_ptr<TEvKqp::TEvCompileRequest> TKqpQueryState::BuildCompileRequest(s
176174

177175
TMaybe<TQueryAst> statementAst;
178176
if (!Statements.empty()) {
177+
YQL_ENSURE(CurrentStatementId < Statements.size());
179178
statementAst = Statements[CurrentStatementId];
180179
}
181180

ydb/core/kqp/session_actor/kqp_query_state.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,7 +373,7 @@ class TKqpQueryState : public TNonCopyable {
373373
return RequestEv->GetTxControl();
374374
}
375375

376-
bool FinishedStatements() {
376+
bool ProcessingLastStatement() const {
377377
return CurrentStatementId + 1 >= Statements.size();
378378
}
379379

@@ -419,7 +419,7 @@ class TKqpQueryState : public TNonCopyable {
419419
std::unique_ptr<TEvTxProxySchemeCache::TEvNavigateKeySet> BuildNavigateKeySet();
420420
// same the context of the compiled query to the query state.
421421
bool SaveAndCheckCompileResult(TEvKqp::TEvCompileResponse* ev);
422-
bool SaveAndCheckParseResult(TEvKqp::TEvParseResponse* ev);
422+
bool SaveAndCheckParseResult(TEvKqp::TEvParseResponse&& ev);
423423
// build the compilation request.
424424
std::unique_ptr<TEvKqp::TEvCompileRequest> BuildCompileRequest(std::shared_ptr<std::atomic<bool>> cookie);
425425
// TODO(gvit): get rid of code duplication in these requests,

ydb/core/kqp/session_actor/kqp_session_actor.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -514,7 +514,7 @@ class TKqpSessionActor : public TActorBootstrapped<TKqpSessionActor> {
514514
}
515515

516516
void Handle(TEvKqp::TEvParseResponse::TPtr& ev) {
517-
QueryState->SaveAndCheckParseResult(ev->Get());
517+
QueryState->SaveAndCheckParseResult(std::move(*ev->Get()));
518518
CompileStatement();
519519
}
520520

@@ -1631,7 +1631,7 @@ class TKqpSessionActor : public TActorBootstrapped<TKqpSessionActor> {
16311631
}
16321632

16331633
void ProcessNextStatement() {
1634-
if (QueryState->FinishedStatements()) {
1634+
if (QueryState->ProcessingLastStatement()) {
16351635
Cleanup();
16361636
return;
16371637
}

ydb/library/yql/sql/sql.cpp

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -78,11 +78,6 @@ namespace NSQLTranslation {
7878
*actualSyntaxVersion = parsedSettings.SyntaxVersion;
7979
}
8080

81-
google::protobuf::Arena arena;
82-
if (!parsedSettings.Arena) {
83-
parsedSettings.Arena = &arena;
84-
}
85-
8681
switch (parsedSettings.SyntaxVersion) {
8782
case 0:
8883
if (settings.V0ForceDisable || settings.V0Behavior == EV0Behavior::Disable) {
@@ -97,9 +92,9 @@ namespace NSQLTranslation {
9792
return nullptr;
9893
}
9994

100-
return NSQLTranslationV0::SqlAST(query, queryName, issues, maxErrors, parsedSettings.Arena);
95+
return NSQLTranslationV0::SqlAST(query, queryName, issues, maxErrors, settings.Arena);
10196
case 1:
102-
return NSQLTranslationV1::SqlAST(query, queryName, issues, maxErrors, parsedSettings.AnsiLexer, parsedSettings.Arena);
97+
return NSQLTranslationV1::SqlAST(query, queryName, issues, maxErrors, parsedSettings.AnsiLexer, settings.Arena);
10398
default:
10499
issues.AddIssue(NYql::YqlIssue(NYql::TPosition(), NYql::TIssuesIds::DEFAULT_ERROR,
105100
TStringBuilder() << "Unknown SQL syntax version: " << parsedSettings.SyntaxVersion));

0 commit comments

Comments
 (0)