Skip to content

Commit 49fc9ff

Browse files
committed
YQ-3491 support sql for resource pool classifiers (#7389)
1 parent b3b99f7 commit 49fc9ff

File tree

9 files changed

+310
-25
lines changed

9 files changed

+310
-25
lines changed

ydb/core/kqp/ut/scheme/kqp_scheme_ut.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6214,8 +6214,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
62146214
// ALTER RESOURCE POOL
62156215
checkDisabled(R"(
62166216
ALTER RESOURCE POOL MyResourcePool
6217-
SET (CONCURRENT_QUERY_LIMIT = 30),
6218-
SET QUEUE_SIZE 100,
6217+
SET (CONCURRENT_QUERY_LIMIT = 30, QUEUE_SIZE = 100),
62196218
RESET (QUERY_MEMORY_LIMIT_PERCENT_PER_NODE);
62206219
)");
62216220

@@ -6252,7 +6251,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
62526251

62536252
result = session.ExecuteSchemeQuery(R"(
62546253
ALTER RESOURCE POOL MyResourcePool
6255-
SET ANOTHER_LIMIT 5,
6254+
SET (ANOTHER_LIMIT = 5),
62566255
RESET (SOME_LIMIT);
62576256
)").GetValueSync();
62586257
UNIT_ASSERT_VALUES_EQUAL(result.GetStatus(), EStatus::GENERIC_ERROR);
@@ -6365,8 +6364,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
63656364
{
63666365
auto query = R"(
63676366
ALTER RESOURCE POOL MyResourcePool
6368-
SET (CONCURRENT_QUERY_LIMIT = 30),
6369-
SET QUEUE_SIZE 100,
6367+
SET (CONCURRENT_QUERY_LIMIT = 30, QUEUE_SIZE = 100),
63706368
RESET (QUERY_MEMORY_LIMIT_PERCENT_PER_NODE);
63716369
)";
63726370
auto result = session.ExecuteSchemeQuery(query).GetValueSync();
@@ -6395,8 +6393,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) {
63956393

63966394
auto query = R"(
63976395
ALTER RESOURCE POOL MyResourcePool
6398-
SET (CONCURRENT_QUERY_LIMIT = 30),
6399-
SET QUEUE_SIZE 100,
6396+
SET (CONCURRENT_QUERY_LIMIT = 30, QUEUE_SIZE = 100),
64006397
RESET (QUERY_MEMORY_LIMIT_PERCENT_PER_NODE);
64016398
)";
64026399
auto result = session.ExecuteSchemeQuery(query).GetValueSync();

ydb/library/yql/sql/v1/SQLv1.g.in

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,9 @@ sql_stmt_core:
6767
| alter_resource_pool_stmt
6868
| drop_resource_pool_stmt
6969
| analyze_stmt
70+
| create_resource_pool_classifier_stmt
71+
| alter_resource_pool_classifier_stmt
72+
| drop_resource_pool_classifier_stmt
7073
;
7174

7275
expr:
@@ -810,13 +813,26 @@ alter_resource_pool_stmt: ALTER RESOURCE POOL object_ref
810813
alter_resource_pool_action (COMMA alter_resource_pool_action)*
811814
;
812815
alter_resource_pool_action:
813-
alter_table_set_table_setting_uncompat
814-
| alter_table_set_table_setting_compat
816+
alter_table_set_table_setting_compat
815817
| alter_table_reset_table_setting
816818
;
817819

818820
drop_resource_pool_stmt: DROP RESOURCE POOL object_ref;
819821

822+
create_resource_pool_classifier_stmt: CREATE RESOURCE POOL CLASSIFIER object_ref
823+
with_table_settings
824+
;
825+
826+
alter_resource_pool_classifier_stmt: ALTER RESOURCE POOL CLASSIFIER object_ref
827+
alter_resource_pool_classifier_action (COMMA alter_resource_pool_classifier_action)*
828+
;
829+
alter_resource_pool_classifier_action:
830+
alter_table_set_table_setting_compat
831+
| alter_table_reset_table_setting
832+
;
833+
834+
drop_resource_pool_classifier_stmt: DROP RESOURCE POOL CLASSIFIER object_ref;
835+
820836
create_replication_stmt: CREATE ASYNC REPLICATION object_ref
821837
FOR replication_target (COMMA replication_target)*
822838
WITH LPAREN replication_settings RPAREN
@@ -1205,6 +1221,7 @@ keyword_as_compat:
12051221
| CASCADE
12061222
| CHANGEFEED
12071223
| CHECK
1224+
| CLASSIFIER
12081225
// | COLLATE
12091226
| COMMIT
12101227
| CONDITIONAL
@@ -1417,6 +1434,7 @@ keyword_compat: (
14171434
| CASCADE
14181435
| CHANGEFEED
14191436
| CHECK
1437+
| CLASSIFIER
14201438
| COLLATE
14211439
| COMMIT
14221440
| CONDITIONAL
@@ -1733,6 +1751,7 @@ CASE: C A S E;
17331751
CAST: C A S T;
17341752
CHANGEFEED: C H A N G E F E E D;
17351753
CHECK: C H E C K;
1754+
CLASSIFIER: C L A S S I F I E R;
17361755
COLLATE: C O L L A T E;
17371756
COLUMN: C O L U M N;
17381757
COLUMNS: C O L U M N S;

ydb/library/yql/sql/v1/format/sql_format.cpp

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1535,6 +1535,39 @@ friend struct TStaticData;
15351535
VisitAllFields(TRule_drop_resource_pool_stmt::GetDescriptor(), msg);
15361536
}
15371537

1538+
void VisitCreateResourcePoolClassifier(const TRule_create_resource_pool_classifier_stmt& msg) {
1539+
PosFromToken(msg.GetToken1());
1540+
NewLine();
1541+
VisitAllFields(TRule_create_resource_pool_classifier_stmt::GetDescriptor(), msg);
1542+
}
1543+
1544+
void VisitAlterResourcePoolClassifier(const TRule_alter_resource_pool_classifier_stmt& msg) {
1545+
PosFromToken(msg.GetToken1());
1546+
NewLine();
1547+
VisitToken(msg.GetToken1());
1548+
VisitToken(msg.GetToken2());
1549+
VisitToken(msg.GetToken3());
1550+
VisitToken(msg.GetToken4());
1551+
Visit(msg.GetRule_object_ref5());
1552+
1553+
NewLine();
1554+
PushCurrentIndent();
1555+
Visit(msg.GetRule_alter_resource_pool_classifier_action6());
1556+
for (const auto& action : msg.GetBlock7()) {
1557+
Visit(action.GetToken1()); // comma
1558+
NewLine();
1559+
Visit(action.GetRule_alter_resource_pool_classifier_action2());
1560+
}
1561+
1562+
PopCurrentIndent();
1563+
}
1564+
1565+
void VisitDropResourcePoolClassifier(const TRule_drop_resource_pool_classifier_stmt& msg) {
1566+
PosFromToken(msg.GetToken1());
1567+
NewLine();
1568+
VisitAllFields(TRule_drop_resource_pool_classifier_stmt::GetDescriptor(), msg);
1569+
}
1570+
15381571
void VisitAllFields(const NProtoBuf::Descriptor* descr, const NProtoBuf::Message& msg) {
15391572
VisitAllFieldsImpl<TPrettyVisitor, &TPrettyVisitor::Visit>(this, descr, msg);
15401573
}
@@ -2752,7 +2785,10 @@ TStaticData::TStaticData()
27522785
{TRule_create_resource_pool_stmt::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitCreateResourcePool)},
27532786
{TRule_alter_resource_pool_stmt::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitAlterResourcePool)},
27542787
{TRule_drop_resource_pool_stmt::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitDropResourcePool)},
2755-
{TRule_analyze_stmt::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitAnalyze)}
2788+
{TRule_analyze_stmt::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitAnalyze)},
2789+
{TRule_create_resource_pool_classifier_stmt::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitCreateResourcePoolClassifier)},
2790+
{TRule_alter_resource_pool_classifier_stmt::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitAlterResourcePoolClassifier)},
2791+
{TRule_drop_resource_pool_classifier_stmt::GetDescriptor(), MakePrettyFunctor(&TPrettyVisitor::VisitDropResourcePoolClassifier)}
27562792
})
27572793
, ObfuscatingVisitDispatch({
27582794
{TToken::GetDescriptor(), MakeObfuscatingFunctor(&TObfuscatingVisitor::VisitToken)},

ydb/library/yql/sql/v1/format/sql_format_ut.cpp

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1604,8 +1604,8 @@ FROM Input MATCH_RECOGNIZE (PATTERN (A) DEFINE A AS A);
16041604
"CREATE RESOURCE POOL naMe WITH (a = \"b\");\n"},
16051605
{"create resource pool eds with (a=\"a\",b=\"b\",c = true)",
16061606
"CREATE RESOURCE POOL eds WITH (\n\ta = \"a\",\n\tb = \"b\",\n\tc = TRUE\n);\n"},
1607-
{"alTer reSOurcE poOl naMe sEt a tRue, resEt (b, c), seT (x=y, z=false)",
1608-
"ALTER RESOURCE POOL naMe\n\tSET a TRUE,\n\tRESET (b, c),\n\tSET (x = y, z = FALSE);\n"},
1607+
{"alTer reSOurcE poOl naMe resEt (b, c), seT (x=y, z=false)",
1608+
"ALTER RESOURCE POOL naMe\n\tRESET (b, c),\n\tSET (x = y, z = FALSE);\n"},
16091609
{"alter resource pool eds reset (a), set (x=y)",
16101610
"ALTER RESOURCE POOL eds\n\tRESET (a),\n\tSET (x = y);\n"},
16111611
{"dRop reSourCe poOl naMe",
@@ -1616,8 +1616,6 @@ FROM Input MATCH_RECOGNIZE (PATTERN (A) DEFINE A AS A);
16161616
setup.Run(cases);
16171617
}
16181618

1619-
1620-
16211619
Y_UNIT_TEST(Analyze) {
16221620
TCases cases = {
16231621
{"analyze table (col1, col2, col3)",
@@ -1629,4 +1627,22 @@ FROM Input MATCH_RECOGNIZE (PATTERN (A) DEFINE A AS A);
16291627
TSetup setup;
16301628
setup.Run(cases);
16311629
}
1630+
1631+
Y_UNIT_TEST(ResourcePoolClassifierOperations) {
1632+
TCases cases = {
1633+
{"creAte reSourCe poOl ClaSsiFIer naMe With (a = \"b\")",
1634+
"CREATE RESOURCE POOL CLASSIFIER naMe WITH (a = \"b\");\n"},
1635+
{"create resource pool classifier eds with (a=\"a\",b=\"b\",c = true)",
1636+
"CREATE RESOURCE POOL CLASSIFIER eds WITH (\n\ta = \"a\",\n\tb = \"b\",\n\tc = TRUE\n);\n"},
1637+
{"alTer reSOurcE poOl ClaSsiFIer naMe resEt (b, c), seT (x=y, z=false)",
1638+
"ALTER RESOURCE POOL CLASSIFIER naMe\n\tRESET (b, c),\n\tSET (x = y, z = FALSE);\n"},
1639+
{"alter resource pool classifier eds reset (a), set (x=y)",
1640+
"ALTER RESOURCE POOL CLASSIFIER eds\n\tRESET (a),\n\tSET (x = y);\n"},
1641+
{"dRop reSourCe poOl ClaSsiFIer naMe",
1642+
"DROP RESOURCE POOL CLASSIFIER naMe;\n"},
1643+
};
1644+
1645+
TSetup setup;
1646+
setup.Run(cases);
1647+
}
16321648
}

ydb/library/yql/sql/v1/sql.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,9 @@ bool NeedUseForAllStatements(const TRule_sql_stmt_core::AltCase& subquery) {
168168
case TRule_sql_stmt_core::kAltSqlStmtCore46: // alter resource pool
169169
case TRule_sql_stmt_core::kAltSqlStmtCore47: // drop resource pool
170170
case TRule_sql_stmt_core::kAltSqlStmtCore48: // analyze
171+
case TRule_sql_stmt_core::kAltSqlStmtCore49: // create resource pool classifier
172+
case TRule_sql_stmt_core::kAltSqlStmtCore50: // alter resource pool classifier
173+
case TRule_sql_stmt_core::kAltSqlStmtCore51: // drop resource pool classifier
171174
return false;
172175
}
173176
}

ydb/library/yql/sql/v1/sql_query.cpp

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1395,6 +1395,69 @@ bool TSqlQuery::Statement(TVector<TNodePtr>& blocks, const TRule_sql_stmt_core&
13951395
AddStatementToBlocks(blocks, BuildAnalyze(Ctx.Pos(), tr.Service, tr.Cluster, params, Ctx.Scoped));
13961396
break;
13971397
}
1398+
case TRule_sql_stmt_core::kAltSqlStmtCore49: {
1399+
// create_resource_pool_classifier_stmt: CREATE RESOURCE POOL CLASSIFIER name WITH (k=v,...);
1400+
auto& node = core.GetAlt_sql_stmt_core49().GetRule_create_resource_pool_classifier_stmt1();
1401+
TObjectOperatorContext context(Ctx.Scoped);
1402+
if (node.GetRule_object_ref5().HasBlock1()) {
1403+
if (!ClusterExpr(node.GetRule_object_ref5().GetBlock1().GetRule_cluster_expr1(),
1404+
false, context.ServiceId, context.Cluster)) {
1405+
return false;
1406+
}
1407+
}
1408+
1409+
const TString& objectId = Id(node.GetRule_object_ref5().GetRule_id_or_at2(), *this).second;
1410+
std::map<TString, TDeferredAtom> kv;
1411+
if (!ParseResourcePoolClassifierSettings(kv, node.GetRule_with_table_settings6())) {
1412+
return false;
1413+
}
1414+
1415+
AddStatementToBlocks(blocks, BuildCreateObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", false, false, std::move(kv), context));
1416+
break;
1417+
}
1418+
case TRule_sql_stmt_core::kAltSqlStmtCore50: {
1419+
// alter_resource_pool_classifier_stmt: ALTER RESOURCE POOL CLASSIFIER object_ref alter_resource_pool_classifier_action (COMMA alter_resource_pool_classifier_action)*
1420+
Ctx.BodyPart();
1421+
const auto& node = core.GetAlt_sql_stmt_core50().GetRule_alter_resource_pool_classifier_stmt1();
1422+
TObjectOperatorContext context(Ctx.Scoped);
1423+
if (node.GetRule_object_ref5().HasBlock1()) {
1424+
if (!ClusterExpr(node.GetRule_object_ref5().GetBlock1().GetRule_cluster_expr1(),
1425+
false, context.ServiceId, context.Cluster)) {
1426+
return false;
1427+
}
1428+
}
1429+
1430+
const TString& objectId = Id(node.GetRule_object_ref5().GetRule_id_or_at2(), *this).second;
1431+
std::map<TString, TDeferredAtom> kv;
1432+
std::set<TString> toReset;
1433+
if (!ParseResourcePoolClassifierSettings(kv, toReset, node.GetRule_alter_resource_pool_classifier_action6())) {
1434+
return false;
1435+
}
1436+
1437+
for (const auto& action : node.GetBlock7()) {
1438+
if (!ParseResourcePoolClassifierSettings(kv, toReset, action.GetRule_alter_resource_pool_classifier_action2())) {
1439+
return false;
1440+
}
1441+
}
1442+
1443+
AddStatementToBlocks(blocks, BuildAlterObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", std::move(kv), std::move(toReset), context));
1444+
break;
1445+
}
1446+
case TRule_sql_stmt_core::kAltSqlStmtCore51: {
1447+
// drop_resource_pool_classifier_stmt: DROP RESOURCE POOL CLASSIFIER name;
1448+
auto& node = core.GetAlt_sql_stmt_core51().GetRule_drop_resource_pool_classifier_stmt1();
1449+
TObjectOperatorContext context(Ctx.Scoped);
1450+
if (node.GetRule_object_ref5().HasBlock1()) {
1451+
if (!ClusterExpr(node.GetRule_object_ref5().GetBlock1().GetRule_cluster_expr1(),
1452+
false, context.ServiceId, context.Cluster)) {
1453+
return false;
1454+
}
1455+
}
1456+
1457+
const TString& objectId = Id(node.GetRule_object_ref5().GetRule_id_or_at2(), *this).second;
1458+
AddStatementToBlocks(blocks, BuildDropObjectOperation(Ctx.Pos(), objectId, "RESOURCE_POOL_CLASSIFIER", false, {}, context));
1459+
break;
1460+
}
13981461
case TRule_sql_stmt_core::ALT_NOT_SET:
13991462
Ctx.IncrementMonCounter("sql_errors", "UnknownStatement" + internalStatementName);
14001463
AltNotImplemented("sql_stmt_core", core);

ydb/library/yql/sql/v1/sql_translation.cpp

Lines changed: 72 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4712,34 +4712,98 @@ bool TSqlTranslation::ParseResourcePoolSettings(std::map<TString, TDeferredAtom>
47124712
bool TSqlTranslation::ParseResourcePoolSettings(std::map<TString, TDeferredAtom>& result, std::set<TString>& toReset, const TRule_alter_resource_pool_action& alterAction) {
47134713
switch (alterAction.Alt_case()) {
47144714
case TRule_alter_resource_pool_action::kAltAlterResourcePoolAction1: {
4715-
const auto& action = alterAction.GetAlt_alter_resource_pool_action1().GetRule_alter_table_set_table_setting_uncompat1();
4716-
if (!StoreResourcePoolSettingsEntry(IdEx(action.GetRule_an_id2(), *this), &action.GetRule_table_setting_value3(), result)) {
4715+
const auto& action = alterAction.GetAlt_alter_resource_pool_action1().GetRule_alter_table_set_table_setting_compat1();
4716+
if (!StoreResourcePoolSettingsEntry(action.GetRule_alter_table_setting_entry3(), result)) {
47174717
return false;
47184718
}
4719+
for (const auto& entry : action.GetBlock4()) {
4720+
if (!StoreResourcePoolSettingsEntry(entry.GetRule_alter_table_setting_entry2(), result)) {
4721+
return false;
4722+
}
4723+
}
47194724
return true;
47204725
}
47214726
case TRule_alter_resource_pool_action::kAltAlterResourcePoolAction2: {
4722-
const auto& action = alterAction.GetAlt_alter_resource_pool_action2().GetRule_alter_table_set_table_setting_compat1();
4723-
if (!StoreResourcePoolSettingsEntry(action.GetRule_alter_table_setting_entry3(), result)) {
4727+
const auto& action = alterAction.GetAlt_alter_resource_pool_action2().GetRule_alter_table_reset_table_setting1();
4728+
const TString firstKey = to_lower(IdEx(action.GetRule_an_id3(), *this).Name);
4729+
toReset.insert(firstKey);
4730+
for (const auto& key : action.GetBlock4()) {
4731+
toReset.insert(to_lower(IdEx(key.GetRule_an_id2(), *this).Name));
4732+
}
4733+
return true;
4734+
}
4735+
case TRule_alter_resource_pool_action::ALT_NOT_SET:
4736+
Y_ABORT("You should change implementation according to grammar changes");
4737+
}
4738+
}
4739+
4740+
bool TSqlTranslation::StoreResourcePoolClassifierSettingsEntry(const TIdentifier& id, const TRule_table_setting_value* value, std::map<TString, TDeferredAtom>& result) {
4741+
YQL_ENSURE(value);
4742+
4743+
const TString key = to_lower(id.Name);
4744+
if (result.find(key) != result.end()) {
4745+
Ctx.Error() << to_upper(key) << " duplicate keys";
4746+
return false;
4747+
}
4748+
4749+
switch (value->Alt_case()) {
4750+
case TRule_table_setting_value::kAltTableSettingValue2:
4751+
return StoreString(*value, result[key], Ctx, to_upper(key));
4752+
4753+
case TRule_table_setting_value::kAltTableSettingValue3:
4754+
return StoreInt(*value, result[key], Ctx, to_upper(key));
4755+
4756+
default:
4757+
Ctx.Error() << to_upper(key) << " value should be a string literal or integer";
4758+
return false;
4759+
}
4760+
4761+
return true;
4762+
}
4763+
4764+
bool TSqlTranslation::StoreResourcePoolClassifierSettingsEntry(const TRule_alter_table_setting_entry& entry, std::map<TString, TDeferredAtom>& result) {
4765+
const TIdentifier id = IdEx(entry.GetRule_an_id1(), *this);
4766+
return StoreResourcePoolClassifierSettingsEntry(id, &entry.GetRule_table_setting_value3(), result);
4767+
}
4768+
4769+
bool TSqlTranslation::ParseResourcePoolClassifierSettings(std::map<TString, TDeferredAtom>& result, const TRule_with_table_settings& settingsNode) {
4770+
const auto& firstEntry = settingsNode.GetRule_table_settings_entry3();
4771+
if (!StoreResourcePoolClassifierSettingsEntry(IdEx(firstEntry.GetRule_an_id1(), *this), &firstEntry.GetRule_table_setting_value3(), result)) {
4772+
return false;
4773+
}
4774+
for (const auto& block : settingsNode.GetBlock4()) {
4775+
const auto& entry = block.GetRule_table_settings_entry2();
4776+
if (!StoreResourcePoolClassifierSettingsEntry(IdEx(entry.GetRule_an_id1(), *this), &entry.GetRule_table_setting_value3(), result)) {
4777+
return false;
4778+
}
4779+
}
4780+
return true;
4781+
}
4782+
4783+
bool TSqlTranslation::ParseResourcePoolClassifierSettings(std::map<TString, TDeferredAtom>& result, std::set<TString>& toReset, const TRule_alter_resource_pool_classifier_action& alterAction) {
4784+
switch (alterAction.Alt_case()) {
4785+
case TRule_alter_resource_pool_classifier_action::kAltAlterResourcePoolClassifierAction1: {
4786+
const auto& action = alterAction.GetAlt_alter_resource_pool_classifier_action1().GetRule_alter_table_set_table_setting_compat1();
4787+
if (!StoreResourcePoolClassifierSettingsEntry(action.GetRule_alter_table_setting_entry3(), result)) {
47244788
return false;
47254789
}
47264790
for (const auto& entry : action.GetBlock4()) {
4727-
if (!StoreResourcePoolSettingsEntry(entry.GetRule_alter_table_setting_entry2(), result)) {
4791+
if (!StoreResourcePoolClassifierSettingsEntry(entry.GetRule_alter_table_setting_entry2(), result)) {
47284792
return false;
47294793
}
47304794
}
47314795
return true;
47324796
}
4733-
case TRule_alter_resource_pool_action::kAltAlterResourcePoolAction3: {
4734-
const auto& action = alterAction.GetAlt_alter_resource_pool_action3().GetRule_alter_table_reset_table_setting1();
4797+
case TRule_alter_resource_pool_classifier_action::kAltAlterResourcePoolClassifierAction2: {
4798+
const auto& action = alterAction.GetAlt_alter_resource_pool_classifier_action2().GetRule_alter_table_reset_table_setting1();
47354799
const TString firstKey = to_lower(IdEx(action.GetRule_an_id3(), *this).Name);
47364800
toReset.insert(firstKey);
47374801
for (const auto& key : action.GetBlock4()) {
47384802
toReset.insert(to_lower(IdEx(key.GetRule_an_id2(), *this).Name));
47394803
}
47404804
return true;
47414805
}
4742-
case TRule_alter_resource_pool_action::ALT_NOT_SET:
4806+
case TRule_alter_resource_pool_classifier_action::ALT_NOT_SET:
47434807
Y_ABORT("You should change implementation according to grammar changes");
47444808
}
47454809
}

0 commit comments

Comments
 (0)