aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorqrort <qrort@yandex-team.com>2023-08-03 17:48:52 +0300
committerqrort <qrort@yandex-team.com>2023-08-03 17:48:52 +0300
commitfe3ee098474d0e60e87a3e3cd2509f0d4806c91b (patch)
tree6da401ec7baabe9fa95fb41669381dfe72b0f859
parentca35c8446fa4073ba41f651e21601e39b99b3035 (diff)
downloadydb-fe3ee098474d0e60e87a3e3cd2509f0d4806c91b.tar.gz
KIKIMR-18826: enable sourceRead for genericQuery
-rw-r--r--ydb/core/kqp/opt/physical/kqp_opt_phy_source.cpp1
-rw-r--r--ydb/core/kqp/ut/pg/kqp_pg_ut.cpp35
2 files changed, 35 insertions, 1 deletions
diff --git a/ydb/core/kqp/opt/physical/kqp_opt_phy_source.cpp b/ydb/core/kqp/opt/physical/kqp_opt_phy_source.cpp
index 56137612996..058de92c936 100644
--- a/ydb/core/kqp/opt/physical/kqp_opt_phy_source.cpp
+++ b/ydb/core/kqp/opt/physical/kqp_opt_phy_source.cpp
@@ -20,6 +20,7 @@ using namespace NYql::NNodes;
bool UseSource(const TKqpOptimizeContext& kqpCtx, const NYql::TKikimrTableDescription& tableDesc) {
bool useSource = kqpCtx.Config->EnableKqpScanQuerySourceRead && kqpCtx.IsScanQuery();
useSource = useSource || (kqpCtx.Config->EnableKqpDataQuerySourceRead && kqpCtx.IsDataQuery());
+ useSource = useSource || kqpCtx.IsGenericQuery();
useSource = useSource &&
tableDesc.Metadata->Kind != EKikimrTableKind::SysView &&
tableDesc.Metadata->Kind != EKikimrTableKind::Olap;
diff --git a/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp b/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp
index faf9c792182..7741729b7ae 100644
--- a/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp
+++ b/ydb/core/kqp/ut/pg/kqp_pg_ut.cpp
@@ -1425,7 +1425,7 @@ Y_UNIT_TEST_SUITE(KqpPg) {
}
UNIT_ASSERT_EQUAL(rows, static_cast<ui32>(1));
- }
+ }
}
Y_UNIT_TEST(CreateNotNullPgColumn) {
@@ -1643,6 +1643,39 @@ Y_UNIT_TEST_SUITE(KqpPg) {
testType(spec);
}
}
+
+ Y_UNIT_TEST(DeleteWithQueryService) {
+ TKikimrRunner kikimr(NKqp::TKikimrSettings().SetWithSampleTables(false));
+ auto db = kikimr.GetQueryClient();
+ auto settings = NYdb::NQuery::TExecuteQuerySettings()
+ .Syntax(NYdb::NQuery::ESyntax::Pg);
+ {
+ auto client = kikimr.GetTableClient();
+ auto session = client.CreateSession().GetValueSync().GetSession();
+ const auto query = Q_(R"(
+ --!syntax_pg
+ CREATE TABLE test (
+ key int4 PRIMARY KEY,
+ value int4
+ ))");
+ auto result = session.ExecuteSchemeQuery(query).ExtractValueSync();
+ UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
+ }
+ {
+ auto result = db.ExecuteQuery(R"(
+ DELETE FROM test;
+ )", NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ UNIT_ASSERT_C(result.GetResultSets().empty(), "results are not empty");
+ }
+ {
+ auto result = db.ExecuteQuery(R"(
+ SELECT * FROM test;
+ )", NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
+ UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString());
+ CompareYson(R"([])", FormatResultSetYson(result.GetResultSet(0)));
+ }
+ }
}
} // namespace NKqp