aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqrort <qrort@yandex-team.com>2023-06-30 14:42:18 +0300
committerqrort <qrort@yandex-team.com>2023-06-30 14:42:18 +0300
commitd4d31d3a7786d8351e5abd7227013217df3895b3 (patch)
treedc1e668cdeb459b26ab11ee004f1df8439bbb31e
parentacf90408bdc186a989fcbdf23a4e796b12f58a92 (diff)
downloadydb-d4d31d3a7786d8351e5abd7227013217df3895b3.tar.gz
enable SourceRead for QueryService
enable SourceRead for QueryService init
-rw-r--r--ydb/core/kqp/opt/kqp_opt.h4
-rw-r--r--ydb/core/kqp/opt/kqp_opt_kql.cpp4
-rw-r--r--ydb/core/kqp/ut/service/kqp_query_service_ut.cpp27
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();