@@ -718,6 +718,137 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
718718 UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
719719 }
720720
721+ Y_UNIT_TEST (CreateTempTable) {
722+ NKikimrConfig::TAppConfig appConfig;
723+ appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
724+ auto setting = NKikimrKqp::TKqpSetting ();
725+ auto serverSettings = TKikimrSettings ()
726+ .SetAppConfig (appConfig)
727+ .SetKqpSettings ({setting});
728+ TKikimrRunner kikimr (
729+ serverSettings.SetWithSampleTables (false ).SetEnableTempTables (true ));
730+ auto clientConfig = NGRpcProxy::TGRpcClientConfig (kikimr.GetEndpoint ());
731+ auto client = kikimr.GetQueryClient ();
732+ {
733+ auto session = client.GetSession ().GetValueSync ().GetSession ();
734+ auto id = session.GetId ();
735+
736+ const auto queryCreate = Q_ (R"(
737+ --!syntax_v1
738+ CREATE TEMP TABLE Temp (
739+ Key Uint64 NOT NULL,
740+ Value String,
741+ PRIMARY KEY (Key)
742+ );)" );
743+
744+ auto resultCreate = session.ExecuteQuery (queryCreate, NYdb::NQuery::TTxControl::NoTx ()).ExtractValueSync ();
745+ UNIT_ASSERT_C (resultCreate.IsSuccess (), resultCreate.GetIssues ().ToString ());
746+
747+ const auto querySelect = Q_ (R"(
748+ --!syntax_v1
749+ SELECT * FROM Temp;
750+ )" );
751+
752+ auto resultSelect = session.ExecuteQuery (
753+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
754+ UNIT_ASSERT_C (resultSelect.IsSuccess (), resultSelect.GetIssues ().ToString ());
755+
756+ bool allDoneOk = true ;
757+ NTestHelpers::CheckDelete (clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);
758+
759+ UNIT_ASSERT (allDoneOk);
760+ }
761+
762+ {
763+ const auto querySelect = Q_ (R"(
764+ --!syntax_v1
765+ SELECT * FROM Temp;
766+ )" );
767+
768+ auto resultSelect = client.ExecuteQuery (
769+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
770+ UNIT_ASSERT (!resultSelect.IsSuccess ());
771+ }
772+ }
773+
774+ Y_UNIT_TEST (TempTablesDrop) {
775+ NKikimrConfig::TAppConfig appConfig;
776+ appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
777+ auto setting = NKikimrKqp::TKqpSetting ();
778+ auto serverSettings = TKikimrSettings ()
779+ .SetAppConfig (appConfig)
780+ .SetKqpSettings ({setting});
781+ TKikimrRunner kikimr (
782+ serverSettings.SetWithSampleTables (false ).SetEnableTempTables (true ));
783+ auto clientConfig = NGRpcProxy::TGRpcClientConfig (kikimr.GetEndpoint ());
784+ auto client = kikimr.GetQueryClient ();
785+
786+ auto session = client.GetSession ().GetValueSync ().GetSession ();
787+ auto id = session.GetId ();
788+
789+ const auto queryCreate = Q_ (R"(
790+ --!syntax_v1
791+ CREATE TEMPORARY TABLE Temp (
792+ Key Uint64 NOT NULL,
793+ Value String,
794+ PRIMARY KEY (Key)
795+ );)" );
796+
797+ auto resultCreate = session.ExecuteQuery (queryCreate, NYdb::NQuery::TTxControl::NoTx ()).ExtractValueSync ();
798+ UNIT_ASSERT_C (resultCreate.IsSuccess (), resultCreate.GetIssues ().ToString ());
799+
800+ {
801+ const auto querySelect = Q_ (R"(
802+ --!syntax_v1
803+ SELECT * FROM Temp;
804+ )" );
805+
806+ auto resultSelect = session.ExecuteQuery (
807+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
808+ UNIT_ASSERT_C (resultSelect.IsSuccess (), resultSelect.GetIssues ().ToString ());
809+ }
810+
811+ const auto queryDrop = Q_ (R"(
812+ --!syntax_v1
813+ DROP TABLE Temp;
814+ )" );
815+
816+ auto resultDrop = session.ExecuteQuery (
817+ queryDrop, NYdb::NQuery::TTxControl::NoTx ()).ExtractValueSync ();
818+ UNIT_ASSERT_C (resultDrop.IsSuccess (), resultDrop.GetIssues ().ToString ());
819+
820+ {
821+ const auto querySelect = Q_ (R"(
822+ --!syntax_v1
823+ SELECT * FROM Temp;
824+ )" );
825+
826+ auto resultSelect = session.ExecuteQuery (
827+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
828+ UNIT_ASSERT (!resultSelect.IsSuccess ());
829+ }
830+
831+ bool allDoneOk = true ;
832+ NTestHelpers::CheckDelete (clientConfig, id, Ydb::StatusIds::SUCCESS, allDoneOk);
833+
834+ UNIT_ASSERT (allDoneOk);
835+
836+ auto sessionAnother = client.GetSession ().GetValueSync ().GetSession ();
837+ auto idAnother = sessionAnother.GetId ();
838+ UNIT_ASSERT (id != idAnother);
839+
840+ {
841+ const auto querySelect = Q_ (R"(
842+ --!syntax_v1
843+ SELECT * FROM Temp;
844+ )" );
845+
846+ auto resultSelect = sessionAnother.ExecuteQuery (
847+ querySelect, NYdb::NQuery::TTxControl::BeginTx ().CommitTx ()).ExtractValueSync ();
848+ UNIT_ASSERT (!resultSelect.IsSuccess ());
849+ }
850+ }
851+
721852 Y_UNIT_TEST (DdlGroup) {
722853 NKikimrConfig::TAppConfig appConfig;
723854 appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
0 commit comments