Skip to content

Commit 1e02a53

Browse files
authored
Merge ebca912 into 2fb4cac
2 parents 2fb4cac + ebca912 commit 1e02a53

File tree

10 files changed

+53
-24
lines changed

10 files changed

+53
-24
lines changed

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

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,32 +31,37 @@ namespace NKqp {
3131

3232
using namespace NYdb;
3333

34-
TTestHelper::TTestHelper(const TKikimrSettings& settings)
35-
: Kikimr(settings)
36-
, TableClient(Kikimr.GetTableClient())
37-
, Session(TableClient.CreateSession().GetValueSync().GetSession())
38-
{}
34+
TTestHelper::TTestHelper(const TKikimrSettings& settings) {
35+
TKikimrSettings kikimrSettings(settings);
36+
if (!kikimrSettings.FeatureFlags.HasEnableOlapTiering()) {
37+
kikimrSettings.SetEnableOlapTiering(true);
38+
}
39+
40+
Kikimr = std::make_unique<TKikimrRunner>(kikimrSettings);
41+
TableClient = std::make_unique<NYdb::NTable::TTableClient>(Kikimr->GetTableClient());
42+
Session = std::make_unique<NYdb::NTable::TSession>(TableClient->CreateSession().GetValueSync().GetSession());
43+
}
3944

4045
NKikimr::NKqp::TKikimrRunner& TTestHelper::GetKikimr() {
41-
return Kikimr;
46+
return *Kikimr;
4247
}
4348

4449
TTestActorRuntime& TTestHelper::GetRuntime() {
45-
return *Kikimr.GetTestServer().GetRuntime();
50+
return *Kikimr->GetTestServer().GetRuntime();
4651
}
4752

4853
NYdb::NTable::TSession& TTestHelper::GetSession() {
49-
return Session;
54+
return *Session;
5055
}
5156

5257
void TTestHelper::CreateTable(const TColumnTableBase& table, const EStatus expectedStatus) {
5358
std::cerr << (table.BuildQuery()) << std::endl;
54-
auto result = Session.ExecuteSchemeQuery(table.BuildQuery()).GetValueSync();
59+
auto result = GetSession().ExecuteSchemeQuery(table.BuildQuery()).GetValueSync();
5560
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), expectedStatus, result.GetIssues().ToString());
5661
}
5762

5863
void TTestHelper::CreateTier(const TString& tierName) {
59-
auto result = Session.ExecuteSchemeQuery("CREATE OBJECT " + tierName + " (TYPE TIER) WITH tierConfig = `" + GetConfigProtoWithName(tierName) + "`").GetValueSync();
64+
auto result = GetSession().ExecuteSchemeQuery("CREATE OBJECT " + tierName + " (TYPE TIER) WITH tierConfig = `" + GetConfigProtoWithName(tierName) + "`").GetValueSync();
6065
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
6166
}
6267

@@ -70,43 +75,43 @@ namespace NKqp {
7075
}
7176
]
7277
})";
73-
auto result = Session.ExecuteSchemeQuery("CREATE OBJECT IF NOT EXISTS " + ruleName + " (TYPE TIERING_RULE) WITH (defaultColumn = " + columnName + ", description = `" + configTieringStr + "`)").GetValueSync();
78+
auto result = GetSession().ExecuteSchemeQuery("CREATE OBJECT IF NOT EXISTS " + ruleName + " (TYPE TIERING_RULE) WITH (defaultColumn = " + columnName + ", description = `" + configTieringStr + "`)").GetValueSync();
7479
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
7580
return ruleName;
7681
}
7782

7883
void TTestHelper::SetTiering(const TString& tableName, const TString& ruleName) {
7984
auto alterQuery = TStringBuilder() << "ALTER TABLE `" << tableName << "` SET (TIERING = '" << ruleName << "')";
80-
auto result = Session.ExecuteSchemeQuery(alterQuery).GetValueSync();
85+
auto result = GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
8186
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
8287
}
8388

8489
void TTestHelper::ResetTiering(const TString& tableName) {
8590
auto alterQuery = TStringBuilder() << "ALTER TABLE `" << tableName << "` RESET (TIERING)";
86-
auto result = Session.ExecuteSchemeQuery(alterQuery).GetValueSync();
91+
auto result = GetSession().ExecuteSchemeQuery(alterQuery).GetValueSync();
8792
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
8893
}
8994

9095
void TTestHelper::DropTable(const TString& tableName) {
91-
auto result = Session.DropTable(tableName).GetValueSync();
96+
auto result = GetSession().DropTable(tableName).GetValueSync();
9297
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
9398
}
9499

95100
void TTestHelper::BulkUpsert(const TColumnTable& table, TTestHelper::TUpdatesBuilder& updates, const Ydb::StatusIds_StatusCode& opStatus /*= Ydb::StatusIds::SUCCESS*/) {
96101
Y_UNUSED(opStatus);
97-
NKikimr::Tests::NCS::THelper helper(Kikimr.GetTestServer());
102+
NKikimr::Tests::NCS::THelper helper(GetKikimr().GetTestServer());
98103
auto batch = updates.BuildArrow();
99104
helper.SendDataViaActorSystem(table.GetName(), batch, opStatus);
100105
}
101106

102107
void TTestHelper::BulkUpsert(const TColumnTable& table, std::shared_ptr<arrow::RecordBatch> batch, const Ydb::StatusIds_StatusCode& opStatus /*= Ydb::StatusIds::SUCCESS*/) {
103108
Y_UNUSED(opStatus);
104-
NKikimr::Tests::NCS::THelper helper(Kikimr.GetTestServer());
109+
NKikimr::Tests::NCS::THelper helper(GetKikimr().GetTestServer());
105110
helper.SendDataViaActorSystem(table.GetName(), batch, opStatus);
106111
}
107112

108113
void TTestHelper::ReadData(const TString& query, const TString& expected, const EStatus opStatus /*= EStatus::SUCCESS*/) {
109-
auto it = TableClient.StreamExecuteScanQuery(query).GetValueSync();
114+
auto it = TableClient->StreamExecuteScanQuery(query).GetValueSync();
110115
UNIT_ASSERT_VALUES_EQUAL_C(it.GetStatus(), EStatus::SUCCESS, it.GetIssues().ToString()); // Means stream successfully get
111116
TString result = StreamResultToYson(it, false, opStatus);
112117
if (opStatus == EStatus::SUCCESS) {
@@ -115,17 +120,17 @@ namespace NKqp {
115120
}
116121

117122
void TTestHelper::RebootTablets(const TString& tableName) {
118-
auto runtime = Kikimr.GetTestServer().GetRuntime();
123+
auto runtime = GetKikimr().GetTestServer().GetRuntime();
119124
TActorId sender = runtime->AllocateEdgeActor();
120125
TVector<ui64> shards;
121126
{
122-
auto describeResult = DescribeTable(&Kikimr.GetTestServer(), sender, tableName);
127+
auto describeResult = DescribeTable(&GetKikimr().GetTestServer(), sender, tableName);
123128
for (auto shard : describeResult.GetPathDescription().GetColumnTableDescription().GetSharding().GetColumnShards()) {
124129
shards.push_back(shard);
125130
}
126131
}
127132
for (auto shard : shards) {
128-
Kikimr.GetTestServer().GetRuntime()->Send(MakePipePerNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward(
133+
GetKikimr().GetTestServer().GetRuntime()->Send(MakePipePerNodeCacheID(false), NActors::TActorId(), new TEvPipeCache::TEvForward(
129134
new TEvents::TEvPoisonPill(), shard, false));
130135
}
131136
}

ydb/core/kqp/ut/common/columnshard.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,9 @@ namespace NKqp {
6363
};
6464

6565
private:
66-
TKikimrRunner Kikimr;
67-
NYdb::NTable::TTableClient TableClient;
68-
NYdb::NTable::TSession Session;
66+
std::unique_ptr<TKikimrRunner> Kikimr;
67+
std::unique_ptr<NYdb::NTable::TTableClient> TableClient;
68+
std::unique_ptr<NYdb::NTable::TSession> Session;
6969

7070
public:
7171
TTestHelper(const TKikimrSettings& settings);

ydb/core/protos/feature_flags.proto

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,4 +154,5 @@ message TFeatureFlags {
154154
optional bool EnableResourcePoolsCounters = 135 [default = false];
155155
optional bool EnableOptionalColumnsInColumnShard = 136 [default = false];
156156
optional bool EnableGranularTimecast = 137 [default = true];
157+
optional bool EnableOlapTiering = 138 [default = false];
157158
}

ydb/core/testlib/basics/feature_flags.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ class TTestFeatureFlagsHolder {
6464
FEATURE_FLAG_SETTER(EnableChangefeedsOnIndexTables)
6565
FEATURE_FLAG_SETTER(EnableBackupService)
6666
FEATURE_FLAG_SETTER(EnableGranularTimecast)
67+
FEATURE_FLAG_SETTER(EnableOlapTiering)
6768

6869
#undef FEATURE_FLAG_SETTER
6970
};

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,13 @@ class TAlterColumnTable: public TSubOperation {
265265

266266
auto result = MakeHolder<TProposeResponse>(NKikimrScheme::StatusAccepted, ui64(OperationId.GetTxId()), ui64(ssId));
267267

268+
const bool hasTiering = Transaction.HasAlterColumnTable() && Transaction.GetAlterColumnTable().HasAlterTtlSettings() &&
269+
Transaction.GetAlterColumnTable().GetAlterTtlSettings().HasUseTiering();
270+
if (hasTiering && HasAppData() && !AppDataVerified().FeatureFlags.GetEnableOlapTiering()) {
271+
result->SetError(NKikimrScheme::StatusPreconditionFailed, "Tiering functionality is disabled for OLAP tables");
272+
return result;
273+
}
274+
268275
const TString& parentPathStr = Transaction.GetWorkingDir();
269276
const TString& name = Transaction.HasAlterColumnTable() ? Transaction.GetAlterColumnTable().GetName() : Transaction.GetAlterTable().GetName();
270277
LOG_NOTICE_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,

ydb/core/tx/schemeshard/olap/ttl/schema.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
#include "schema.h"
22

3+
#include <ydb/core/base/feature_flags.h>
4+
#include <ydb/core/base/appdata_fwd.h>
5+
36
namespace NKikimr::NSchemeShard::NOlap::NAlter {
47

58
TConclusionStatus TOlapTTL::Update(const TOlapTTLUpdate& update) {

ydb/core/tx/schemeshard/olap/ttl/ya.make

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ SRCS(
66
)
77

88
PEERDIR(
9+
ydb/core/base
910
ydb/core/protos
1011
)
1112

ydb/core/tx/tiering/rule/manager.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,10 @@ void TTieringRulesManager::DoPrepareObjectsBeforeModification(std::vector<TTieri
1313
NMetadata::NModifications::TOperationParsingResult TTieringRulesManager::DoBuildPatchFromSettings(
1414
const NYql::TObjectSettingsImpl& settings,
1515
TInternalModificationContext& /*context*/) const {
16+
if (HasAppData() && !AppDataVerified().FeatureFlags.GetEnableOlapTiering()) {
17+
return TConclusionStatus::Fail("Tiering functionality is disabled for OLAP tables.");
18+
}
19+
1620
NMetadata::NInternal::TTableRecord result;
1721
result.SetColumn(TTieringRule::TDecoder::TieringRuleId, NMetadata::NInternal::TYDBValue::Utf8(settings.GetObjectId()));
1822
if (settings.GetObjectId().StartsWith("$") || settings.GetObjectId().StartsWith("_")) {

ydb/core/tx/tiering/tier/manager.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ NMetadata::NModifications::TOperationParsingResult TTiersManager::DoBuildPatchFr
88
const NYql::TObjectSettingsImpl& settings,
99
TInternalModificationContext& context) const
1010
{
11+
if (HasAppData() && !AppDataVerified().FeatureFlags.GetEnableOlapTiering()) {
12+
return TConclusionStatus::Fail("Tiering functionality is disabled for OLAP tables.");
13+
}
14+
1115
NMetadata::NInternal::TTableRecord result;
1216
result.SetColumn(TTierConfig::TDecoder::TierName, NMetadata::NInternal::TYDBValue::Utf8(settings.GetObjectId()));
1317
if (settings.GetObjectId().StartsWith("$") || settings.GetObjectId().StartsWith("_")) {

ydb/core/tx/tiering/ut/ut_tiers.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -330,7 +330,8 @@ Y_UNIT_TEST_SUITE(ColumnShardTiers) {
330330
serverSettings.GrpcPort = grpcPort;
331331
serverSettings.SetDomainName("Root")
332332
.SetUseRealThreads(false)
333-
.SetEnableMetadataProvider(true);
333+
.SetEnableMetadataProvider(true)
334+
.SetEnableOlapTiering(true)
334335
;
335336

336337
Tests::TServer::TPtr server = new Tests::TServer(serverSettings);
@@ -420,6 +421,7 @@ Y_UNIT_TEST_SUITE(ColumnShardTiers) {
420421
serverSettings.SetDomainName("Root")
421422
.SetUseRealThreads(false)
422423
.SetEnableMetadataProvider(true)
424+
.SetEnableOlapTiering(true)
423425
.SetAppConfig(appConfig);
424426

425427
Tests::TServer::TPtr server = new Tests::TServer(serverSettings);
@@ -550,6 +552,7 @@ Y_UNIT_TEST_SUITE(ColumnShardTiers) {
550552
serverSettings.SetDomainName("Root")
551553
.SetUseRealThreads(false)
552554
.SetEnableMetadataProvider(true)
555+
.SetEnableOlapTiering(true)
553556
;
554557

555558
Tests::TServer::TPtr server = new Tests::TServer(serverSettings);

0 commit comments

Comments
 (0)