Skip to content

Commit ab50e20

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 6c1a95f commit ab50e20

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
@@ -274,15 +274,18 @@ static inline void collect_missing_privs(BurpGlobals* tdgbl, USHORT type, const
274274

275275
} // namespace
276276

277-
bool activateIndex(BurpGlobals* tdgbl, const char* index_name, FbLocalStatus& local_status_vector)
277+
void activateIndex(BurpGlobals* tdgbl, const char* index_name)
278278
{
279+
BURP_verbose(285, index_name);
280+
// activating and creating deferred index %s
281+
279282
bool fError = false;
283+
FbLocalStatus local_status_vector;
280284

281-
Firebird::IRequest* req_handle = nullptr;
282-
Firebird::ITransaction* activateIndexTran = nullptr;
285+
ITransaction* activateIndexTran = nullptr;
283286
START_TRANSACTION activateIndexTran;
284287

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

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

308309
if (fError)
309310
{
311+
BURP_print(false, 173, index_name);
312+
BURP_print_status(false, &local_status_vector);
313+
tdgbl->flag_on_line = false;
314+
310315
ROLLBACK activateIndexTran;
311316
ON_ERROR
312317
general_on_error();
313318
END_ERROR;
314-
return false;
315319
}
316-
317-
return true;
318320
}
319321

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

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

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

0 commit comments

Comments
 (0)