@@ -83,7 +83,7 @@ void FillCreateExternalDataSourceDesc(NKikimrSchemeOp::TExternalDataSourceDescri
83
83
}
84
84
}
85
85
86
- void FillCreateExternalDataSourceCommand (NKikimrSchemeOp::TModifyScheme& modifyScheme, const NYql::TObjectSettingsImpl & settings,
86
+ void FillCreateExternalDataSourceCommand (NKikimrSchemeOp::TModifyScheme& modifyScheme, const NYql::TCreateObjectSettings & settings,
87
87
TExternalDataSourceManager::TInternalModificationContext& context) {
88
88
CheckFeatureFlag (context);
89
89
@@ -97,12 +97,13 @@ void FillCreateExternalDataSourceCommand(NKikimrSchemeOp::TModifyScheme& modifyS
97
97
98
98
modifyScheme.SetWorkingDir (pathPair.first );
99
99
modifyScheme.SetOperationType (NKikimrSchemeOp::ESchemeOpCreateExternalDataSource);
100
+ modifyScheme.SetFailedOnAlreadyExists (!settings.GetExistingOk ());
100
101
101
102
NKikimrSchemeOp::TExternalDataSourceDescription& dataSourceDesc = *modifyScheme.MutableCreateExternalDataSource ();
102
103
FillCreateExternalDataSourceDesc (dataSourceDesc, pathPair.second , settings);
103
104
}
104
105
105
- void FillDropExternalDataSourceCommand (NKikimrSchemeOp::TModifyScheme& modifyScheme, const NYql::TObjectSettingsImpl & settings,
106
+ void FillDropExternalDataSourceCommand (NKikimrSchemeOp::TModifyScheme& modifyScheme, const NYql::TDropObjectSettings & settings,
106
107
TExternalDataSourceManager::TInternalModificationContext& context) {
107
108
CheckFeatureFlag (context);
108
109
@@ -116,15 +117,16 @@ void FillDropExternalDataSourceCommand(NKikimrSchemeOp::TModifyScheme& modifySch
116
117
117
118
modifyScheme.SetWorkingDir (pathPair.first );
118
119
modifyScheme.SetOperationType (NKikimrSchemeOp::ESchemeOpDropExternalDataSource);
120
+ modifyScheme.SetSuccessOnNotExist (settings.GetMissingOk ());
119
121
120
122
NKikimrSchemeOp::TDrop& drop = *modifyScheme.MutableDrop ();
121
123
drop.SetName (pathPair.second );
122
124
}
123
125
124
- NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> SendSchemeRequest (TEvTxUserProxy::TEvProposeTransaction* request, TActorSystem* actorSystem, bool failedOnAlreadyExists = false )
126
+ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> SendSchemeRequest (TEvTxUserProxy::TEvProposeTransaction* request, TActorSystem* actorSystem, bool failedOnAlreadyExists, bool successOnNotExist )
125
127
{
126
128
auto promiseScheme = NThreading::NewPromise<NKqp::TSchemeOpRequestHandler::TResult>();
127
- IActor* requestHandler = new TSchemeOpRequestHandler (request, promiseScheme, failedOnAlreadyExists);
129
+ IActor* requestHandler = new TSchemeOpRequestHandler (request, promiseScheme, failedOnAlreadyExists, successOnNotExist );
128
130
actorSystem->Register (requestHandler);
129
131
return promiseScheme.GetFuture ().Apply ([](const NThreading::TFuture<NKqp::TSchemeOpRequestHandler::TResult>& f) {
130
132
if (f.HasValue () && !f.HasException () && f.GetValue ().Success ()) {
@@ -159,7 +161,7 @@ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalD
159
161
}
160
162
}
161
163
162
- NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalDataSourceManager::CreateExternalDataSource (const NYql::TObjectSettingsImpl & settings,
164
+ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalDataSourceManager::CreateExternalDataSource (const NYql::TCreateObjectSettings & settings,
163
165
TInternalModificationContext& context) const {
164
166
using TRequest = TEvTxUserProxy::TEvProposeTransaction;
165
167
@@ -172,10 +174,10 @@ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalD
172
174
auto & schemeTx = *ev->Record .MutableTransaction ()->MutableModifyScheme ();
173
175
FillCreateExternalDataSourceCommand (schemeTx, settings, context);
174
176
175
- return SendSchemeRequest (ev.Release (), context.GetExternalData ().GetActorSystem (), true );
177
+ return SendSchemeRequest (ev.Release (), context.GetExternalData ().GetActorSystem (), schemeTx. GetFailedOnAlreadyExists (), schemeTx. GetSuccessOnNotExist () );
176
178
}
177
179
178
- NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalDataSourceManager::DropExternalDataSource (const NYql::TObjectSettingsImpl & settings,
180
+ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalDataSourceManager::DropExternalDataSource (const NYql::TDropObjectSettings & settings,
179
181
TInternalModificationContext& context) const {
180
182
using TRequest = TEvTxUserProxy::TEvProposeTransaction;
181
183
@@ -188,7 +190,7 @@ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalD
188
190
auto & schemeTx = *ev->Record .MutableTransaction ()->MutableModifyScheme ();
189
191
FillDropExternalDataSourceCommand (schemeTx, settings, context);
190
192
191
- return SendSchemeRequest (ev.Release (), context.GetExternalData ().GetActorSystem ());
193
+ return SendSchemeRequest (ev.Release (), context.GetExternalData ().GetActorSystem (), schemeTx. GetFailedOnAlreadyExists (), schemeTx. GetSuccessOnNotExist () );
192
194
}
193
195
194
196
TExternalDataSourceManager::TYqlConclusionStatus TExternalDataSourceManager::DoPrepare (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TObjectSettingsImpl& settings,
@@ -216,12 +218,12 @@ TExternalDataSourceManager::TYqlConclusionStatus TExternalDataSourceManager::DoP
216
218
}
217
219
}
218
220
219
- void TExternalDataSourceManager::PrepareCreateExternalDataSource (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TObjectSettingsImpl & settings,
221
+ void TExternalDataSourceManager::PrepareCreateExternalDataSource (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TCreateObjectSettings & settings,
220
222
TInternalModificationContext& context) const {
221
223
FillCreateExternalDataSourceCommand (*schemeOperation.MutableCreateExternalDataSource (), settings, context);
222
224
}
223
225
224
- void TExternalDataSourceManager::PrepareDropExternalDataSource (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TObjectSettingsImpl & settings,
226
+ void TExternalDataSourceManager::PrepareDropExternalDataSource (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TDropObjectSettings & settings,
225
227
TInternalModificationContext& context) const {
226
228
FillDropExternalDataSourceCommand (*schemeOperation.MutableDropExternalDataSource (), settings, context);
227
229
}
@@ -252,7 +254,7 @@ NThreading::TFuture<NMetadata::NModifications::IOperationsManager::TYqlConclusio
252
254
TStringBuilder () << " Execution of prepare operation for EXTERNAL_DATA_SOURCE object: unsupported operation: " << int (schemeOperation.GetOperationCase ())));
253
255
}
254
256
255
- return SendSchemeRequest (ev.Release (), context.GetActorSystem (), true );
257
+ return SendSchemeRequest (ev.Release (), context.GetActorSystem (), schemeTx. GetFailedOnAlreadyExists (), schemeTx. GetSuccessOnNotExist () );
256
258
}
257
259
258
260
}
0 commit comments