Skip to content

Commit 3abadbd

Browse files
authored
Merge 6454f59 into 17b15df
2 parents 17b15df + 6454f59 commit 3abadbd

File tree

2 files changed

+236
-0
lines changed

2 files changed

+236
-0
lines changed

ydb/core/kqp/ut/pg/kqp_pg_ut.cpp

+161
Original file line numberDiff line numberDiff line change
@@ -2483,6 +2483,167 @@ Y_UNIT_TEST_SUITE(KqpPg) {
24832483
}
24842484
}
24852485

2486+
Y_UNIT_TEST(AlterTempTables) {
2487+
NKikimrConfig::TAppConfig appConfig;
2488+
appConfig.MutableTableServiceConfig()->SetEnablePreparedDdl(true);
2489+
auto setting = NKikimrKqp::TKqpSetting();
2490+
auto serverSettings = TKikimrSettings()
2491+
.SetAppConfig(appConfig)
2492+
.SetKqpSettings({setting});
2493+
TKikimrRunner kikimr(
2494+
serverSettings.SetWithSampleTables(false).SetEnableTempTables(true));
2495+
auto clientConfig = NGRpcProxy::TGRpcClientConfig(kikimr.GetEndpoint());
2496+
auto client = kikimr.GetQueryClient();
2497+
2498+
auto settings = NYdb::NQuery::TExecuteQuerySettings()
2499+
.Syntax(NYdb::NQuery::ESyntax::Pg)
2500+
.StatsMode(NYdb::NQuery::EStatsMode::Basic);
2501+
{
2502+
auto session = client.GetSession().GetValueSync().GetSession();
2503+
auto id = session.GetId();
2504+
{
2505+
const auto query = Q_(R"(
2506+
--!syntax_pg
2507+
CREATE TABLE PgTemp (
2508+
key int2 PRIMARY KEY,
2509+
value int2))");
2510+
2511+
auto result =
2512+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
2513+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
2514+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
2515+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
2516+
}
2517+
2518+
{
2519+
auto result = session.ExecuteSchemeQuery(R"(
2520+
ALTER TABLE PgTemp DROP COLUMN value;
2521+
)", NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
2522+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
2523+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
2524+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
2525+
}
2526+
2527+
{
2528+
const auto query = Q_(R"(
2529+
--!syntax_pg
2530+
DROP TABLE PgTemp;
2531+
)");
2532+
2533+
auto result =
2534+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
2535+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
2536+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
2537+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
2538+
}
2539+
2540+
{
2541+
const auto query = Q_(R"(
2542+
--!syntax_pg
2543+
CREATE TABLE PgTemp (
2544+
key int2 PRIMARY KEY,
2545+
value int2))");
2546+
2547+
auto result =
2548+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
2549+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
2550+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
2551+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
2552+
2553+
auto resultInsert = session.ExecuteQuery(R"(
2554+
INSERT INTO PgTemp VALUES(1, 1);
2555+
)", NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
2556+
UNIT_ASSERT_VALUES_EQUAL_C(
2557+
resultInsert.GetStatus(), EStatus::SUCCESS, resultInsert.GetIssues().ToString());
2558+
}
2559+
2560+
{
2561+
const auto query = Q_(R"(
2562+
--!syntax_pg
2563+
SELECT * FROM PgTemp;
2564+
)");
2565+
2566+
auto result = session.ExecuteQuery(
2567+
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
2568+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
2569+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
2570+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
2571+
2572+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
2573+
CompareYson(R"(
2574+
[["1";"1"]]
2575+
)", FormatResultSetYson(result.GetResultSet(0)));
2576+
}
2577+
2578+
{
2579+
auto result = session.ExecuteSchemeQuery(R"(
2580+
ALTER TABLE PgTemp DROP COLUMN value;
2581+
)", NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
2582+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
2583+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
2584+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
2585+
}
2586+
2587+
{
2588+
const auto query = Q_(R"(
2589+
--!syntax_pg
2590+
SELECT * FROM PgTemp;
2591+
)");
2592+
2593+
auto result = session.ExecuteQuery(
2594+
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
2595+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
2596+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
2597+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
2598+
2599+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
2600+
CompareYson(R"(
2601+
[["1"]]
2602+
)", FormatResultSetYson(result.GetResultSet(0)));
2603+
}
2604+
2605+
{
2606+
const auto query = Q_(R"(
2607+
--!syntax_pg
2608+
DROP TABLE PgTemp;
2609+
)");
2610+
2611+
auto result =
2612+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
2613+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
2614+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
2615+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
2616+
}
2617+
2618+
{
2619+
const auto querySelect = Q_(R"(
2620+
--!syntax_pg
2621+
SELECT * FROM PgTemp;
2622+
)");
2623+
2624+
auto resultSelect = client.ExecuteQuery(
2625+
querySelect, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
2626+
UNIT_ASSERT(!resultSelect.IsSuccess());
2627+
}
2628+
2629+
bool allDoneOk = true;
2630+
NTestHelpers::CheckDelete(clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);
2631+
2632+
UNIT_ASSERT(allDoneOk);
2633+
}
2634+
2635+
{
2636+
const auto querySelect = Q_(R"(
2637+
--!syntax_pg
2638+
SELECT * FROM PgTemp;
2639+
)");
2640+
2641+
auto resultSelect = client.ExecuteQuery(
2642+
querySelect, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
2643+
UNIT_ASSERT(!resultSelect.IsSuccess());
2644+
}
2645+
}
2646+
24862647
Y_UNIT_TEST(ValuesInsert) {
24872648
TKikimrRunner kikimr(NKqp::TKikimrSettings().SetWithSampleTables(false));
24882649
auto testSingleType = [&kikimr] (const TPgTypeTestSpec& spec) {

ydb/core/kqp/ut/service/kqp_qs_queries_ut.cpp

+75
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,81 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
10431043
}
10441044
}
10451045

1046+
Y_UNIT_TEST(AlterTempTable) {
1047+
NKikimrConfig::TAppConfig appConfig;
1048+
appConfig.MutableTableServiceConfig()->SetEnablePreparedDdl(true);
1049+
auto setting = NKikimrKqp::TKqpSetting();
1050+
auto serverSettings = TKikimrSettings()
1051+
.SetAppConfig(appConfig)
1052+
.SetKqpSettings({setting});
1053+
TKikimrRunner kikimr(
1054+
serverSettings.SetWithSampleTables(false).SetEnableTempTables(true));
1055+
auto clientConfig = NGRpcProxy::TGRpcClientConfig(kikimr.GetEndpoint());
1056+
auto client = kikimr.GetQueryClient();
1057+
{
1058+
auto session = client.GetSession().GetValueSync().GetSession();
1059+
auto id = session.GetId();
1060+
1061+
{
1062+
const auto query = Q_(R"(
1063+
--!syntax_v1
1064+
CREATE TEMP TABLE Temp (
1065+
Key Uint64 NOT NULL,
1066+
Value String,
1067+
PRIMARY KEY (Key)
1068+
);)");
1069+
1070+
auto result = session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx()).ExtractValueSync();
1071+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1072+
}
1073+
1074+
{
1075+
const auto query = Q_(R"(
1076+
--!syntax_v1
1077+
SELECT * FROM Temp;
1078+
)");
1079+
1080+
auto result = session.ExecuteQuery(
1081+
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1082+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1083+
}
1084+
1085+
{
1086+
auto result = session.ExecuteSchemeQuery(R"(
1087+
ALTER TABLE Temp RENAME TO TempAlter;
1088+
)", NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
1089+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1090+
}
1091+
1092+
{
1093+
const auto query = Q_(R"(
1094+
--!syntax_v1
1095+
SELECT * FROM TempAlter;
1096+
)");
1097+
1098+
auto result = session.ExecuteQuery(
1099+
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1100+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1101+
}
1102+
1103+
bool allDoneOk = true;
1104+
NTestHelpers::CheckDelete(clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);
1105+
1106+
UNIT_ASSERT(allDoneOk);
1107+
}
1108+
1109+
{
1110+
const auto querySelect = Q_(R"(
1111+
--!syntax_v1
1112+
SELECT * FROM Temp;
1113+
)");
1114+
1115+
auto resultSelect = client.ExecuteQuery(
1116+
querySelect, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1117+
UNIT_ASSERT(!resultSelect.IsSuccess());
1118+
}
1119+
}
1120+
10461121
Y_UNIT_TEST(TempTablesDrop) {
10471122
NKikimrConfig::TAppConfig appConfig;
10481123
appConfig.MutableTableServiceConfig()->SetEnablePreparedDdl(true);

0 commit comments

Comments
 (0)