Skip to content

Commit 189aa4b

Browse files
author
Vladislav Gogov
authored
Add feature flag: enable olap compression (#8726)
1 parent d148f9c commit 189aa4b

File tree

5 files changed

+33
-0
lines changed

5 files changed

+33
-0
lines changed

ydb/core/kqp/ut/common/kqp_ut_common.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ TKikimrRunner::TKikimrRunner(const TKikimrSettings& settings) {
133133
ServerSettings->SetUseRealThreads(settings.UseRealThreads);
134134
ServerSettings->SetEnableTablePgTypes(true);
135135
ServerSettings->SetEnablePgSyntax(true);
136+
ServerSettings->SetEnableOlapCompression(true);
136137
ServerSettings->S3ActorsFactory = settings.S3ActorsFactory;
137138

138139
if (settings.Storage) {

ydb/core/protos/feature_flags.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,4 +158,5 @@ message TFeatureFlags {
158158
optional bool EnablePgSyntax = 139 [default = true];
159159
optional bool EnableTieringInColumnShard = 140 [default = false];
160160
optional bool EnableMetadataObjectsOnServerless = 141 [default = true];
161+
optional bool EnableOlapCompression = 142 [default = false];
161162
}

ydb/core/testlib/basics/feature_flags.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class TTestFeatureFlagsHolder {
6767
FEATURE_FLAG_SETTER(EnablePgSyntax)
6868
FEATURE_FLAG_SETTER(EnableTieringInColumnShard)
6969
FEATURE_FLAG_SETTER(EnableMetadataObjectsOnServerless)
70+
FEATURE_FLAG_SETTER(EnableOlapCompression)
7071

7172
#undef FEATURE_FLAG_SETTER
7273
};

ydb/core/tx/schemeshard/olap/operations/alter/common/update.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ class TColumnTableUpdate: public ISSEntityUpdate {
1919
return NKikimrTxColumnShard::ETransactionKind::TX_KIND_SCHEMA;
2020
}
2121
virtual TConclusionStatus DoInitializeImpl(const TUpdateInitializationContext& context) = 0;
22+
23+
bool IsAlterCompression(const TUpdateInitializationContext& context) const {
24+
for (const auto& alterColumn : context.GetModification()->GetAlterColumnTable().GetAlterSchema().GetAlterColumns()) {
25+
if (alterColumn.HasSerializer()) {
26+
return true;
27+
}
28+
}
29+
return false;
30+
}
31+
2232
protected:
2333
virtual TConclusionStatus DoStartImpl(const TUpdateStartContext& /*context*/) {
2434
return TConclusionStatus::Success();
@@ -27,6 +37,9 @@ class TColumnTableUpdate: public ISSEntityUpdate {
2737
return TConclusionStatus::Success();
2838
}
2939
virtual TConclusionStatus DoInitialize(const TUpdateInitializationContext& context) override final {
40+
if (!AppData()->FeatureFlags.GetEnableOlapCompression() && IsAlterCompression(context)) {
41+
return TConclusionStatus::Fail("Compression is disabled for OLAP tables");
42+
}
3043
if (!context.GetModification()->HasAlterColumnTable() && !context.GetModification()->HasAlterTable()) {
3144
return TConclusionStatus::Fail("no update data");
3245
}

ydb/core/tx/schemeshard/olap/operations/alter_store.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,18 @@ class TAlterOlapStore: public TSubOperation {
436436
}
437437
}
438438

439+
bool IsAlterCompression() const {
440+
const auto& alter = Transaction.GetAlterColumnStore();
441+
for (const auto& alterSchema : alter.GetAlterSchemaPresets()) {
442+
for (const auto& alterColumn : alterSchema.GetAlterSchema().GetAlterColumns()) {
443+
if (alterColumn.HasSerializer()) {
444+
return true;
445+
}
446+
}
447+
}
448+
return false;
449+
}
450+
439451
public:
440452
using TSubOperation::TSubOperation;
441453

@@ -460,6 +472,11 @@ class TAlterOlapStore: public TSubOperation {
460472
return result;
461473
}
462474

475+
if (!AppData()->FeatureFlags.GetEnableOlapCompression() && IsAlterCompression()) {
476+
result->SetError(NKikimrScheme::StatusPreconditionFailed, "Compression is disabled for OLAP tables");
477+
return result;
478+
}
479+
463480
TPath parentPath = TPath::Resolve(parentPathStr, context.SS);
464481
TPath path = parentPath.Dive(name);
465482
{

0 commit comments

Comments
 (0)