diff options
author | qrort <qrort@yandex-team.com> | 2023-06-30 14:42:18 +0300 |
---|---|---|
committer | qrort <qrort@yandex-team.com> | 2023-06-30 14:42:18 +0300 |
commit | d4d31d3a7786d8351e5abd7227013217df3895b3 (patch) | |
tree | dc1e668cdeb459b26ab11ee004f1df8439bbb31e | |
parent | acf90408bdc186a989fcbdf23a4e796b12f58a92 (diff) | |
download | ydb-d4d31d3a7786d8351e5abd7227013217df3895b3.tar.gz |
enable SourceRead for QueryService
enable SourceRead for QueryService
init
-rw-r--r-- | ydb/core/kqp/opt/kqp_opt.h | 4 | ||||
-rw-r--r-- | ydb/core/kqp/opt/kqp_opt_kql.cpp | 4 | ||||
-rw-r--r-- | ydb/core/kqp/ut/service/kqp_query_service_ut.cpp | 27 |
3 files changed, 35 insertions, 0 deletions
diff --git a/ydb/core/kqp/opt/kqp_opt.h b/ydb/core/kqp/opt/kqp_opt.h index 481f5e4dc61..e6cad5cfb3b 100644 --- a/ydb/core/kqp/opt/kqp_opt.h +++ b/ydb/core/kqp/opt/kqp_opt.h @@ -32,6 +32,10 @@ struct TKqpOptimizeContext : public TSimpleRefCount<TKqpOptimizeContext> { bool IsScanQuery() const { return QueryCtx->Type == NYql::EKikimrQueryType::Scan; } + + bool IsGenericQuery() const { + return QueryCtx->Type == NYql::EKikimrQueryType::Query; + } }; struct TKqpBuildQueryContext : TThrRefBase { diff --git a/ydb/core/kqp/opt/kqp_opt_kql.cpp b/ydb/core/kqp/opt/kqp_opt_kql.cpp index e892112f7a2..c04f13be049 100644 --- a/ydb/core/kqp/opt/kqp_opt_kql.cpp +++ b/ydb/core/kqp/opt/kqp_opt_kql.cpp @@ -98,6 +98,10 @@ bool UseReadTableRanges(const TKikimrTableDescription& tableData, const TIntrusi return true; } + if (kqpCtx->IsGenericQuery()) { + return true; + } + return false; } diff --git a/ydb/core/kqp/ut/service/kqp_query_service_ut.cpp b/ydb/core/kqp/ut/service/kqp_query_service_ut.cpp index b001ed94567..64b8b4f2276 100644 --- a/ydb/core/kqp/ut/service/kqp_query_service_ut.cpp +++ b/ydb/core/kqp/ut/service/kqp_query_service_ut.cpp @@ -121,6 +121,33 @@ Y_UNIT_TEST_SUITE(KqpQueryService) { ])", FormatResultSetYson(result.GetResultSet(0))); } + //KIKIMR-18492 + Y_UNIT_TEST(ExecuteQueryPgTableSelect) { + TKikimrRunner kikimr(NKqp::TKikimrSettings().SetWithSampleTables(false)); + auto settings = TExecuteQuerySettings() + .Syntax(ESyntax::Pg); + { + auto db = kikimr.GetTableClient(); + auto session = db.CreateSession().GetValueSync().GetSession(); + auto result = session.ExecuteSchemeQuery(R"( + --!syntax_pg + CREATE TABLE test (id int8,PRIMARY KEY (id)))" + ).GetValueSync(); + + UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + } + { + auto db = kikimr.GetQueryClient(); + auto result = db.ExecuteQuery( + "SELECT * FROM test", + TTxControl::BeginTx().CommitTx(), settings + ).ExtractValueSync(); + + UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString()); + CompareYson(R"([])", FormatResultSetYson(result.GetResultSet(0))); + } + } + Y_UNIT_TEST(ExecuteQueryScalar) { auto kikimr = DefaultKikimrRunner(); auto db = kikimr.GetQueryClient(); |