Skip to content

Commit 65c0918

Browse files
authored
Test alter temp table (#3011)
1 parent 9485eb0 commit 65c0918

File tree

1 file changed

+163
-0
lines changed

1 file changed

+163
-0
lines changed

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

+163
Original file line numberDiff line numberDiff line change
@@ -1043,6 +1043,169 @@ 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+
auto settings = NYdb::NQuery::TExecuteQuerySettings()
1058+
.StatsMode(NYdb::NQuery::EStatsMode::Basic);
1059+
{
1060+
auto session = client.GetSession().GetValueSync().GetSession();
1061+
auto id = session.GetId();
1062+
1063+
{
1064+
const auto query = Q_(R"(
1065+
--!syntax_v1
1066+
CREATE TEMP TABLE Temp (
1067+
Key Int32 NOT NULL,
1068+
Value Int32,
1069+
PRIMARY KEY (Key)
1070+
);)");
1071+
1072+
auto result =
1073+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
1074+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1075+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
1076+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
1077+
}
1078+
1079+
{
1080+
const auto query = Q_(R"(
1081+
--!syntax_v1
1082+
ALTER TABLE Temp DROP COLUMN Value;
1083+
)");
1084+
auto result =
1085+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
1086+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1087+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
1088+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
1089+
}
1090+
1091+
{
1092+
const auto query = Q_(R"(
1093+
--!syntax_v1
1094+
DROP TABLE Temp;
1095+
)");
1096+
1097+
auto result =
1098+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
1099+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1100+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
1101+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
1102+
}
1103+
1104+
{
1105+
const auto query = Q_(R"(
1106+
--!syntax_v1
1107+
CREATE TEMP TABLE Temp (
1108+
Key Int32 NOT NULL,
1109+
Value Int32,
1110+
PRIMARY KEY (Key)
1111+
);)");
1112+
1113+
auto result =
1114+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
1115+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1116+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
1117+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
1118+
1119+
auto resultInsert = session.ExecuteQuery(R"(
1120+
UPSERT INTO Temp (Key, Value) VALUES (1, 1);
1121+
)", NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
1122+
UNIT_ASSERT_VALUES_EQUAL_C(
1123+
resultInsert.GetStatus(), EStatus::SUCCESS, resultInsert.GetIssues().ToString());
1124+
}
1125+
1126+
{
1127+
const auto query = Q_(R"(
1128+
--!syntax_v1
1129+
SELECT * FROM Temp;
1130+
)");
1131+
1132+
auto result = session.ExecuteQuery(
1133+
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
1134+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1135+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
1136+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
1137+
1138+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
1139+
CompareYson(R"([[1;[1]]])", FormatResultSetYson(result.GetResultSet(0)));
1140+
}
1141+
1142+
{
1143+
auto result = session.ExecuteQuery(R"(
1144+
ALTER TABLE Temp DROP COLUMN Value;
1145+
)", NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
1146+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1147+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
1148+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
1149+
}
1150+
1151+
{
1152+
const auto query = Q_(R"(
1153+
--!syntax_v1
1154+
SELECT * FROM Temp;
1155+
)");
1156+
1157+
auto result = session.ExecuteQuery(
1158+
query, NYdb::NQuery::TTxControl::BeginTx().CommitTx(), settings).ExtractValueSync();
1159+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1160+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
1161+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
1162+
1163+
UNIT_ASSERT_C(!result.GetResultSets().empty(), "results are empty");
1164+
CompareYson(R"([[1]])", FormatResultSetYson(result.GetResultSet(0)));
1165+
}
1166+
1167+
{
1168+
const auto query = Q_(R"(
1169+
--!syntax_v1
1170+
DROP TABLE Temp;
1171+
)");
1172+
1173+
auto result =
1174+
session.ExecuteQuery(query, NYdb::NQuery::TTxControl::NoTx(), settings).ExtractValueSync();
1175+
UNIT_ASSERT_C(result.IsSuccess(), result.GetIssues().ToString());
1176+
auto stats = NYdb::TProtoAccessor::GetProto(*result.GetStats());
1177+
UNIT_ASSERT_VALUES_EQUAL(stats.compilation().from_cache(), false);
1178+
}
1179+
1180+
{
1181+
const auto querySelect = Q_(R"(
1182+
--!syntax_v1
1183+
SELECT * FROM Temp;
1184+
)");
1185+
1186+
auto resultSelect = client.ExecuteQuery(
1187+
querySelect, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1188+
UNIT_ASSERT(!resultSelect.IsSuccess());
1189+
}
1190+
1191+
bool allDoneOk = true;
1192+
NTestHelpers::CheckDelete(clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);
1193+
1194+
UNIT_ASSERT(allDoneOk);
1195+
}
1196+
1197+
{
1198+
const auto querySelect = Q_(R"(
1199+
--!syntax_v1
1200+
SELECT * FROM Temp;
1201+
)");
1202+
1203+
auto resultSelect = client.ExecuteQuery(
1204+
querySelect, NYdb::NQuery::TTxControl::BeginTx().CommitTx()).ExtractValueSync();
1205+
UNIT_ASSERT(!resultSelect.IsSuccess());
1206+
}
1207+
}
1208+
10461209
Y_UNIT_TEST(TempTablesDrop) {
10471210
NKikimrConfig::TAppConfig appConfig;
10481211
appConfig.MutableTableServiceConfig()->SetEnablePreparedDdl(true);

0 commit comments

Comments
 (0)