diff options
author | aneporada <aneporada@yandex-team.ru> | 2022-02-11 01:04:04 +0300 |
---|---|---|
committer | aneporada <aneporada@yandex-team.ru> | 2022-02-11 01:04:04 +0300 |
commit | a9af1955eae1da5beab8f35afe22635c467084b7 (patch) | |
tree | 1850156b52168e473e8c3679cd41196372ecad1c | |
parent | b0613e8db8e3f8d7174e3cefe057f49523105789 (diff) | |
download | ydb-a9af1955eae1da5beab8f35afe22635c467084b7.tar.gz |
[YQL-14352] Fix grammar for column families to allow FAMILY column name in an_id_schema
ref:597f3285e77d1d1a37bde4fc360fd2e1d9ac6964
-rw-r--r-- | ydb/core/kqp/ut/kqp_scheme_ut.cpp | 2 | ||||
-rw-r--r-- | ydb/library/yql/sql/v1/SQLv1.g.in | 17 | ||||
-rw-r--r-- | ydb/library/yql/sql/v1/sql.cpp | 48 |
3 files changed, 17 insertions, 50 deletions
diff --git a/ydb/core/kqp/ut/kqp_scheme_ut.cpp b/ydb/core/kqp/ut/kqp_scheme_ut.cpp index ca7ffa42a4f..df102e5cfeb 100644 --- a/ydb/core/kqp/ut/kqp_scheme_ut.cpp +++ b/ydb/core/kqp/ut/kqp_scheme_ut.cpp @@ -1466,7 +1466,7 @@ Y_UNIT_TEST_SUITE(KqpScheme) { DATA = "test", COMPRESSION = "off" ), - FAMILY Family2 + FAMILY Family2 () );)"; auto result = session.ExecuteSchemeQuery(query).GetValueSync(); UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); diff --git a/ydb/library/yql/sql/v1/SQLv1.g.in b/ydb/library/yql/sql/v1/SQLv1.g.in index 861df78e680..5975aa0d792 100644 --- a/ydb/library/yql/sql/v1/SQLv1.g.in +++ b/ydb/library/yql/sql/v1/SQLv1.g.in @@ -536,8 +536,8 @@ table_setting_value: | expr ON an_id ; -family_entry: FAMILY an_id family_settings?; -family_settings: LPAREN family_settings_entry (COMMA family_settings_entry)* RPAREN; +family_entry: FAMILY an_id family_settings; +family_settings: LPAREN (family_settings_entry (COMMA family_settings_entry)*)? RPAREN; family_settings_entry: an_id EQUALS family_setting_value; family_setting_value: STRING_VALUE; @@ -667,7 +667,6 @@ id_schema: | keyword_in_uncompat | keyword_window_uncompat | keyword_hint_uncompat -// | keyword_schema_uncompat ; id_expr: @@ -680,7 +679,6 @@ id_expr: | keyword_in_uncompat | keyword_window_uncompat | keyword_hint_uncompat - | keyword_schema_uncompat ; id_expr_in: @@ -693,7 +691,6 @@ id_expr_in: // | keyword_in_uncompat | keyword_window_uncompat | keyword_hint_uncompat - | keyword_schema_uncompat ; id_window: @@ -706,7 +703,6 @@ id_window: | keyword_in_uncompat // | keyword_window_uncompat | keyword_hint_uncompat - | keyword_schema_uncompat ; id_table: @@ -719,7 +715,6 @@ id_table: | keyword_in_uncompat | keyword_window_uncompat | keyword_hint_uncompat - | keyword_schema_uncompat ; id_without: @@ -732,7 +727,6 @@ id_without: | keyword_in_uncompat | keyword_window_uncompat | keyword_hint_uncompat - | keyword_schema_uncompat ; id_hint: @@ -745,7 +739,6 @@ id_hint: | keyword_in_uncompat | keyword_window_uncompat // | keyword_hint_uncompat - | keyword_schema_uncompat ; // ANSI-aware versions of various identifiers with support double-quoted identifiers when PRAGMA AnsiQuotedIdentifiers; is present @@ -778,7 +771,6 @@ keyword: | keyword_in_uncompat | keyword_window_uncompat | keyword_hint_uncompat - | keyword_schema_uncompat ; keyword_expr_uncompat: @@ -850,10 +842,6 @@ keyword_hint_uncompat: | COLUMNS ; -keyword_schema_uncompat: - FAMILY -; - keyword_compat: ( ABORT | ACTION @@ -913,6 +901,7 @@ keyword_compat: ( | EXPORT | EXTERNAL | FAIL + | FAMILY | FILTER | FLATTEN | FOLLOWING diff --git a/ydb/library/yql/sql/v1/sql.cpp b/ydb/library/yql/sql/v1/sql.cpp index 6e910cc81a7..cba19761b9c 100644 --- a/ydb/library/yql/sql/v1/sql.cpp +++ b/ydb/library/yql/sql/v1/sql.cpp @@ -70,7 +70,6 @@ inline TIdentifier GetKeywordId(TTranslation& ctx, const TRule_keyword& node) { // | keyword_in_uncompat // | keyword_window_uncompat // | keyword_hint_uncompat - // | keyword_schema_uncompat //; switch (node.Alt_case()) { case TRule_keyword::kAltKeyword1: @@ -89,8 +88,6 @@ inline TIdentifier GetKeywordId(TTranslation& ctx, const TRule_keyword& node) { return GetIdentifier(ctx, node.GetAlt_keyword7().GetRule_keyword_window_uncompat1()); case TRule_keyword::kAltKeyword8: return GetIdentifier(ctx, node.GetAlt_keyword8().GetRule_keyword_hint_uncompat1()); - case TRule_keyword::kAltKeyword9: - return GetIdentifier(ctx, node.GetAlt_keyword9().GetRule_keyword_schema_uncompat1()); default: Y_FAIL("You should change implementation according to grammar changes"); } @@ -144,7 +141,6 @@ static TString Id(const TRule_id_schema& node, TTranslation& ctx) { // | keyword_in_uncompat // | keyword_window_uncompat // | keyword_hint_uncompat - // // | keyword_schema_uncompat //; switch (node.Alt_case()) { case TRule_id_schema::kAltIdSchema1: @@ -194,7 +190,6 @@ static TString Id(const TRule_id_table& node, TTranslation& ctx) { // | keyword_in_uncompat // | keyword_window_uncompat // | keyword_hint_uncompat - // | keyword_schema_uncompat //; switch (node.Alt_case()) { case TRule_id_table::kAltIdTable1: @@ -211,8 +206,6 @@ static TString Id(const TRule_id_table& node, TTranslation& ctx) { return GetKeyword(ctx, node.GetAlt_id_table6().GetRule_keyword_window_uncompat1()); case TRule_id_table::kAltIdTable7: return GetKeyword(ctx, node.GetAlt_id_table7().GetRule_keyword_hint_uncompat1()); - case TRule_id_table::kAltIdTable8: - return GetKeyword(ctx, node.GetAlt_id_table8().GetRule_keyword_schema_uncompat1()); default: Y_FAIL("You should change implementation according to grammar changes"); } @@ -252,7 +245,6 @@ static TString Id(const TRule_id_expr& node, TTranslation& ctx) { // | keyword_in_uncompat // | keyword_window_uncompat // | keyword_hint_uncompat - // | keyword_schema_uncompat //; switch (node.Alt_case()) { case TRule_id_expr::kAltIdExpr1: @@ -267,8 +259,6 @@ static TString Id(const TRule_id_expr& node, TTranslation& ctx) { return GetKeyword(ctx, node.GetAlt_id_expr5().GetRule_keyword_window_uncompat1()); case TRule_id_expr::kAltIdExpr6: return GetKeyword(ctx, node.GetAlt_id_expr6().GetRule_keyword_hint_uncompat1()); - case TRule_id_expr::kAltIdExpr7: - return GetKeyword(ctx, node.GetAlt_id_expr7().GetRule_keyword_schema_uncompat1()); default: Y_FAIL("You should change implementation according to grammar changes"); } @@ -294,7 +284,6 @@ static TString Id(const TRule_id_expr_in& node, TTranslation& ctx) { // // | keyword_in_uncompat // | keyword_window_uncompat // | keyword_hint_uncompat - // | keyword_schema_uncompat //; switch (node.Alt_case()) { case TRule_id_expr_in::kAltIdExprIn1: @@ -307,8 +296,6 @@ static TString Id(const TRule_id_expr_in& node, TTranslation& ctx) { return GetKeyword(ctx, node.GetAlt_id_expr_in4().GetRule_keyword_window_uncompat1()); case TRule_id_expr_in::kAltIdExprIn5: return GetKeyword(ctx, node.GetAlt_id_expr_in5().GetRule_keyword_hint_uncompat1()); - case TRule_id_expr_in::kAltIdExprIn6: - return GetKeyword(ctx, node.GetAlt_id_expr_in6().GetRule_keyword_schema_uncompat1()); default: Y_FAIL("You should change implementation according to grammar changes"); } @@ -325,7 +312,6 @@ static TString Id(const TRule_id_window& node, TTranslation& ctx) { // | keyword_in_uncompat // // | keyword_window_uncompat // | keyword_hint_uncompat - // | keyword_schema_uncompat //; switch (node.Alt_case()) { case TRule_id_window::kAltIdWindow1: @@ -344,8 +330,6 @@ static TString Id(const TRule_id_window& node, TTranslation& ctx) { return GetKeyword(ctx, node.GetAlt_id_window7().GetRule_keyword_in_uncompat1()); case TRule_id_window::kAltIdWindow8: return GetKeyword(ctx, node.GetAlt_id_window8().GetRule_keyword_hint_uncompat1()); - case TRule_id_window::kAltIdWindow9: - return GetKeyword(ctx, node.GetAlt_id_window9().GetRule_keyword_schema_uncompat1()); default: Y_FAIL("You should change implementation according to grammar changes"); } @@ -362,7 +346,6 @@ static TString Id(const TRule_id_without& node, TTranslation& ctx) { // | keyword_in_uncompat // | keyword_window_uncompat // | keyword_hint_uncompat - // | keyword_schema_uncompat //; switch (node.Alt_case()) { case TRule_id_without::kAltIdWithout1: @@ -379,8 +362,6 @@ static TString Id(const TRule_id_without& node, TTranslation& ctx) { return GetKeyword(ctx, node.GetAlt_id_without6().GetRule_keyword_window_uncompat1()); case TRule_id_without::kAltIdWithout7: return GetKeyword(ctx, node.GetAlt_id_without7().GetRule_keyword_hint_uncompat1()); - case TRule_id_without::kAltIdWithout8: - return GetKeyword(ctx, node.GetAlt_id_without8().GetRule_keyword_schema_uncompat1()); default: Y_FAIL("You should change implementation according to grammar changes"); } @@ -397,7 +378,6 @@ static TString Id(const TRule_id_hint& node, TTranslation& ctx) { // | keyword_in_uncompat // | keyword_window_uncompat // // | keyword_hint_uncompat - // | keyword_schema_uncompat //; switch (node.Alt_case()) { case TRule_id_hint::kAltIdHint1: @@ -416,8 +396,6 @@ static TString Id(const TRule_id_hint& node, TTranslation& ctx) { return GetKeyword(ctx, node.GetAlt_id_hint7().GetRule_keyword_in_uncompat1()); case TRule_id_hint::kAltIdHint8: return GetKeyword(ctx, node.GetAlt_id_hint8().GetRule_keyword_window_uncompat1()); - case TRule_id_hint::kAltIdHint9: - return GetKeyword(ctx, node.GetAlt_id_hint9().GetRule_keyword_schema_uncompat1()); default: Y_FAIL("You should change implementation according to grammar changes"); } @@ -1822,13 +1800,17 @@ bool TSqlTranslation::FillFamilySettingsEntry(const TRule_family_settings_entry& } bool TSqlTranslation::FillFamilySettings(const TRule_family_settings& settingsNode, TFamilyEntry& family) { - if (!FillFamilySettingsEntry(settingsNode.GetRule_family_settings_entry2(), family)) { - return false; - } - for (auto& block : settingsNode.GetBlock3()) { - if (!FillFamilySettingsEntry(block.GetRule_family_settings_entry2(), family)) { + // family_settings: LPAREN (family_settings_entry (COMMA family_settings_entry)*)? RPAREN; + if (settingsNode.HasBlock2()) { + auto& settings = settingsNode.GetBlock2(); + if (!FillFamilySettingsEntry(settings.GetRule_family_settings_entry1(), family)) { return false; } + for (auto& block : settings.GetBlock2()) { + if (!FillFamilySettingsEntry(block.GetRule_family_settings_entry2(), family)) { + return false; + } + } } return true; } @@ -1940,10 +1922,8 @@ bool TSqlTranslation::CreateTableEntry(const TRule_create_table_entry& node, TCr // family_entry auto& family_entry = node.GetAlt_create_table_entry4().GetRule_family_entry1(); TFamilyEntry family(IdEx(family_entry.GetRule_an_id2(), *this)); - if (family_entry.HasBlock3()) { - if (!FillFamilySettings(family_entry.GetBlock3().GetRule_family_settings1(), family)) { - return false; - } + if (!FillFamilySettings(family_entry.GetRule_family_settings3(), family)) { + return false; } params.ColumnFamilies.push_back(family); break; @@ -8990,10 +8970,8 @@ bool TSqlQuery::AlterTableAlterColumn(const TRule_alter_table_alter_column& node bool TSqlQuery::AlterTableAddFamily(const TRule_family_entry& node, TAlterTableParameters& params) { TFamilyEntry family(IdEx(node.GetRule_an_id2(), *this)); - if (node.HasBlock3()) { - if (!FillFamilySettings(node.GetBlock3().GetRule_family_settings1(), family)) { - return false; - } + if (!FillFamilySettings(node.GetRule_family_settings3(), family)) { + return false; } params.AddColumnFamilies.push_back(family); return true; |