Skip to content

Commit f9b4a7d

Browse files
authored
Add EnableAlterSharding option (#8707)
1 parent 5b006e4 commit f9b4a7d

File tree

3 files changed

+23
-24
lines changed

3 files changed

+23
-24
lines changed

ydb/core/kqp/ut/olap/blobs_sharing_ut.cpp

Lines changed: 16 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
namespace NKikimr::NKqp {
1616

1717
Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) {
18-
1918
namespace {
2019
class TTransferStatus {
2120
private:
@@ -60,18 +59,23 @@ Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) {
6059
return TConclusionStatus::Success();
6160
}
6261
virtual void DoSerializeToProto(NKikimrColumnShardDataSharingProto::TInitiator::TController& /*proto*/) const override {
63-
6462
}
6563

6664
virtual TString GetClassName() const override {
6765
return "test";
6866
}
6967
};
7068

69+
TKikimrSettings GetKikimrSettings() {
70+
NKikimrConfig::TFeatureFlags featureFlags;
71+
featureFlags.SetEnableAlterShardingInColumnShard(true);
72+
return TKikimrSettings().SetWithSampleTables(false).SetFeatureFlags(featureFlags);
73+
}
74+
7175
class TSharingDataTestCase {
7276
private:
7377
const ui32 ShardsCount;
74-
TKikimrRunner& Kikimr;
78+
TKikimrRunner Kikimr;
7579
TTypedLocalHelper Helper;
7680
NYDBTest::TControllers::TGuard<NYDBTest::NColumnShard::TController> Controller;
7781
std::vector<ui64> ShardIds;
@@ -86,9 +90,9 @@ Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) {
8690
Helper.FillPKOnly(kff, recordsCount);
8791
}
8892

89-
TSharingDataTestCase(const ui32 shardsCount, TKikimrRunner& kikimr)
93+
TSharingDataTestCase(const ui32 shardsCount)
9094
: ShardsCount(shardsCount)
91-
, Kikimr(kikimr)
95+
, Kikimr(GetKikimrSettings())
9296
, Helper("", Kikimr, "olapTable", "olapStore12")
9397
, Controller(NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>()) {
9498
Controller->SetCompactionControl(NYDBTest::EOptimizerCompactionWeightControl::Disable);
@@ -196,18 +200,14 @@ Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) {
196200
}
197201
};
198202
Y_UNIT_TEST(BlobsSharingSplit1_1) {
199-
auto settings = TKikimrSettings().SetWithSampleTables(false);
200-
TKikimrRunner kikimr(settings);
201-
TSharingDataTestCase tester(4, kikimr);
203+
TSharingDataTestCase tester(4);
202204
tester.AddRecords(800000);
203205
Sleep(TDuration::Seconds(1));
204206
tester.Execute(0, { 1 }, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), { 0 });
205207
}
206208

207209
Y_UNIT_TEST(BlobsSharingSplit1_1_clean) {
208-
auto settings = TKikimrSettings().SetWithSampleTables(false);
209-
TKikimrRunner kikimr(settings);
210-
TSharingDataTestCase tester(2, kikimr);
210+
TSharingDataTestCase tester(2);
211211
tester.AddRecords(80000);
212212
CompareYson(tester.GetHelper().GetQueryResult("SELECT COUNT(*) FROM `/Root/olapStore12/olapTable`"), R"([[80000u;]])");
213213
Sleep(TDuration::Seconds(1));
@@ -219,9 +219,7 @@ Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) {
219219
}
220220

221221
Y_UNIT_TEST(BlobsSharingSplit1_1_clean_with_restarts) {
222-
auto settings = TKikimrSettings().SetWithSampleTables(false);
223-
TKikimrRunner kikimr(settings);
224-
TSharingDataTestCase tester(2, kikimr);
222+
TSharingDataTestCase tester(2);
225223
tester.SetRebootTablet(true);
226224
tester.AddRecords(80000);
227225
CompareYson(tester.GetHelper().GetQueryResult("SELECT COUNT(*) FROM `/Root/olapStore12/olapTable`"), R"([[80000u;]])");
@@ -234,18 +232,14 @@ Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) {
234232
}
235233

236234
Y_UNIT_TEST(BlobsSharingSplit3_1) {
237-
auto settings = TKikimrSettings().SetWithSampleTables(false);
238-
TKikimrRunner kikimr(settings);
239-
TSharingDataTestCase tester(4, kikimr);
235+
TSharingDataTestCase tester(4);
240236
tester.AddRecords(800000);
241237
Sleep(TDuration::Seconds(1));
242238
tester.Execute(0, { 1, 2, 3 }, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), { 0 });
243239
}
244240

245241
Y_UNIT_TEST(BlobsSharingSplit1_3_1) {
246-
auto settings = TKikimrSettings().SetWithSampleTables(false);
247-
TKikimrRunner kikimr(settings);
248-
TSharingDataTestCase tester(4, kikimr);
242+
TSharingDataTestCase tester(4);
249243
tester.AddRecords(800000);
250244
Sleep(TDuration::Seconds(1));
251245
tester.Execute(1, { 0 }, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), { 0 });
@@ -255,9 +249,7 @@ Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) {
255249
}
256250

257251
Y_UNIT_TEST(BlobsSharingSplit1_3_2_1_clean) {
258-
auto settings = TKikimrSettings().SetWithSampleTables(false);
259-
TKikimrRunner kikimr(settings);
260-
TSharingDataTestCase tester(4, kikimr);
252+
TSharingDataTestCase tester(4);
261253
tester.AddRecords(800000);
262254
Sleep(TDuration::Seconds(1));
263255
tester.Execute(1, { 0 }, false, NOlap::TSnapshot(TInstant::Now().MilliSeconds(), 1232123), { 0 });
@@ -273,7 +265,7 @@ Y_UNIT_TEST_SUITE(KqpOlapBlobsSharing) {
273265
class TReshardingTest {
274266
public:
275267
TReshardingTest()
276-
: Kikimr(TKikimrSettings().SetWithSampleTables(false))
268+
: Kikimr(GetKikimrSettings())
277269
, CSController(NYDBTest::TControllers::RegisterCSControllerGuard<NYDBTest::NColumnShard::TController>())
278270
, TableClient(Kikimr.GetTableClient()) {
279271
CSController->SetOverridePeriodicWakeupActivationPeriod(TDuration::Seconds(1));

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 EnableAlterShardingInColumnShard = 138 [default = false];
157158
}

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

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

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

268+
const bool isAlterSharding = Transaction.HasAlterColumnTable() && Transaction.GetAlterColumnTable().HasReshardColumnTable();
269+
if (isAlterSharding && !AppData()->FeatureFlags.GetEnableAlterShardingInColumnShard()) {
270+
result->SetError(NKikimrScheme::StatusPreconditionFailed, "Alter sharding is disabled for OLAP tables");
271+
return result;
272+
}
273+
268274
const TString& parentPathStr = Transaction.GetWorkingDir();
269275
const TString& name = Transaction.HasAlterColumnTable() ? Transaction.GetAlterColumnTable().GetName() : Transaction.GetAlterTable().GetName();
270276
LOG_NOTICE_S(context.Ctx, NKikimrServices::FLAT_TX_SCHEMESHARD,

0 commit comments

Comments
 (0)