From 39f6e7a60b70fd19192070593f384d4ccca714ac Mon Sep 17 00:00:00 2001 From: vlad-gogov Date: Wed, 4 Sep 2024 11:57:49 +0000 Subject: [PATCH 1/3] add feature flag: enable olap compression --- ydb/core/kqp/ut/olap/sys_view_ut.cpp | 10 ++++++---- ydb/core/protos/feature_flags.proto | 1 + ydb/core/testlib/basics/feature_flags.h | 3 ++- ydb/core/tx/schemeshard/olap/columns/update.cpp | 5 +++++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ydb/core/kqp/ut/olap/sys_view_ut.cpp b/ydb/core/kqp/ut/olap/sys_view_ut.cpp index 27820452542e..4891366b93df 100644 --- a/ydb/core/kqp/ut/olap/sys_view_ut.cpp +++ b/ydb/core/kqp/ut/olap/sys_view_ut.cpp @@ -131,8 +131,9 @@ Y_UNIT_TEST_SUITE(KqpOlapSysView) { const ui32 rowsCount = 800000; const ui32 groupsCount = 512; { - auto settings = TKikimrSettings() - .SetWithSampleTables(false); + NKikimrConfig::TFeatureFlags featureFlags; + featureFlags.SetEnableCompression(true); + auto settings = TKikimrSettings().SetWithSampleTables(false).SetFeatureFlags(featureFlags); TKikimrRunner kikimr(settings); Tests::NCommon::TLoggerInit(kikimr).Initialize(); TTypedLocalHelper helper("Utf8", kikimr); @@ -186,8 +187,9 @@ Y_UNIT_TEST_SUITE(KqpOlapSysView) { ui64 rawBytesPK1; ui64 bytesPK1; auto csController = NYDBTest::TControllers::RegisterCSControllerGuard(); - auto settings = TKikimrSettings() - .SetWithSampleTables(false); + NKikimrConfig::TFeatureFlags featureFlags; + featureFlags.SetEnableCompression(true); + auto settings = TKikimrSettings().SetWithSampleTables(false).SetFeatureFlags(featureFlags); TKikimrRunner kikimr(settings); Tests::NCommon::TLoggerInit(kikimr).Initialize(); TTypedLocalHelper helper("", kikimr, "olapTable", "olapStore"); diff --git a/ydb/core/protos/feature_flags.proto b/ydb/core/protos/feature_flags.proto index 8a76b20a69a0..783376750293 100644 --- a/ydb/core/protos/feature_flags.proto +++ b/ydb/core/protos/feature_flags.proto @@ -156,4 +156,5 @@ message TFeatureFlags { optional bool EnableGranularTimecast = 137 [default = true]; optional bool EnableAlterShardingInColumnShard = 138 [default = false]; optional bool EnablePgSyntax = 139 [default = true]; + optional bool EnableOlapCompression = 140 [default = false]; } diff --git a/ydb/core/testlib/basics/feature_flags.h b/ydb/core/testlib/basics/feature_flags.h index b2bfe23c95fb..0b20e7581c5a 100644 --- a/ydb/core/testlib/basics/feature_flags.h +++ b/ydb/core/testlib/basics/feature_flags.h @@ -65,8 +65,9 @@ class TTestFeatureFlagsHolder { FEATURE_FLAG_SETTER(EnableBackupService) FEATURE_FLAG_SETTER(EnableGranularTimecast) FEATURE_FLAG_SETTER(EnablePgSyntax) + FEATURE_FLAG_SETTER(EnableOlapCompression) - #undef FEATURE_FLAG_SETTER +#undef FEATURE_FLAG_SETTER }; } // NKikimr diff --git a/ydb/core/tx/schemeshard/olap/columns/update.cpp b/ydb/core/tx/schemeshard/olap/columns/update.cpp index c66da237c712..b92c24a65b2f 100644 --- a/ydb/core/tx/schemeshard/olap/columns/update.cpp +++ b/ydb/core/tx/schemeshard/olap/columns/update.cpp @@ -271,6 +271,11 @@ namespace NKikimr::NSchemeShard { TSet alterColumnNames; for (auto& columnSchemaDiff : alterRequest.GetAlterColumns()) { + if (HasAppData() && !AppDataVerified().FeatureFlags.GetEnableOlapCompression() && columnSchemaDiff.HasSerializer()) { + errors.AddError(NKikimrScheme::StatusPreconditionFailed, "Compression is disabled for OLAP tables"); + return false; + } + TOlapColumnDiff columnDiff; if (!columnDiff.ParseFromRequest(columnSchemaDiff, errors)) { return false; From 36cbe81d1e3a788a3ff3ecc06b85fac0e30b4414 Mon Sep 17 00:00:00 2001 From: vlad-gogov Date: Wed, 4 Sep 2024 12:08:11 +0000 Subject: [PATCH 2/3] fix test --- ydb/core/kqp/ut/olap/sys_view_ut.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ydb/core/kqp/ut/olap/sys_view_ut.cpp b/ydb/core/kqp/ut/olap/sys_view_ut.cpp index 4891366b93df..5896b49aeb97 100644 --- a/ydb/core/kqp/ut/olap/sys_view_ut.cpp +++ b/ydb/core/kqp/ut/olap/sys_view_ut.cpp @@ -132,7 +132,7 @@ Y_UNIT_TEST_SUITE(KqpOlapSysView) { const ui32 groupsCount = 512; { NKikimrConfig::TFeatureFlags featureFlags; - featureFlags.SetEnableCompression(true); + featureFlags.SetEnableOlapCompression(true); auto settings = TKikimrSettings().SetWithSampleTables(false).SetFeatureFlags(featureFlags); TKikimrRunner kikimr(settings); Tests::NCommon::TLoggerInit(kikimr).Initialize(); @@ -188,7 +188,7 @@ Y_UNIT_TEST_SUITE(KqpOlapSysView) { ui64 bytesPK1; auto csController = NYDBTest::TControllers::RegisterCSControllerGuard(); NKikimrConfig::TFeatureFlags featureFlags; - featureFlags.SetEnableCompression(true); + featureFlags.SetEnableOlapCompression(true); auto settings = TKikimrSettings().SetWithSampleTables(false).SetFeatureFlags(featureFlags); TKikimrRunner kikimr(settings); Tests::NCommon::TLoggerInit(kikimr).Initialize(); From bcb1288537fca644ff7b606af137e2b1f1497dec Mon Sep 17 00:00:00 2001 From: vlad-gogov Date: Wed, 4 Sep 2024 13:40:20 +0000 Subject: [PATCH 3/3] check moved above --- ydb/core/tx/schemeshard/olap/columns/update.cpp | 5 ----- .../tx/schemeshard/olap/operations/alter_store.cpp | 11 +++++++++++ .../tx/schemeshard/olap/operations/alter_table.cpp | 9 +++++++++ 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/ydb/core/tx/schemeshard/olap/columns/update.cpp b/ydb/core/tx/schemeshard/olap/columns/update.cpp index b92c24a65b2f..c66da237c712 100644 --- a/ydb/core/tx/schemeshard/olap/columns/update.cpp +++ b/ydb/core/tx/schemeshard/olap/columns/update.cpp @@ -271,11 +271,6 @@ namespace NKikimr::NSchemeShard { TSet alterColumnNames; for (auto& columnSchemaDiff : alterRequest.GetAlterColumns()) { - if (HasAppData() && !AppDataVerified().FeatureFlags.GetEnableOlapCompression() && columnSchemaDiff.HasSerializer()) { - errors.AddError(NKikimrScheme::StatusPreconditionFailed, "Compression is disabled for OLAP tables"); - return false; - } - TOlapColumnDiff columnDiff; if (!columnDiff.ParseFromRequest(columnSchemaDiff, errors)) { return false; diff --git a/ydb/core/tx/schemeshard/olap/operations/alter_store.cpp b/ydb/core/tx/schemeshard/olap/operations/alter_store.cpp index 446b43017821..1cb3ee11c905 100644 --- a/ydb/core/tx/schemeshard/olap/operations/alter_store.cpp +++ b/ydb/core/tx/schemeshard/olap/operations/alter_store.cpp @@ -453,6 +453,17 @@ class TAlterOlapStore: public TSubOperation { auto result = MakeHolder(NKikimrScheme::StatusAccepted, ui64(OperationId.GetTxId()), ui64(ssId)); + if (HasAppData() && !AppDataVerified().FeatureFlags.GetEnableOlapCompression()) { + for (const auto& alterSchema : alter.GetAlterSchemaPresets()) { + for (const auto& alterColumn : alterSchema.GetAlterSchema().GetAlterColumns()) { + if (alterColumn.HasSerializer()) { + result->SetError(NKikimrScheme::StatusPreconditionFailed, "Compression is disabled for OLAP tables"); + return result; + } + } + } + } + if (!alter.HasName()) { result->SetError(NKikimrScheme::StatusInvalidParameter, "No store name in Alter"); return result; diff --git a/ydb/core/tx/schemeshard/olap/operations/alter_table.cpp b/ydb/core/tx/schemeshard/olap/operations/alter_table.cpp index 0409fad44a3c..0dab5071e438 100644 --- a/ydb/core/tx/schemeshard/olap/operations/alter_table.cpp +++ b/ydb/core/tx/schemeshard/olap/operations/alter_table.cpp @@ -270,6 +270,15 @@ class TAlterColumnTable: public TSubOperation { result->SetError(NKikimrScheme::StatusPreconditionFailed, "Alter sharding is disabled for OLAP tables"); return result; } + + if (HasAppData() && !AppDataVerified().FeatureFlags.GetEnableOlapCompression()) { + for (const auto& alterColumn : Transaction.GetAlterColumnTable().GetAlterSchema().GetAlterColumns()) { + if (alterColumn.HasSerializer()) { + result->SetError(NKikimrScheme::StatusPreconditionFailed, "Compression is disabled for OLAP tables"); + return result; + } + } + } const TString& parentPathStr = Transaction.GetWorkingDir(); const TString& name = Transaction.HasAlterColumnTable() ? Transaction.GetAlterColumnTable().GetName() : Transaction.GetAlterTable().GetName();