@@ -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