Skip to content

Commit e3cb5d4

Browse files
authored
generic query for load actor (#512)
1 parent 16614bf commit e3cb5d4

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

ydb/core/load_test/config_examples.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ TVector<TConfigTemplate> BuildExamples() {
1616
UniformPartitionsCount: 1000
1717
DeleteTableOnFinish: 1
1818
WorkloadType: 0
19+
QueryType: "data"
1920
Kv: {
2021
InitRowCount: 1000
2122
PartitionsByLoad: true

ydb/core/load_test/kqp.cpp

+13-4
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ struct MonitoringData {
4646
ui64 Errors = 0;
4747
};
4848

49-
void SendQueryRequest(const TActorContext& ctx, NYdbWorkload::TQueryInfo& q, const TString& session, const TString& workingDir) {
49+
void SendQueryRequest(const TActorContext& ctx, NYdbWorkload::TQueryInfo& q, const NKikimrKqp::EQueryType queryType, const TString& session, const TString& workingDir) {
5050
TString query_text = TString(q.Query);
5151
auto request = MakeHolder<NKqp::TEvKqp::TEvQueryRequest>();
5252

@@ -55,7 +55,7 @@ void SendQueryRequest(const TActorContext& ctx, NYdbWorkload::TQueryInfo& q, con
5555
request->Record.MutableRequest()->SetDatabase(workingDir);
5656

5757
request->Record.MutableRequest()->SetAction(NKikimrKqp::QUERY_ACTION_EXECUTE);
58-
request->Record.MutableRequest()->SetType(NKikimrKqp::QUERY_TYPE_SQL_DML);
58+
request->Record.MutableRequest()->SetType(queryType);
5959
request->Record.MutableRequest()->SetQuery(query_text);
6060

6161
request->Record.MutableRequest()->MutableQueryCachePolicy()->set_keep_in_cache(true);
@@ -89,6 +89,7 @@ class TKqpLoadWorker : public TActorBootstrapped<TKqpLoadWorker> {
8989
TString working_dir,
9090
std::shared_ptr<NYdbWorkload::IWorkloadQueryGenerator> workload_query_gen,
9191
ui64 workload_type,
92+
NKikimrKqp::EQueryType queryType,
9293
ui64 parentTag,
9394
ui64 workerTag,
9495
TInstant endTimestamp,
@@ -101,6 +102,7 @@ class TKqpLoadWorker : public TActorBootstrapped<TKqpLoadWorker> {
101102
, ParentTag(parentTag)
102103
, WorkerTag(workerTag)
103104
, EndTimestamp(endTimestamp)
105+
, QueryType(queryType)
104106
, LatencyHist(60000, 2)
105107
, Transactions(transactions)
106108
, TransactionsBytesWritten(transactionsBytesWritten)
@@ -180,7 +182,7 @@ class TKqpLoadWorker : public TActorBootstrapped<TKqpLoadWorker> {
180182

181183
LOG_DEBUG_S(ctx, NKikimrServices::KQP_LOAD_TEST, "Worker Tag# " << ParentTag << "." << WorkerTag << " using session: " << WorkerSession);
182184

183-
SendQueryRequest(ctx, q, WorkerSession, WorkingDir);
185+
SendQueryRequest(ctx, q, QueryType, WorkerSession, WorkingDir);
184186
}
185187

186188
void Handle(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) {
@@ -214,6 +216,7 @@ class TKqpLoadWorker : public TActorBootstrapped<TKqpLoadWorker> {
214216
TInstant EndTimestamp;
215217
NYdbWorkload::TQueryInfoList Queries;
216218
TString WorkerSession = "wrong sessionId";
219+
NKikimrKqp::EQueryType QueryType;
217220

218221
// monitoring
219222
NHdr::THistogram LatencyHist;
@@ -242,6 +245,10 @@ class TKqpLoadActor : public TActorBootstrapped<TKqpLoadActor> {
242245
DeleteTableOnFinish = cmd.GetDeleteTableOnFinish();
243246
WorkingDir = cmd.GetWorkingDir();
244247
WorkloadType = cmd.GetWorkloadType();
248+
Y_ABORT_UNLESS(cmd.GetQueryType() == "generic" || cmd.GetQueryType() == "data");
249+
QueryType = cmd.GetQueryType() == "generic"
250+
? NKikimrKqp::QUERY_TYPE_SQL_GENERIC_QUERY
251+
: NKikimrKqp::QUERY_TYPE_SQL_DML;
245252
DurationSeconds = cmd.GetDurationSeconds();
246253
NumOfSessions = cmd.GetNumOfSessions();
247254
IncreaseSessions = cmd.GetIncreaseSessions();
@@ -530,7 +537,7 @@ class TKqpLoadActor : public TActorBootstrapped<TKqpLoadActor> {
530537
LOG_DEBUG_S(ctx, NKikimrServices::KQP_LOAD_TEST, "Tag# " << Tag
531538
<< " Creating request for init query, need to exec: " << InitData.size() + 1 << " session: " << TableSession);
532539

533-
SendQueryRequest(ctx, q, TableSession, WorkingDir);
540+
SendQueryRequest(ctx, q, QueryType, TableSession, WorkingDir);
534541
}
535542

536543
void HandleDataQueryResponse(NKqp::TEvKqp::TEvQueryResponse::TPtr& ev, const TActorContext& ctx) {
@@ -627,6 +634,7 @@ class TKqpLoadActor : public TActorBootstrapped<TKqpLoadActor> {
627634
WorkingDir,
628635
WorkloadQueryGen,
629636
WorkloadType,
637+
QueryType,
630638
Tag,
631639
Workers.size(),
632640
TestStartTime + TDuration::Seconds(DurationSeconds),
@@ -659,6 +667,7 @@ class TKqpLoadActor : public TActorBootstrapped<TKqpLoadActor> {
659667
bool IncreaseSessions = false;
660668
size_t ResultsReceived = 0;
661669
NYdbWorkload::EWorkload WorkloadClass;
670+
NKikimrKqp::EQueryType QueryType;
662671

663672
NYdbWorkload::TQueryInfoList InitData;
664673

ydb/core/protos/load_test.proto

+1
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ message TEvLoadTestRequest {
229229
optional bool DeleteTableOnFinish = 6;
230230
optional uint32 UniformPartitionsCount = 7;
231231
optional uint32 WorkloadType = 8;
232+
optional string QueryType = 12;
232233
oneof Workload {
233234
TStockWorkload Stock = 9;
234235
TKvWorkload Kv = 10;

0 commit comments

Comments
 (0)