@@ -83,7 +83,7 @@ void FillCreateExternalDataSourceDesc(NKikimrSchemeOp::TExternalDataSourceDescri
8383 }
8484}
8585
86- void FillCreateExternalDataSourceCommand (NKikimrSchemeOp::TModifyScheme& modifyScheme, const NYql::TObjectSettingsImpl & settings,
86+ void FillCreateExternalDataSourceCommand (NKikimrSchemeOp::TModifyScheme& modifyScheme, const NYql::TCreateObjectSettings & settings,
8787 TExternalDataSourceManager::TInternalModificationContext& context) {
8888 CheckFeatureFlag (context);
8989
@@ -97,12 +97,13 @@ void FillCreateExternalDataSourceCommand(NKikimrSchemeOp::TModifyScheme& modifyS
9797
9898 modifyScheme.SetWorkingDir (pathPair.first );
9999 modifyScheme.SetOperationType (NKikimrSchemeOp::ESchemeOpCreateExternalDataSource);
100+ modifyScheme.SetFailedOnAlreadyExists (!settings.GetExistingOk ());
100101
101102 NKikimrSchemeOp::TExternalDataSourceDescription& dataSourceDesc = *modifyScheme.MutableCreateExternalDataSource ();
102103 FillCreateExternalDataSourceDesc (dataSourceDesc, pathPair.second , settings);
103104}
104105
105- void FillDropExternalDataSourceCommand (NKikimrSchemeOp::TModifyScheme& modifyScheme, const NYql::TObjectSettingsImpl & settings,
106+ void FillDropExternalDataSourceCommand (NKikimrSchemeOp::TModifyScheme& modifyScheme, const NYql::TDropObjectSettings & settings,
106107 TExternalDataSourceManager::TInternalModificationContext& context) {
107108 CheckFeatureFlag (context);
108109
@@ -116,15 +117,16 @@ void FillDropExternalDataSourceCommand(NKikimrSchemeOp::TModifyScheme& modifySch
116117
117118 modifyScheme.SetWorkingDir (pathPair.first );
118119 modifyScheme.SetOperationType (NKikimrSchemeOp::ESchemeOpDropExternalDataSource);
120+ modifyScheme.SetSuccessOnNotExist (settings.GetMissingOk ());
119121
120122 NKikimrSchemeOp::TDrop& drop = *modifyScheme.MutableDrop ();
121123 drop.SetName (pathPair.second );
122124}
123125
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 )
125127{
126128 auto promiseScheme = NThreading::NewPromise<NKqp::TSchemeOpRequestHandler::TResult>();
127- IActor* requestHandler = new TSchemeOpRequestHandler (request, promiseScheme, failedOnAlreadyExists);
129+ IActor* requestHandler = new TSchemeOpRequestHandler (request, promiseScheme, failedOnAlreadyExists, successOnNotExist );
128130 actorSystem->Register (requestHandler);
129131 return promiseScheme.GetFuture ().Apply ([](const NThreading::TFuture<NKqp::TSchemeOpRequestHandler::TResult>& f) {
130132 if (f.HasValue () && !f.HasException () && f.GetValue ().Success ()) {
@@ -159,7 +161,7 @@ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalD
159161 }
160162}
161163
162- NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalDataSourceManager::CreateExternalDataSource (const NYql::TObjectSettingsImpl & settings,
164+ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalDataSourceManager::CreateExternalDataSource (const NYql::TCreateObjectSettings & settings,
163165 TInternalModificationContext& context) const {
164166 using TRequest = TEvTxUserProxy::TEvProposeTransaction;
165167
@@ -172,10 +174,10 @@ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalD
172174 auto & schemeTx = *ev->Record .MutableTransaction ()->MutableModifyScheme ();
173175 FillCreateExternalDataSourceCommand (schemeTx, settings, context);
174176
175- return SendSchemeRequest (ev.Release (), context.GetExternalData ().GetActorSystem (), true );
177+ return SendSchemeRequest (ev.Release (), context.GetExternalData ().GetActorSystem (), schemeTx. GetFailedOnAlreadyExists (), schemeTx. GetSuccessOnNotExist () );
176178}
177179
178- NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalDataSourceManager::DropExternalDataSource (const NYql::TObjectSettingsImpl & settings,
180+ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalDataSourceManager::DropExternalDataSource (const NYql::TDropObjectSettings & settings,
179181 TInternalModificationContext& context) const {
180182 using TRequest = TEvTxUserProxy::TEvProposeTransaction;
181183
@@ -188,7 +190,7 @@ NThreading::TFuture<TExternalDataSourceManager::TYqlConclusionStatus> TExternalD
188190 auto & schemeTx = *ev->Record .MutableTransaction ()->MutableModifyScheme ();
189191 FillDropExternalDataSourceCommand (schemeTx, settings, context);
190192
191- return SendSchemeRequest (ev.Release (), context.GetExternalData ().GetActorSystem ());
193+ return SendSchemeRequest (ev.Release (), context.GetExternalData ().GetActorSystem (), schemeTx. GetFailedOnAlreadyExists (), schemeTx. GetSuccessOnNotExist () );
192194}
193195
194196TExternalDataSourceManager::TYqlConclusionStatus TExternalDataSourceManager::DoPrepare (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TObjectSettingsImpl& settings,
@@ -216,12 +218,12 @@ TExternalDataSourceManager::TYqlConclusionStatus TExternalDataSourceManager::DoP
216218 }
217219}
218220
219- void TExternalDataSourceManager::PrepareCreateExternalDataSource (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TObjectSettingsImpl & settings,
221+ void TExternalDataSourceManager::PrepareCreateExternalDataSource (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TCreateObjectSettings & settings,
220222 TInternalModificationContext& context) const {
221223 FillCreateExternalDataSourceCommand (*schemeOperation.MutableCreateExternalDataSource (), settings, context);
222224}
223225
224- void TExternalDataSourceManager::PrepareDropExternalDataSource (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TObjectSettingsImpl & settings,
226+ void TExternalDataSourceManager::PrepareDropExternalDataSource (NKqpProto::TKqpSchemeOperation& schemeOperation, const NYql::TDropObjectSettings & settings,
225227 TInternalModificationContext& context) const {
226228 FillDropExternalDataSourceCommand (*schemeOperation.MutableDropExternalDataSource (), settings, context);
227229}
@@ -252,7 +254,7 @@ NThreading::TFuture<NMetadata::NModifications::IOperationsManager::TYqlConclusio
252254 TStringBuilder () << " Execution of prepare operation for EXTERNAL_DATA_SOURCE object: unsupported operation: " << int (schemeOperation.GetOperationCase ())));
253255 }
254256
255- return SendSchemeRequest (ev.Release (), context.GetActorSystem (), true );
257+ return SendSchemeRequest (ev.Release (), context.GetActorSystem (), schemeTx. GetFailedOnAlreadyExists (), schemeTx. GetSuccessOnNotExist () );
256258}
257259
258260}
0 commit comments