Skip to content

Commit d2f4cf6

Browse files
committed
Additional patch for #7269 (PR #8170):
- move more duplicated code into activateIndex, - cache request that modifies RDB$INDICES.RDB$INDEX_INACTIVE.
1 parent 178d83a commit d2f4cf6

File tree

2 files changed

+14
-28
lines changed

2 files changed

+14
-28
lines changed

src/burp/burp.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1154,6 +1154,7 @@ class BurpGlobals : public Firebird::ThreadData, public GblPool
11541154
Firebird::IRequest* handles_get_type_req_handle1;
11551155
Firebird::IRequest* handles_get_user_privilege_req_handle1;
11561156
Firebird::IRequest* handles_get_view_req_handle1;
1157+
Firebird::IRequest* handles_activateIndex_req_handle1;
11571158

11581159
// The handles_put.. are for backup.
11591160
Firebird::IRequest* handles_put_index_req_handle1;

src/burp/restore.epp

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -275,15 +275,18 @@ static inline void collect_missing_privs(BurpGlobals* tdgbl, USHORT type, const
275275

276276
} // namespace
277277

278-
bool activateIndex(BurpGlobals* tdgbl, const char* index_name, FbLocalStatus& local_status_vector)
278+
void activateIndex(BurpGlobals* tdgbl, const char* index_name)
279279
{
280+
BURP_verbose(285, index_name);
281+
// activating and creating deferred index %s
282+
280283
bool fError = false;
284+
FbLocalStatus local_status_vector;
281285

282-
Firebird::IRequest* req_handle = nullptr;
283-
Firebird::ITransaction* activateIndexTran = nullptr;
286+
ITransaction* activateIndexTran = nullptr;
284287
START_TRANSACTION activateIndexTran;
285288

286-
FOR (TRANSACTION_HANDLE activateIndexTran REQUEST_HANDLE req_handle)
289+
FOR (TRANSACTION_HANDLE activateIndexTran REQUEST_HANDLE tdgbl->handles_activateIndex_req_handle1)
287290
IND1 IN RDB$INDICES WITH IND1.RDB$INDEX_NAME EQ index_name
288291
MODIFY IND1 USING
289292
IND1.RDB$INDEX_INACTIVE = FALSE;
@@ -295,8 +298,6 @@ bool activateIndex(BurpGlobals* tdgbl, const char* index_name, FbLocalStatus& lo
295298
fb_utils::copyStatus(&local_status_vector, isc_status);
296299
END_ERROR;
297300

298-
MISC_release_request_silent(req_handle);
299-
300301
if (!fError)
301302
{
302303
COMMIT activateIndexTran;
@@ -308,14 +309,15 @@ bool activateIndex(BurpGlobals* tdgbl, const char* index_name, FbLocalStatus& lo
308309

309310
if (fError)
310311
{
312+
BURP_print(false, 173, index_name);
313+
BURP_print_status(false, &local_status_vector);
314+
tdgbl->flag_on_line = false;
315+
311316
ROLLBACK activateIndexTran;
312317
ON_ERROR
313318
general_on_error();
314319
END_ERROR;
315-
return false;
316320
}
317-
318-
return true;
319321
}
320322

321323
int RESTORE_restore (const TEXT* file_name, const TEXT* database_name)
@@ -431,17 +433,8 @@ int RESTORE_restore (const TEXT* file_name, const TEXT* database_name)
431433
MISC_terminate(IDS.RDB$INDEX_NAME, index_name,
432434
(ULONG)MISC_symbol_length(IDS.RDB$INDEX_NAME, sizeof(IDS.RDB$INDEX_NAME)),
433435
sizeof(index_name));
434-
BURP_verbose(285, index_name);
435-
// activating and creating deferred index %s
436436

437-
FbLocalStatus local_status_vector;
438-
439-
if (!activateIndex(tdgbl, index_name, local_status_vector))
440-
{
441-
BURP_print(false, 173, index_name);
442-
BURP_print_status(false, &local_status_vector);
443-
tdgbl->flag_on_line = false;
444-
}
437+
activateIndex(tdgbl, index_name);
445438
END_FOR;
446439
ON_ERROR
447440
general_on_error ();
@@ -475,16 +468,8 @@ int RESTORE_restore (const TEXT* file_name, const TEXT* database_name)
475468
MISC_terminate(IDS.RDB$INDEX_NAME, index_name,
476469
(ULONG) MISC_symbol_length(IDS.RDB$INDEX_NAME, sizeof(IDS.RDB$INDEX_NAME)),
477470
sizeof(index_name));
478-
BURP_verbose(285, index_name);
479-
// activating and creating deferred index %s
480-
FbLocalStatus local_status_vector;
481471

482-
if (!activateIndex(tdgbl, index_name, local_status_vector))
483-
{
484-
BURP_print(false, 173, index_name);
485-
BURP_print_status(false, &local_status_vector);
486-
tdgbl->flag_on_line = false;
487-
}
472+
activateIndex(tdgbl, index_name);
488473
END_FOR;
489474
ON_ERROR
490475
general_on_error ();

0 commit comments

Comments
 (0)