aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflown4qqqq <flown4qqqq@yandex-team.com>2024-12-26 02:31:14 +0300
committerflown4qqqq <flown4qqqq@yandex-team.com>2024-12-26 02:48:45 +0300
commit34841a1ba2640125e3e2dde8abca0fdf5dea0bf6 (patch)
treeced612b586c5f56713bc3bf948fbb8800e4610b8
parentc98dfbd5d3655c6c7b20894a3b42ca3e66faf878 (diff)
downloadydb-34841a1ba2640125e3e2dde8abca0fdf5dea0bf6.tar.gz
alter/create user login/nologin. fix parsing into ast
commit_hash:47dcc54f91a32727e932a24909243d1f4d8fa8cc
-rw-r--r--yql/essentials/sql/v1/query.cpp17
-rw-r--r--yql/essentials/sql/v1/sql_translation.cpp2
2 files changed, 17 insertions, 2 deletions
diff --git a/yql/essentials/sql/v1/query.cpp b/yql/essentials/sql/v1/query.cpp
index bf236ae07db..b7914ec577e 100644
--- a/yql/essentials/sql/v1/query.cpp
+++ b/yql/essentials/sql/v1/query.cpp
@@ -1938,18 +1938,26 @@ public:
auto options = Y(Q(Y(Q("mode"), Q(IsUser ? "createUser" : "createGroup"))));
- if (Params) {
+ {
if (Params->IsPasswordEncrypted) {
options = L(options, Q(Y(Q("passwordEncrypted"))));
}
+
if (Params->Password) {
options = L(options, Q(Y(Q("password"), password)));
} else {
options = L(options, Q(Y(Q("nullPassword"))));
}
+
if (!Params->Roles.empty()) {
options = L(options, Q(Y(Q("roles"), Q(new TAstListNodeImpl(Pos, std::move(roles))))));
}
+
+ if (Params->CanLogin == TRoleParameters::ETypeOfLogin::Login) {
+ options = L(options, Q(Y(Q("login"))));
+ } else if (Params->CanLogin == TRoleParameters::ETypeOfLogin::NoLogin) {
+ options = L(options, Q(Y(Q("noLogin"))));
+ }
}
Add("block", Q(Y(
@@ -2018,12 +2026,19 @@ public:
if (Params.IsPasswordEncrypted) {
options = L(options, Q(Y(Q("passwordEncrypted"))));
}
+
if (Params.Password) {
options = L(options, Q(Y(Q("password"), password)));
} else {
options = L(options, Q(Y(Q("nullPassword"))));
}
+ if (Params.CanLogin == TRoleParameters::ETypeOfLogin::Login) {
+ options = L(options, Q(Y(Q("login"))));
+ } else if (Params.CanLogin == TRoleParameters::ETypeOfLogin::NoLogin) {
+ options = L(options, Q(Y(Q("noLogin"))));
+ }
+
Add("block", Q(Y(
Y("let", "sink", Y("DataSink", BuildQuotedAtom(Pos, Service), cluster)),
Y("let", "world", Y(TString(WriteName), "world", "sink", Y("Key", Q(Y(Q("role"), Y("String", name)))), Y("Void"), Q(options))),
diff --git a/yql/essentials/sql/v1/sql_translation.cpp b/yql/essentials/sql/v1/sql_translation.cpp
index 16de88ffe08..6c9b288f705 100644
--- a/yql/essentials/sql/v1/sql_translation.cpp
+++ b/yql/essentials/sql/v1/sql_translation.cpp
@@ -3887,7 +3887,7 @@ bool TSqlTranslation::RoleParameters(const std::vector<TRule_create_user_option>
result = TRoleParameters{};
if (isCreateUser) {
- result.CanLogin = TRoleParameters::ETypeOfLogin::NoLogin;
+ result.CanLogin = TRoleParameters::ETypeOfLogin::Login;
}
for (const auto& option : optionsList) {