@@ -1043,6 +1043,169 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
1043
1043
}
1044
1044
}
1045
1045
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
+
1046
1209
Y_UNIT_TEST (TempTablesDrop) {
1047
1210
NKikimrConfig::TAppConfig appConfig;
1048
1211
appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
0 commit comments