Skip to content

Commit 93adc18

Browse files
authored
YQ kqprun support creating tenants (#8675)
1 parent 7e3210c commit 93adc18

File tree

8 files changed

+171
-44
lines changed

8 files changed

+171
-44
lines changed

ydb/tests/fq/yt/cfg/test_whitelist.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,6 @@ join/lookupjoin_bug8533
607607
join/lookupjoin_semi
608608
join/lookupjoin_semi_empty
609609
join/bush_in_in_in
610-
pg/join_brackets2
611610
join/mapjoin_with_empty_read
612611
key_filter/empty_range_over_dynamic
613612
join/join_without_correlation_and_struct_access

ydb/tests/fq/yt/kqprun.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ def yql_exec(self, program=None, program_file=None, verbose=False, check_error=T
5353
for table in tables:
5454
if table.format != 'yson':
5555
pytest.skip('skip tests containing tables with a non-yson attribute format')
56-
cmd += '--table=yt.Root/%s@%s ' % (table.full_name, table.yqlrun_file)
56+
cmd += '--table=yt./Root/%s@%s ' % (table.full_name, table.yqlrun_file)
5757

5858
proc_result = yatest.common.process.execute(cmd.strip().split(), check_exit_code=False, cwd=self.res_dir)
5959
if proc_result.exit_code != 0 and check_error:

ydb/tests/tools/kqprun/configuration/app_config.conf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ FeatureFlags {
22
EnableExternalDataSources: true
33
EnableScriptExecutionOperations: true
44
EnableExternalSourceSchemaInference: true
5+
EnableTempTables: true
56
}
67

78
KQPConfig {

ydb/tests/tools/kqprun/kqprun.cpp

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ struct TExecutionOptions {
4040
bool ForgetExecution = false;
4141
std::vector<EExecutionCase> ExecutionCases;
4242
std::vector<NKikimrKqp::EQueryAction> ScriptQueryActions;
43+
std::vector<TString> Databases;
4344
std::vector<TString> TraceIds;
4445
std::vector<TString> PoolIds;
4546
std::vector<TString> UserSIDs;
@@ -81,7 +82,8 @@ struct TExecutionOptions {
8182
.Action = NKikimrKqp::EQueryAction::QUERY_ACTION_EXECUTE,
8283
.TraceId = DefaultTraceId,
8384
.PoolId = "",
84-
.UserSID = BUILTIN_ACL_ROOT
85+
.UserSID = BUILTIN_ACL_ROOT,
86+
.Database = ""
8587
};
8688
}
8789

@@ -99,7 +101,8 @@ struct TExecutionOptions {
99101
.Action = GetScriptQueryAction(index),
100102
.TraceId = TStringBuilder() << GetValue(index, TraceIds, DefaultTraceId) << "-" << startTime.ToString(),
101103
.PoolId = GetValue(index, PoolIds, TString()),
102-
.UserSID = GetValue(index, UserSIDs, TString(BUILTIN_ACL_ROOT))
104+
.UserSID = GetValue(index, UserSIDs, TString(BUILTIN_ACL_ROOT)),
105+
.Database = GetValue(index, Databases, TString())
103106
};
104107
}
105108

@@ -510,6 +513,10 @@ class TMain : public TMainClassArgs {
510513
.DefaultValue(1000)
511514
.StoreMappedResultT<ui64>(&ExecutionOptions.LoopDelay, &TDuration::MilliSeconds<ui64>);
512515

516+
options.AddLongOption('D', "database", "Database path for -p queries")
517+
.RequiredArgument("path")
518+
.EmplaceTo(&ExecutionOptions.Databases);
519+
513520
options.AddLongOption('U', "user", "User SID for -p queries")
514521
.RequiredArgument("user-SID")
515522
.EmplaceTo(&ExecutionOptions.UserSIDs);
@@ -552,6 +559,23 @@ class TMain : public TMainClassArgs {
552559
.NoArgument()
553560
.SetFlag(&EmulateYt);
554561

562+
options.AddLongOption("domain", "Test cluster domain name")
563+
.RequiredArgument("name")
564+
.DefaultValue(RunnerOptions.YdbSettings.DomainName)
565+
.StoreResult(&RunnerOptions.YdbSettings.DomainName);
566+
567+
options.AddLongOption("dedicated", "Dedicated tenant path, relative inside domain")
568+
.RequiredArgument("path")
569+
.InsertTo(&RunnerOptions.YdbSettings.DedicatedTenants);
570+
571+
options.AddLongOption("shared", "Shared tenant path, relative inside domain")
572+
.RequiredArgument("path")
573+
.InsertTo(&RunnerOptions.YdbSettings.SharedTenants);
574+
575+
options.AddLongOption("serverless", "Serverless tenant path, relative inside domain (use string serverless-name@shared-name to specify shared database)")
576+
.RequiredArgument("path")
577+
.InsertTo(&RunnerOptions.YdbSettings.ServerlessTenants);
578+
555579
TChoices<std::function<void()>> backtrace({
556580
{"heavy", &NKikimr::EnableYDBBacktraceFormat},
557581
{"light", []() { SetFormatBackTraceFn(FormatBackTrace); }}

ydb/tests/tools/kqprun/src/common.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ struct TAsyncQueriesSettings {
2727
struct TYdbSetupSettings {
2828
ui32 NodeCount = 1;
2929
TString DomainName = "Root";
30+
std::unordered_set<TString> DedicatedTenants;
31+
std::unordered_set<TString> SharedTenants;
32+
std::unordered_set<TString> ServerlessTenants;
3033
TDuration InitializationTimeout = TDuration::Seconds(10);
3134

3235
bool MonitoringEnabled = false;
@@ -83,6 +86,7 @@ struct TRequestOptions {
8386
TString TraceId;
8487
TString PoolId;
8588
TString UserSID;
89+
TString Database;
8690
};
8791

8892
} // namespace NKqpRun

ydb/tests/tools/kqprun/src/kqp_runner.cpp

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ class TKqpRunner::TImpl {
128128
return false;
129129
}
130130

131+
ExecutionMeta_ = TExecutionMeta();
132+
ExecutionMeta_.Database = script.Database;
133+
131134
return WaitScriptExecutionOperation();
132135
}
133136

@@ -183,7 +186,7 @@ class TKqpRunner::TImpl {
183186
ResultSets_.clear();
184187
ResultSets_.resize(ExecutionMeta_.ResultSetsCount);
185188
for (i32 resultSetId = 0; resultSetId < ExecutionMeta_.ResultSetsCount; ++resultSetId) {
186-
TRequestResult status = YdbSetup_.FetchScriptExecutionResultsRequest(ExecutionOperation_, resultSetId, ResultSets_[resultSetId]);
189+
TRequestResult status = YdbSetup_.FetchScriptExecutionResultsRequest(ExecutionMeta_.Database, ExecutionOperation_, resultSetId, ResultSets_[resultSetId]);
187190

188191
if (!status.IsSuccess()) {
189192
Cerr << CerrColors_.Red() << "Failed to fetch result set with id " << resultSetId << ", reason:" << CerrColors_.Default() << Endl << status.ToString() << Endl;
@@ -197,7 +200,7 @@ class TKqpRunner::TImpl {
197200
bool ForgetExecutionOperation() {
198201
TYdbSetup::StopTraceOpt();
199202

200-
TRequestResult status = YdbSetup_.ForgetScriptExecutionOperationRequest(ExecutionOperation_);
203+
TRequestResult status = YdbSetup_.ForgetScriptExecutionOperationRequest(ExecutionMeta_.Database, ExecutionOperation_);
201204

202205
if (!status.IsSuccess()) {
203206
Cerr << CerrColors_.Red() << "Failed to forget script execution operation, reason:" << CerrColors_.Default() << Endl << status.ToString() << Endl;
@@ -226,7 +229,6 @@ class TKqpRunner::TImpl {
226229
private:
227230
bool WaitScriptExecutionOperation() {
228231
StartTime_ = TInstant::Now();
229-
ExecutionMeta_ = TExecutionMeta();
230232

231233
TDuration getOperationPeriod = TDuration::Seconds(1);
232234
if (auto progressStatsPeriodMs = Options_.YdbSettings.AppConfig.GetQueryServiceConfig().GetProgressStatsPeriodMs()) {
@@ -235,7 +237,7 @@ class TKqpRunner::TImpl {
235237

236238
TRequestResult status;
237239
while (true) {
238-
status = YdbSetup_.GetScriptExecutionOperationRequest(ExecutionOperation_, ExecutionMeta_);
240+
status = YdbSetup_.GetScriptExecutionOperationRequest(ExecutionMeta_.Database, ExecutionOperation_, ExecutionMeta_);
239241
PrintScriptProgress(ExecutionMeta_.Plan);
240242

241243
if (ExecutionMeta_.Ready) {
@@ -249,7 +251,7 @@ class TKqpRunner::TImpl {
249251

250252
if (Options_.ScriptCancelAfter && TInstant::Now() - StartTime_ > Options_.ScriptCancelAfter) {
251253
Cout << CoutColors_.Yellow() << TInstant::Now().ToIsoStringLocal() << " Cancelling script execution..." << CoutColors_.Default() << Endl;
252-
TRequestResult cancelStatus = YdbSetup_.CancelScriptExecutionOperationRequest(ExecutionOperation_);
254+
TRequestResult cancelStatus = YdbSetup_.CancelScriptExecutionOperationRequest(ExecutionMeta_.Database, ExecutionOperation_);
253255
if (!cancelStatus.IsSuccess()) {
254256
Cerr << CerrColors_.Red() << "Failed to cancel script execution operation, reason:" << CerrColors_.Default() << Endl << cancelStatus.ToString() << Endl;
255257
return false;

0 commit comments

Comments
 (0)