aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraneporada <aneporada@yandex-team.ru>2022-02-11 01:04:04 +0300
committeraneporada <aneporada@yandex-team.ru>2022-02-11 01:04:04 +0300
commita9af1955eae1da5beab8f35afe22635c467084b7 (patch)
tree1850156b52168e473e8c3679cd41196372ecad1c
parentb0613e8db8e3f8d7174e3cefe057f49523105789 (diff)
downloadydb-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.cpp2
-rw-r--r--ydb/library/yql/sql/v1/SQLv1.g.in17
-rw-r--r--ydb/library/yql/sql/v1/sql.cpp48
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;