From e2df5887eb768872003d0544bdd741491d6d1b5c Mon Sep 17 00:00:00 2001 From: kungasc Date: Tue, 30 Sep 2025 17:57:48 +0300 Subject: [PATCH] Test fulltext scheme queries with QueryService --- .../kqp/ut/scheme/kqp_scheme_fulltext_ut.cpp | 73 +++++++++---------- 1 file changed, 34 insertions(+), 39 deletions(-) diff --git a/ydb/core/kqp/ut/scheme/kqp_scheme_fulltext_ut.cpp b/ydb/core/kqp/ut/scheme/kqp_scheme_fulltext_ut.cpp index fda611e85e9c..3b656f13b14e 100644 --- a/ydb/core/kqp/ut/scheme/kqp_scheme_fulltext_ut.cpp +++ b/ydb/core/kqp/ut/scheme/kqp_scheme_fulltext_ut.cpp @@ -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 @@ -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 @@ -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()); } { @@ -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 @@ -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 @@ -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()); } { @@ -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 @@ -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 @@ -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(), "
:10:54: Error: Invalid tokenizer: asdf"); } @@ -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(), "
:9:29: Error: tokenizer should be set"); } @@ -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(), "
: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 @@ -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 @@ -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(), "
:6:50: Error: Invalid tokenizer: asdf"); } @@ -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(), "
:5:25: Error: tokenizer should be set"); } @@ -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(), "
: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 @@ -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"); }