@@ -76,7 +76,7 @@ class TKqpSchemeExecuter : public TActorBootstrapped<TKqpSchemeExecuter> {
76
76
TKqpSchemeExecuter (
77
77
TKqpPhyTxHolder::TConstPtr phyTx, NKikimrKqp::EQueryType queryType, const TActorId& target, const TMaybe<TString>& requestType,
78
78
const TString& database, TIntrusiveConstPtr<NACLib::TUserToken> userToken, const TString& clientAddress,
79
- bool temporary, bool isCreateTableAs, TString sessionId, TIntrusivePtr<TUserRequestContext> ctx,
79
+ bool temporary, bool createTmpDir, bool isCreateTableAs, TString sessionId, TIntrusivePtr<TUserRequestContext> ctx,
80
80
const TActorId& kqpTempTablesAgentActor)
81
81
: PhyTx(phyTx)
82
82
, QueryType(queryType)
@@ -85,6 +85,7 @@ class TKqpSchemeExecuter : public TActorBootstrapped<TKqpSchemeExecuter> {
85
85
, UserToken(userToken)
86
86
, ClientAddress(clientAddress)
87
87
, Temporary(temporary)
88
+ , CreateTmpDir(createTmpDir)
88
89
, IsCreateTableAs(isCreateTableAs)
89
90
, SessionId(sessionId)
90
91
, RequestContext(std::move(ctx))
@@ -153,6 +154,7 @@ class TKqpSchemeExecuter : public TActorBootstrapped<TKqpSchemeExecuter> {
153
154
modifyScheme->SetWorkingDir (GetSessionDirsBasePath (Database));
154
155
modifyScheme->SetOperationType (NKikimrSchemeOp::EOperationType::ESchemeOpMkDir);
155
156
modifyScheme->SetAllowCreateInTempDir (false );
157
+ modifyScheme->SetFailOnExist (true );
156
158
157
159
auto * makeDir = modifyScheme->MutableMkDir ();
158
160
makeDir->SetName (SessionId);
@@ -741,7 +743,8 @@ class TKqpSchemeExecuter : public TActorBootstrapped<TKqpSchemeExecuter> {
741
743
} else if (IsCreateTableAs && schemeOp.GetOperationCase () == NKqpProto::TKqpSchemeOperation::kAlterTable ) {
742
744
FindWorkingDirForCTAS ();
743
745
} else {
744
- if (Temporary) {
746
+ if (CreateTmpDir) {
747
+ AFL_ENSURE (Temporary);
745
748
CreateTmpDirectory ();
746
749
} else {
747
750
MakeSchemeOperationRequest ();
@@ -1097,6 +1100,7 @@ class TKqpSchemeExecuter : public TActorBootstrapped<TKqpSchemeExecuter> {
1097
1100
const TString ClientAddress;
1098
1101
std::unique_ptr<TEvKqpExecuter::TEvTxResponse> ResponseEv;
1099
1102
bool Temporary;
1103
+ bool CreateTmpDir;
1100
1104
bool IsCreateTableAs;
1101
1105
TString SessionId;
1102
1106
ui64 TxId = 0 ;
@@ -1113,12 +1117,12 @@ IActor* CreateKqpSchemeExecuter(
1113
1117
TKqpPhyTxHolder::TConstPtr phyTx, NKikimrKqp::EQueryType queryType, const TActorId& target,
1114
1118
const TMaybe<TString>& requestType, const TString& database,
1115
1119
TIntrusiveConstPtr<NACLib::TUserToken> userToken, const TString& clientAddress,
1116
- bool temporary, bool isCreateTableAs,
1120
+ bool temporary, bool createTmpDir, bool isCreateTableAs,
1117
1121
TString sessionId, TIntrusivePtr<TUserRequestContext> ctx, const TActorId& kqpTempTablesAgentActor)
1118
1122
{
1119
1123
return new TKqpSchemeExecuter (
1120
1124
phyTx, queryType, target, requestType, database, userToken, clientAddress,
1121
- temporary, isCreateTableAs, sessionId, std::move (ctx), kqpTempTablesAgentActor);
1125
+ temporary, createTmpDir, isCreateTableAs, sessionId, std::move (ctx), kqpTempTablesAgentActor);
1122
1126
}
1123
1127
1124
1128
} // namespace NKikimr::NKqp
0 commit comments