diff options
author | ivannik <[email protected]> | 2025-08-22 15:56:27 +0300 |
---|---|---|
committer | ivannik <[email protected]> | 2025-08-22 16:19:41 +0300 |
commit | 5c41dc204afed4149a10517c7f1ac7a234ceed8c (patch) | |
tree | 765473e1cb4bc7aa0f3a0786135ee706b325cf00 /yql/essentials/sql/v1/sql_ut_common.h | |
parent | 38e90e197769039ec0dcbc1ff52996ed21916e94 (diff) |
Add new option CACHE_MODE in FAMILY settings
RFC: https://nda.ya.ru/t/vPsncOoC7HttdF
GitHub Issue: https://github.com/ydb-platform/ydb/issues/18695
commit_hash:96445a9aef7b1fede372b9e4c60b30eb9ef5fdc1
Diffstat (limited to 'yql/essentials/sql/v1/sql_ut_common.h')
-rw-r--r-- | yql/essentials/sql/v1/sql_ut_common.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/yql/essentials/sql/v1/sql_ut_common.h b/yql/essentials/sql/v1/sql_ut_common.h index 46d01395bec..8877f64735a 100644 --- a/yql/essentials/sql/v1/sql_ut_common.h +++ b/yql/essentials/sql/v1/sql_ut_common.h @@ -8812,6 +8812,54 @@ Y_UNIT_TEST_SUITE(ColumnFamily) { UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "COMPRESSION_LEVEL value should be an integer"); } + Y_UNIT_TEST(FieldCacheModeCorrectUsage) { + NYql::TAstParseResult res = SqlToYql(R"sql( use plato; + CREATE TABLE tableName ( + Key Uint32 FAMILY default, + Value String FAMILY family1, + PRIMARY KEY (Key), + FAMILY default ( + DATA = "test", + CACHE_MODE = "regular" + ), + FAMILY family1 ( + DATA = "test", + CACHE_MODE = "in_memory" + ) + ); + )sql"); + UNIT_ASSERT(res.IsOk()); + UNIT_ASSERT(res.Issues.Size() == 0); + TVerifyLineFunc verifyLine = [](const TString& word, const TString& line) { + if (word == "Write") { + UNIT_ASSERT_VALUES_UNEQUAL(TString::npos, line.find("cache_mode")); + UNIT_ASSERT_VALUES_UNEQUAL(TString::npos, line.find("regular")); + UNIT_ASSERT_VALUES_UNEQUAL(TString::npos, line.find("in_memory")); + } + }; + + TWordCountHive elementStat = { { TString("Write"), 0 }, { TString("cache_mode"), 0 } }; + VerifyProgram(res, elementStat, verifyLine); + UNIT_ASSERT_VALUES_EQUAL(1, elementStat["Write"]); + UNIT_ASSERT_VALUES_EQUAL(2, elementStat["cache_mode"]); + } + + Y_UNIT_TEST(FieldCacheModeIsNotString) { + NYql::TAstParseResult res = SqlToYql(R"sql( use plato; + CREATE TABLE tableName ( + Key Uint32 FAMILY default, + PRIMARY KEY (Key), + FAMILY default ( + DATA = "test", + CACHE_MODE = 42 + ) + ); + )sql"); + UNIT_ASSERT(!res.IsOk()); + UNIT_ASSERT(res.Issues.Size() == 1); + UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "CACHE_MODE value should be a string literal"); + } + Y_UNIT_TEST(AlterCompressionCorrectUsage) { NYql::TAstParseResult res = SqlToYql(R"( use plato; ALTER TABLE tableName ALTER FAMILY default SET COMPRESSION "lz4"; @@ -8849,6 +8897,45 @@ Y_UNIT_TEST_SUITE(ColumnFamily) { UNIT_ASSERT(res.Issues.Size() == 1); UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "COMPRESSION_LEVEL value should be an integer"); } + + Y_UNIT_TEST(AlterCompressionLevelFieldRedefinition) { + NYql::TAstParseResult res = SqlToYql(R"sql( use plato; + ALTER TABLE tableName + ALTER FAMILY default SET COMPRESSION_LEVEL 3, + ALTER FAMILY default SET COMPRESSION_LEVEL 5; + )sql"); + UNIT_ASSERT(!res.IsOk()); + UNIT_ASSERT(res.Issues.Size() == 1); + UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "Redefinition of COMPRESSION_LEVEL setting"); + } + + Y_UNIT_TEST(AlterCacheModeCorrectUsage) { + NYql::TAstParseResult res = SqlToYql(R"sql( use plato; + ALTER TABLE tableName ALTER FAMILY default SET CACHE_MODE "in_memory"; + )sql"); + UNIT_ASSERT(res.IsOk()); + UNIT_ASSERT(res.Issues.Size() == 0); + } + + Y_UNIT_TEST(AlterCacheModeFieldIsNotInteger) { + NYql::TAstParseResult res = SqlToYql(R"sql( use plato; + ALTER TABLE tableName ALTER FAMILY default SET CACHE_MODE 42; + )sql"); + UNIT_ASSERT(!res.IsOk()); + UNIT_ASSERT(res.Issues.Size() == 1); + UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "CACHE_MODE value should be a string literal"); + } + + Y_UNIT_TEST(AlterCacheModeFieldRedefinition) { + NYql::TAstParseResult res = SqlToYql(R"sql( use plato; + ALTER TABLE tableName + ALTER FAMILY default SET CACHE_MODE "in_memory", + ALTER FAMILY default SET CACHE_MODE "regular"; + )sql"); + UNIT_ASSERT(!res.IsOk()); + UNIT_ASSERT(res.Issues.Size() == 1); + UNIT_ASSERT_STRING_CONTAINS(res.Issues.ToString(), "Redefinition of CACHE_MODE setting"); + } } Y_UNIT_TEST_SUITE(Transfer) { |