@@ -50,23 +50,29 @@ class TRunScriptActorMock : public NActors::TActorBootstrapped<TRunScriptActorMo
50
50
auto resultSetIndex = ev->Get ()->Record .GetQueryResultIndex ();
51
51
if (resultSetIndex >= ResultSets_.size ()) {
52
52
ResultSets_.resize (resultSetIndex + 1 );
53
+ ResultSetSizes_.resize (resultSetIndex + 1 , 0 );
53
54
}
54
55
55
56
if (!ResultSets_[resultSetIndex].truncated ()) {
57
+ ui64& resultSetSize = ResultSetSizes_[resultSetIndex];
56
58
for (auto & row : *ev->Get ()->Record .MutableResultSet ()->mutable_rows ()) {
57
59
if (static_cast <ui64>(ResultSets_[resultSetIndex].rows_size ()) >= ResultRowsLimit_) {
58
60
ResultSets_[resultSetIndex].set_truncated (true );
59
61
break ;
60
62
}
61
63
62
- if (ResultSets_[resultSetIndex].ByteSizeLong () + row.ByteSizeLong () > ResultSizeLimit_) {
64
+ auto rowSize = row.ByteSizeLong ();
65
+ if (resultSetSize + rowSize > ResultSizeLimit_) {
63
66
ResultSets_[resultSetIndex].set_truncated (true );
64
67
break ;
65
68
}
66
69
70
+ resultSetSize += rowSize;
67
71
*ResultSets_[resultSetIndex].add_rows () = std::move (row);
68
72
}
69
- *ResultSets_[resultSetIndex].mutable_columns () = ev->Get ()->Record .GetResultSet ().columns ();
73
+ if (!ResultSets_[resultSetIndex].columns_size ()) {
74
+ *ResultSets_[resultSetIndex].mutable_columns () = ev->Get ()->Record .GetResultSet ().columns ();
75
+ }
70
76
}
71
77
72
78
Send (ev->Sender , response.Release ());
@@ -89,6 +95,7 @@ class TRunScriptActorMock : public NActors::TActorBootstrapped<TRunScriptActorMo
89
95
ui64 ResultRowsLimit_;
90
96
ui64 ResultSizeLimit_;
91
97
std::vector<Ydb::ResultSet>& ResultSets_;
98
+ std::vector<ui64> ResultSetSizes_;
92
99
TProgressCallback ProgressCallback_;
93
100
};
94
101
0 commit comments