Skip to content

Commit

Permalink
Disable blocks for oltp (ydb-platform#5889)
Browse files Browse the repository at this point in the history
  • Loading branch information
nikvas0 authored Jun 26, 2024
1 parent 7ddce8c commit d1cffce
Showing 1 changed file with 28 additions and 11 deletions.
39 changes: 28 additions & 11 deletions ydb/core/kqp/host/kqp_runner.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -198,22 +198,39 @@ class TKqpRunner : public IKqpRunner {
YQL_ENSURE(IsIn({EKikimrQueryType::Query, EKikimrQueryType::Script}, TransformCtx->QueryCtx->Type));
YQL_ENSURE(TMaybeNode<TKiDataQueryBlocks>(query));

switch (TransformCtx->Config->BlockChannelsMode) {
case NKikimrConfig::TTableServiceConfig_EBlockChannelsMode_BLOCK_CHANNELS_SCALAR:
case NKikimrConfig::TTableServiceConfig_EBlockChannelsMode_BLOCK_CHANNELS_AUTO:
TypesCtx.BlockEngineMode = NYql::EBlockEngineMode::Auto;
break;
case NKikimrConfig::TTableServiceConfig_EBlockChannelsMode_BLOCK_CHANNELS_FORCE:
TypesCtx.BlockEngineMode = NYql::EBlockEngineMode::Force;
break;
default:
YQL_ENSURE(false);
const auto dataQueryBlocks = TKiDataQueryBlocks(query);

if (IsOlapQuery(dataQueryBlocks)) {
switch (TransformCtx->Config->BlockChannelsMode) {
case NKikimrConfig::TTableServiceConfig_EBlockChannelsMode_BLOCK_CHANNELS_SCALAR:
case NKikimrConfig::TTableServiceConfig_EBlockChannelsMode_BLOCK_CHANNELS_AUTO:
TypesCtx.BlockEngineMode = NYql::EBlockEngineMode::Auto;
break;
case NKikimrConfig::TTableServiceConfig_EBlockChannelsMode_BLOCK_CHANNELS_FORCE:
TypesCtx.BlockEngineMode = NYql::EBlockEngineMode::Force;
break;
default:
YQL_ENSURE(false);
}
}

return PrepareQueryInternal(cluster, TKiDataQueryBlocks(query), ctx, settings);
return PrepareQueryInternal(cluster, dataQueryBlocks, ctx, settings);
}

private:
bool IsOlapQuery(const TKiDataQueryBlocks& dataQueryBlocks) {
if (dataQueryBlocks.ArgCount() != 1) {
return false;
}
const auto& operations = dataQueryBlocks.Arg(0).Operations();
return std::any_of(
std::begin(operations),
std::end(operations),
[this](const auto& operation) {
const auto& tableData = SessionCtx->Tables().ExistingTable(operation.Cluster(), operation.Table());
return tableData.Metadata->IsOlap();
});
}

TIntrusivePtr<TAsyncQueryResult> PrepareQueryInternal(const TString& cluster,
const TKiDataQueryBlocks& dataQueryBlocks, TExprContext& ctx,
Expand Down

0 comments on commit d1cffce

Please sign in to comment.