diff --git a/ydb/core/kqp/ut/query/kqp_query_ut.cpp b/ydb/core/kqp/ut/query/kqp_query_ut.cpp index 4b0212c9a79f..489715372631 100644 --- a/ydb/core/kqp/ut/query/kqp_query_ut.cpp +++ b/ydb/core/kqp/ut/query/kqp_query_ut.cpp @@ -1,3 +1,4 @@ +#include #include #include @@ -2634,6 +2635,35 @@ Y_UNIT_TEST_SUITE(KqpQuery) { } } + Y_UNIT_TEST(ExecuteWriteQuery) { + using namespace fmt::literals; + + TKikimrRunner kikimr; + auto client = kikimr.GetQueryClient(); + + { // Just generate table + const auto sql = fmt::format(R"( + CREATE TABLE test_table ( + PRIMARY KEY (id) + ) AS SELECT + ROW_NUMBER() OVER w AS id, data + FROM + AS_TABLE(ListReplicate(<|data: '{data}'|>, 500000)) + WINDOW + w AS (ORDER BY data))", + "data"_a = std::string(137, 'a') + ); + const auto result = client.ExecuteQuery(sql, NYdb::NQuery::TTxControl::NoTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(result.GetStatus(), EStatus::SUCCESS, result.GetIssues().ToString()); + } + + Cerr << TInstant::Now() << " --------------- Start update ---------------\n"; + + const auto hangingResult = client.ExecuteQuery(R"( + UPDATE test_table SET data = "a" + )", NYdb::NQuery::TTxControl::NoTx()).ExtractValueSync(); + UNIT_ASSERT_VALUES_EQUAL_C(hangingResult.GetStatus(), EStatus::SUCCESS, hangingResult.GetIssues().ToString()); + } } } // namespace NKqp diff --git a/ydb/core/kqp/ut/query/ya.make b/ydb/core/kqp/ut/query/ya.make index f8c5a4a9ca58..1708688fe1a1 100644 --- a/ydb/core/kqp/ut/query/ya.make +++ b/ydb/core/kqp/ut/query/ya.make @@ -1,5 +1,6 @@ UNITTEST_FOR(ydb/core/kqp) +TIMEOUT(60) FORK_SUBTESTS() SPLIT_FACTOR(50)