Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 34 additions & 39 deletions ydb/core/kqp/ut/scheme/kqp_scheme_fulltext_ut.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,22 @@ using namespace NYdb::NTable;

Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {

Y_UNIT_TEST(CreateTableWithIndex) {
TStatus ExecuteSchemeQuery(TKikimrRunner& kikimr, const TString& query, bool useQueryClient) {
if (useQueryClient) {
auto db = kikimr.GetQueryClient();
return db.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx()).ExtractValueSync();
} else {
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
return session.ExecuteSchemeQuery(query).ExtractValueSync();
}
}

Y_UNIT_TEST_TWIN(CreateTableWithIndex, UseQueryClient) {
NKikimrConfig::TFeatureFlags featureFlags;
featureFlags.SetEnableFulltextIndex(true);
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
TKikimrRunner kikimr(settings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
{
TString query = R"(
--!syntax_v1
Expand All @@ -31,18 +40,16 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
WITH (layout=flat, tokenizer=whitespace, use_filter_lowercase=true)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
}
}

Y_UNIT_TEST(AlterTableWithIndex) {
Y_UNIT_TEST_TWIN(AlterTableWithIndex, UseQueryClient) {
NKikimrConfig::TFeatureFlags featureFlags;
featureFlags.SetEnableFulltextIndex(true);
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
TKikimrRunner kikimr(settings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
{
TString query = R"(
--!syntax_v1
Expand All @@ -53,7 +60,7 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
PRIMARY KEY (Key)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
}
{
Expand All @@ -65,18 +72,16 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
COVER (Data)
WITH (layout=flat, tokenizer=whitespace, use_filter_lowercase=true)
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
}
}

Y_UNIT_TEST(CreateTableWithIndexNoFeatureFlag) {
Y_UNIT_TEST_TWIN(CreateTableWithIndexNoFeatureFlag, UseQueryClient) {
NKikimrConfig::TFeatureFlags featureFlags;
featureFlags.SetEnableFulltextIndex(false);
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
TKikimrRunner kikimr(settings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
{
TString query = R"(
--!syntax_v1
Expand All @@ -90,19 +95,17 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
WITH (layout=flat, tokenizer=whitespace, use_filter_lowercase=true)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "Fulltext index support is disabled");
}
}

Y_UNIT_TEST(AlterTableWithIndexNoFeatureFlag) {
Y_UNIT_TEST_TWIN(AlterTableWithIndexNoFeatureFlag, UseQueryClient) {
NKikimrConfig::TFeatureFlags featureFlags;
featureFlags.SetEnableFulltextIndex(false);
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
TKikimrRunner kikimr(settings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
{
TString query = R"(
--!syntax_v1
Expand All @@ -113,7 +116,7 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
PRIMARY KEY (Key)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
}
{
Expand All @@ -124,19 +127,17 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
ON (Text)
WITH (layout=flat, tokenizer=whitespace, use_filter_lowercase=true)
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "Fulltext index support is disabled");
}
}

Y_UNIT_TEST(CreateTableWithIndexCaseInsensitive) {
Y_UNIT_TEST_TWIN(CreateTableWithIndexCaseInsensitive, UseQueryClient) {
NKikimrConfig::TFeatureFlags featureFlags;
featureFlags.SetEnableFulltextIndex(true);
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
TKikimrRunner kikimr(settings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
{
TString query = R"(
--!syntax_v1
Expand All @@ -150,18 +151,16 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
WITH (layOUT=FLat, tokenIZER=WHITEspace, use_FILTER_lowercase=TRUE)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
}
}

Y_UNIT_TEST(CreateTableWithIndexInvalidSettings) {
Y_UNIT_TEST_TWIN(CreateTableWithIndexInvalidSettings, UseQueryClient) {
NKikimrConfig::TFeatureFlags featureFlags;
featureFlags.SetEnableFulltextIndex(true);
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
TKikimrRunner kikimr(settings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
{ // tokenizer=asdf
TString query = R"(
--!syntax_v1
Expand All @@ -175,7 +174,7 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
WITH (layout=flat, tokenizer=asdf, use_filter_lowercase=true)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "<main>:10:54: Error: Invalid tokenizer: asdf");
}
Expand All @@ -192,7 +191,7 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
WITH (layout=flat, use_filter_lowercase=true)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "<main>:9:29: Error: tokenizer should be set");
}
Expand All @@ -208,19 +207,17 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
ON (Text)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "<main>:9:29: Error: layout should be set");
}
}

Y_UNIT_TEST(AlterTableWithIndexInvalidSettings) {
Y_UNIT_TEST_TWIN(AlterTableWithIndexInvalidSettings, UseQueryClient) {
NKikimrConfig::TFeatureFlags featureFlags;
featureFlags.SetEnableFulltextIndex(true);
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
TKikimrRunner kikimr(settings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
{
TString query = R"(
--!syntax_v1
Expand All @@ -231,7 +228,7 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
PRIMARY KEY (Key)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
}
{ // tokenizer=asdf
Expand All @@ -242,7 +239,7 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
ON (Text)
WITH (layout=flat, tokenizer=asdf, use_filter_lowercase=true)
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "<main>:6:50: Error: Invalid tokenizer: asdf");
}
Expand All @@ -254,7 +251,7 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
ON (Text)
WITH (layout=flat, use_filter_lowercase=true)
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "<main>:5:25: Error: tokenizer should be set");
}
Expand All @@ -265,19 +262,17 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
GLOBAL USING fulltext
ON (Text)
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::GENERIC_ERROR, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "<main>:5:25: Error: layout should be set");
}
}

Y_UNIT_TEST(CreateTableWithIndexInvalidTextType) {
Y_UNIT_TEST_TWIN(CreateTableWithIndexInvalidTextType, UseQueryClient) {
NKikimrConfig::TFeatureFlags featureFlags;
featureFlags.SetEnableFulltextIndex(true);
auto settings = TKikimrSettings().SetFeatureFlags(featureFlags);
TKikimrRunner kikimr(settings);
auto db = kikimr.GetTableClient();
auto session = db.CreateSession().GetValueSync().GetSession();
{
TString query = R"(
--!syntax_v1
Expand All @@ -291,7 +286,7 @@ Y_UNIT_TEST_SUITE(KqpSchemeFulltext) {
WITH (layout=flat, tokenizer=whitespace, use_filter_lowercase=true)
);
)";
auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
auto result = ExecuteSchemeQuery(kikimr, query, UseQueryClient);
UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::BAD_REQUEST, result.GetIssues().ToString());
UNIT_ASSERT_STRING_CONTAINS(result.GetIssues().ToString(), "Error: Fulltext column 'Text' expected type 'String' but got Uint64");
}
Expand Down
Loading