Skip to content

Commit 2c08f12

Browse files
authored
Allow short auto partitioning strategies yql (#10701)
1 parent ef743dd commit 2c08f12

File tree

2 files changed

+35
-20
lines changed

2 files changed

+35
-20
lines changed

ydb/core/kqp/provider/yql_kikimr_gateway.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ bool SetColumnType(const TTypeAnnotationNode* typeNode, bool notNull, Ydb::Type&
198198
const TStringBuf typeName = dataTypeNode->GetName();
199199
NUdf::EDataSlot dataSlot = NUdf::GetDataSlot(typeName);
200200
if (dataSlot == NUdf::EDataSlot::Decimal) {
201-
auto dataExprTypeNode = typeNode->Cast<TDataExprParamsType>();
201+
auto dataExprTypeNode = typeNode->Cast<TDataExprParamsType>();
202202
ui32 precision = FromString(dataExprTypeNode->GetParamOne());
203203
ui32 scale = FromString(dataExprTypeNode->GetParamTwo());
204204
if (!NKikimr::NScheme::TDecimalType::Validate(precision, scale, error)) {
@@ -348,8 +348,20 @@ static std::shared_ptr<THashMap<TString, Ydb::Topic::Codec>> GetCodecsMapping()
348348

349349
static std::shared_ptr<THashMap<TString, Ydb::Topic::AutoPartitioningStrategy>> GetAutoPartitioningStrategiesMapping() {
350350
static std::shared_ptr<THashMap<TString, Ydb::Topic::AutoPartitioningStrategy>> strategiesMapping;
351-
if (strategiesMapping == nullptr) {
352-
strategiesMapping = MakeEnumMapping<Ydb::Topic::AutoPartitioningStrategy>(Ydb::Topic::AutoPartitioningStrategy_descriptor(), "auto_partitioning_strategy_");
351+
if (!strategiesMapping) {
352+
strategiesMapping = MakeEnumMapping<Ydb::Topic::AutoPartitioningStrategy>(
353+
Ydb::Topic::AutoPartitioningStrategy_descriptor(), "auto_partitioning_strategy_");
354+
355+
const TString prefix = "scale_";
356+
for (const auto& [key, value] : *strategiesMapping) {
357+
if (key.StartsWith(prefix)) {
358+
TString newKey = key;
359+
newKey.erase(0, prefix.length());
360+
361+
Y_ABORT_UNLESS(strategiesMapping->find(newKey) == strategiesMapping->end());
362+
(*strategiesMapping)[newKey] = value;
363+
}
364+
}
353365
}
354366
return strategiesMapping;
355367
}

ydb/services/persqueue_v1/topic_yql_ut.cpp

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,31 +23,34 @@ Y_UNIT_TEST_SUITE(TTopicYqlTest) {
2323
UNIT_ASSERT_VALUES_EQUAL(after + 1, before);
2424
}
2525

26-
Y_UNIT_TEST(CreateAndAlterTopicYqlBackCompatibility) {
26+
Y_UNIT_TEST(CreateTopicYqlBackCompatibility) {
2727
NKikimrConfig::TFeatureFlags ff;
2828
ff.SetEnableTopicSplitMerge(true);
2929
auto settings = NKikimr::NPersQueueTests::PQSettings();
3030
settings.SetFeatureFlags(ff);
3131

3232
NPersQueue::TTestServer server(settings);
33+
{
34+
const char *query = R"__(
35+
CREATE TOPIC `/Root/PQ/rt3.dc1--legacy--topic1` (
36+
CONSUMER c1
37+
) WITH (min_active_partitions = 2,
38+
partition_count_limit = 5,
39+
auto_partitioning_strategy = 'scale_up'
40+
);
41+
)__";
3342

34-
const char *query = R"__(
35-
CREATE TOPIC `/Root/PQ/rt3.dc1--legacy--topic1` (
36-
CONSUMER c1
37-
) WITH (min_active_partitions = 2,
38-
partition_count_limit = 5,
39-
auto_partitioning_strategy = 'scale_up'
40-
);
41-
)__";
43+
server.AnnoyingClient->RunYqlSchemeQuery(query);
44+
auto pqGroup = server.AnnoyingClient->Ls("/Root/PQ/rt3.dc1--legacy--topic1")->Record.GetPathDescription()
45+
.GetPersQueueGroup();
46+
const auto& describeAfterCreate = pqGroup.GetPQTabletConfig();
47+
Cerr <<"=== PATH DESCRIPTION: \n" << pqGroup.DebugString();
4248

43-
server.AnnoyingClient->RunYqlSchemeQuery(query);
44-
auto pqGroup = server.AnnoyingClient->Ls("/Root/PQ/rt3.dc1--legacy--topic1")->Record.GetPathDescription()
45-
.GetPersQueueGroup();
46-
const auto& describeAfterCreate = pqGroup.GetPQTabletConfig();
47-
Cerr <<"=== PATH DESCRIPTION: \n" << pqGroup.DebugString();
49+
UNIT_ASSERT_VALUES_EQUAL(describeAfterCreate.GetPartitionStrategy().GetMinPartitionCount(), 2);
50+
UNIT_ASSERT_VALUES_EQUAL(describeAfterCreate.GetPartitionStrategy().GetMaxPartitionCount(), 5);
51+
UNIT_ASSERT_VALUES_EQUAL(static_cast<int>(describeAfterCreate.GetPartitionStrategy().GetPartitionStrategyType()), static_cast<int>(::NKikimrPQ::TPQTabletConfig_TPartitionStrategyType::TPQTabletConfig_TPartitionStrategyType_CAN_SPLIT));
52+
}
4853

49-
UNIT_ASSERT_VALUES_EQUAL(describeAfterCreate.GetPartitionStrategy().GetMinPartitionCount(), 2);
50-
UNIT_ASSERT_VALUES_EQUAL(describeAfterCreate.GetPartitionStrategy().GetMaxPartitionCount(), 5);
5154
}
5255

5356
Y_UNIT_TEST(CreateAndAlterTopicYql) {
@@ -77,7 +80,7 @@ Y_UNIT_TEST_SUITE(TTopicYqlTest) {
7780
supported_codecs = 'RAW, GZIP',
7881
partition_write_speed_bytes_per_second = 9000,
7982
partition_write_burst_bytes = 100500,
80-
auto_partitioning_strategy = 'scale_up'
83+
auto_partitioning_strategy = 'up'
8184
);
8285
)__";
8386

0 commit comments

Comments
 (0)