diff options
author | qrort <qrort@yandex-team.com> | 2023-08-03 17:48:52 +0300 |
---|---|---|
committer | qrort <qrort@yandex-team.com> | 2023-08-03 17:48:52 +0300 |
commit | fe3ee098474d0e60e87a3e3cd2509f0d4806c91b (patch) | |
tree | 6da401ec7baabe9fa95fb41669381dfe72b0f859 | |
parent | ca35c8446fa4073ba41f651e21601e39b99b3035 (diff) | |
download | ydb-fe3ee098474d0e60e87a3e3cd2509f0d4806c91b.tar.gz |
KIKIMR-18826: enable sourceRead for genericQuery
-rw-r--r-- | ydb/core/kqp/opt/physical/kqp_opt_phy_source.cpp | 1 | ||||
-rw-r--r-- | ydb/core/kqp/ut/pg/kqp_pg_ut.cpp | 35 |
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 |