@@ -860,6 +860,137 @@ Y_UNIT_TEST_SUITE(KqpQueryService) {
860
860
UNIT_ASSERT_VALUES_EQUAL_C (result.GetStatus (), EStatus::SUCCESS, result.GetIssues ().ToString ());
861
861
}
862
862
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
+
863
994
Y_UNIT_TEST (DdlGroup) {
864
995
NKikimrConfig::TAppConfig appConfig;
865
996
appConfig.MutableTableServiceConfig ()->SetEnablePreparedDdl (true );
0 commit comments