aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/sql/v1/sql_ut_antlr4.cpp
diff options
context:
space:
mode:
authorflown4qqqq <flown4qqqq@yandex-team.com>2025-01-24 00:47:07 +0300
committerflown4qqqq <flown4qqqq@yandex-team.com>2025-01-24 01:01:16 +0300
commitbf896a57c7a7ffb14ba93068a4c3efeab50dfb36 (patch)
tree38715f12c0ddf2192da62ab1a41f119c0293e1e2 /yql/essentials/sql/v1/sql_ut_antlr4.cpp
parente0834724754ae9e26fd14e27027e69cc22d1939f (diff)
downloadydb-bf896a57c7a7ffb14ba93068a4c3efeab50dfb36.tar.gz
Add option 'HASH' into CREATE USER
Need for: <https://github.com/ydb-platform/ydb-rfc/blob/main/backup_fstek.md> ``` CREATE USER my_user HASH ' {"hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=", "salt": "U+tzBtgo06EBQCjlARA6Jg==", "type": "argon2id" }' ``` commit_hash:a0c695c2e2f7f794e5c4db978fe33a7bfea59e2c
Diffstat (limited to 'yql/essentials/sql/v1/sql_ut_antlr4.cpp')
-rw-r--r--yql/essentials/sql/v1/sql_ut_antlr4.cpp59
1 files changed, 51 insertions, 8 deletions
diff --git a/yql/essentials/sql/v1/sql_ut_antlr4.cpp b/yql/essentials/sql/v1/sql_ut_antlr4.cpp
index 05e85605ef..4b1233bfee 100644
--- a/yql/essentials/sql/v1/sql_ut_antlr4.cpp
+++ b/yql/essentials/sql/v1/sql_ut_antlr4.cpp
@@ -483,7 +483,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
)");
UNIT_ASSERT(reqCreateUser.IsOk());
- UNIT_ASSERT(reqCreateUser.Root);
auto reqAlterUser = SqlToYql(R"(
USE plato;
@@ -491,7 +490,7 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
)");
UNIT_ASSERT(!reqAlterUser.IsOk());
- UNIT_ASSERT_STRING_CONTAINS(reqAlterUser.Issues.ToString(), "Error: mismatched input ';' expecting {ENCRYPTED, LOGIN, NOLOGIN, PASSWORD, RENAME, WITH}");
+ UNIT_ASSERT_STRING_CONTAINS(reqAlterUser.Issues.ToString(), "Error: mismatched input ';' expecting {ENCRYPTED, HASH, LOGIN, NOLOGIN, PASSWORD, RENAME, WITH}");
auto reqPasswordAndLogin = SqlToYql(R"(
USE plato;
@@ -499,7 +498,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
)");
UNIT_ASSERT(reqPasswordAndLogin.IsOk());
- UNIT_ASSERT(reqPasswordAndLogin.Root);
auto reqPasswordAndNoLogin = SqlToYql(R"(
USE plato;
@@ -507,7 +505,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
)");
UNIT_ASSERT(reqPasswordAndNoLogin.IsOk());
- UNIT_ASSERT(reqPasswordAndNoLogin.Root);
auto reqLogin = SqlToYql(R"(
USE plato;
@@ -515,7 +512,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
)");
UNIT_ASSERT(reqLogin.IsOk());
- UNIT_ASSERT(reqLogin.Root);
auto reqNoLogin = SqlToYql(R"(
USE plato;
@@ -523,7 +519,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
)");
UNIT_ASSERT(reqNoLogin.IsOk());
- UNIT_ASSERT(reqNoLogin.Root);
auto reqLoginNoLogin = SqlToYql(R"(
USE plato;
@@ -540,7 +535,6 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
)");
UNIT_ASSERT(reqAlterLoginNoLogin.IsOk());
- UNIT_ASSERT(reqAlterLoginNoLogin.Root);
auto reqAlterLoginNoLoginWithPassword = SqlToYql(R"(
USE plato;
@@ -549,7 +543,56 @@ Y_UNIT_TEST_SUITE(SqlParsingOnly) {
)");
UNIT_ASSERT(reqAlterLoginNoLoginWithPassword.IsOk());
- UNIT_ASSERT(reqAlterLoginNoLoginWithPassword.Root);
+ }
+
+ Y_UNIT_TEST(CreateUserWithHash) {
+ auto reqCreateUser = SqlToYql(R"(
+ USE plato;
+ CREATE USER user1 HASH '{
+ "hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=",
+ "salt": "U+tzBtgo06EBQCjlARA6Jg==",
+ "type": "argon2id"
+ }';
+ )");
+
+ UNIT_ASSERT(reqCreateUser.IsOk());
+
+ auto reqCreateUserWithNoLogin = SqlToYql(R"(
+ USE plato;
+ CREATE USER user1 HASH '{
+ "hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=",
+ "salt": "U+tzBtgo06EBQCjlARA6Jg==",
+ "type": "argon2id"
+ }'
+ NOLOGIN;
+ )");
+
+ UNIT_ASSERT(reqCreateUserWithNoLogin.IsOk());
+
+ auto reqCreateUserWithPassword = SqlToYql(R"(
+ USE plato;
+ CREATE USER user1 HASH '{
+ "hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=",
+ "salt": "U+tzBtgo06EBQCjlARA6Jg==",
+ "type": "argon2id"
+ }'
+ PASSWORD '123';
+ )");
+
+ UNIT_ASSERT(!reqCreateUserWithPassword.IsOk());
+ UNIT_ASSERT_STRING_CONTAINS(reqCreateUserWithPassword.Issues.ToString(), "Error: Conflicting or redundant options");
+
+ auto reqAlterUser = SqlToYql(R"(
+ USE plato;
+ CREATE USER user1;
+ ALTER USER user1 HASH '{
+ "hash": "p4ffeMugohqyBwyckYCK1TjJfz3LIHbKiGL+t+oEhzw=",
+ "salt": "U+tzBtgo06EBQCjlARA6Jg==",
+ "type": "argon2id"
+ }';
+ )");
+
+ UNIT_ASSERT(reqAlterUser.IsOk());
}
Y_UNIT_TEST(JoinWithoutConcreteColumns) {