@@ -860,6 +860,137 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
860860 UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
861861 }
862862
863+ Y_UNIT_TEST (CreateTempTable) {
864+ NKikimrConfig::TAppConfig appConfig;
865+ appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
866+ auto setting = NKikimrKqp::TKqpSetting ();
867+ auto serverSettings = TKikimrSettings ()
868+ .SetAppConfig (appConfig)
869+ .SetKqpSettings ({setting});
870+ TKikimrRunner kikimr (
871+ serverSettings.SetWithSampleTables (false ).SetEnableTempTables (true ));
872+ auto clientConfig = NGRpcProxy::TGRpcClientConfig (kikimr.GetEndpoint ());
873+ auto client = kikimr.GetQueryClient ();
874+ {
875+ auto session = client.GetSession ().GetValueSync ().GetSession ();
876+ auto id = session.GetId ();
877+
878+ const auto queryCreate = Q_ (R"(
879+ --!syntax_v1
880+ CREATE TEMP TABLE Temp (
881+ Key Uint64 NOT NULL,
882+ Value String,
883+ PRIMARY KEY (Key)
884+ );)" );
885+
886+ auto resultCreate = session.ExecuteQuery (queryCreate, NYdb::NQuery::TTxControl::NoTx ()).ExtractValueSync ();
887+ UNIT_ASSERT_C (resultCreate.IsSuccess (), resultCreate.GetIssues ().ToString ());
888+
889+ const auto querySelect = Q_ (R"(
890+ --!syntax_v1
891+ SELECT * FROM Temp;
892+ )" );
893+
894+ auto resultSelect = session.ExecuteQuery (
895+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
896+ UNIT_ASSERT_C (resultSelect.IsSuccess (), resultSelect.GetIssues ().ToString ());
897+
898+ bool allDoneOk = true ;
899+ NTestHelpers::CheckDelete (clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);
900+
901+ UNIT_ASSERT (allDoneOk);
902+ }
903+
904+ {
905+ const auto querySelect = Q_ (R"(
906+ --!syntax_v1
907+ SELECT * FROM Temp;
908+ )" );
909+
910+ auto resultSelect = client.ExecuteQuery (
911+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
912+ UNIT_ASSERT (!resultSelect.IsSuccess ());
913+ }
914+ }
915+
916+ Y_UNIT_TEST (TempTablesDrop) {
917+ NKikimrConfig::TAppConfig appConfig;
918+ appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
919+ auto setting = NKikimrKqp::TKqpSetting ();
920+ auto serverSettings = TKikimrSettings ()
921+ .SetAppConfig (appConfig)
922+ .SetKqpSettings ({setting});
923+ TKikimrRunner kikimr (
924+ serverSettings.SetWithSampleTables (false ).SetEnableTempTables (true ));
925+ auto clientConfig = NGRpcProxy::TGRpcClientConfig (kikimr.GetEndpoint ());
926+ auto client = kikimr.GetQueryClient ();
927+
928+ auto session = client.GetSession ().GetValueSync ().GetSession ();
929+ auto id = session.GetId ();
930+
931+ const auto queryCreate = Q_ (R"(
932+ --!syntax_v1
933+ CREATE TEMPORARY TABLE Temp (
934+ Key Uint64 NOT NULL,
935+ Value String,
936+ PRIMARY KEY (Key)
937+ );)" );
938+
939+ auto resultCreate = session.ExecuteQuery (queryCreate, NYdb::NQuery::TTxControl::NoTx ()).ExtractValueSync ();
940+ UNIT_ASSERT_C (resultCreate.IsSuccess (), resultCreate.GetIssues ().ToString ());
941+
942+ {
943+ const auto querySelect = Q_ (R"(
944+ --!syntax_v1
945+ SELECT * FROM Temp;
946+ )" );
947+
948+ auto resultSelect = session.ExecuteQuery (
949+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
950+ UNIT_ASSERT_C (resultSelect.IsSuccess (), resultSelect.GetIssues ().ToString ());
951+ }
952+
953+ const auto queryDrop = Q_ (R"(
954+ --!syntax_v1
955+ DROP TABLE Temp;
956+ )" );
957+
958+ auto resultDrop = session.ExecuteQuery (
959+ queryDrop, NYdb::NQuery::TTxControl::NoTx ()).ExtractValueSync ();
960+ UNIT_ASSERT_C (resultDrop.IsSuccess (), resultDrop.GetIssues ().ToString ());
961+
962+ {
963+ const auto querySelect = Q_ (R"(
964+ --!syntax_v1
965+ SELECT * FROM Temp;
966+ )" );
967+
968+ auto resultSelect = session.ExecuteQuery (
969+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
970+ UNIT_ASSERT (!resultSelect.IsSuccess ());
971+ }
972+
973+ bool allDoneOk = true ;
974+ NTestHelpers::CheckDelete (clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);
975+
976+ UNIT_ASSERT (allDoneOk);
977+
978+ auto sessionAnother = client.GetSession ().GetValueSync ().GetSession ();
979+ auto idAnother = sessionAnother.GetId ();
980+ UNIT_ASSERT (id != idAnother);
981+
982+ {
983+ const auto querySelect = Q_ (R"(
984+ --!syntax_v1
985+ SELECT * FROM Temp;
986+ )" );
987+
988+ auto resultSelect = sessionAnother.ExecuteQuery (
989+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
990+ UNIT_ASSERT (!resultSelect.IsSuccess ());
991+ }
992+ }
993+
863994 Y_UNIT_TEST (DdlGroup) {
864995 NKikimrConfig::TAppConfig appConfig;
865996 appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
0 commit comments