diff options
author | flown4qqqq <flown4qqqq@yandex-team.com> | 2024-12-26 02:31:14 +0300 |
---|---|---|
committer | flown4qqqq <flown4qqqq@yandex-team.com> | 2024-12-26 02:48:45 +0300 |
commit | 34841a1ba2640125e3e2dde8abca0fdf5dea0bf6 (patch) | |
tree | ced612b586c5f56713bc3bf948fbb8800e4610b8 | |
parent | c98dfbd5d3655c6c7b20894a3b42ca3e66faf878 (diff) | |
download | ydb-34841a1ba2640125e3e2dde8abca0fdf5dea0bf6.tar.gz |
alter/create user login/nologin. fix parsing into ast
commit_hash:47dcc54f91a32727e932a24909243d1f4d8fa8cc
-rw-r--r-- | yql/essentials/sql/v1/query.cpp | 17 | ||||
-rw-r--r-- | yql/essentials/sql/v1/sql_translation.cpp | 2 |
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) { |