Skip to content

Commit 8e4f5f8

Browse files
committed
const/constexpr in tra
1 parent ed095ab commit 8e4f5f8

File tree

3 files changed

+57
-61
lines changed

3 files changed

+57
-61
lines changed

src/jrd/tra.cpp

Lines changed: 46 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
#include "firebird/impl/msg_helper.h"
8080

8181

82-
const int DYN_MSG_FAC = 8;
82+
constexpr int DYN_MSG_FAC = FB_IMPL_MSG_FACILITY_DYN;
8383

8484
using namespace Jrd;
8585
using namespace Ods;
@@ -97,7 +97,7 @@ static void retain_context(thread_db* tdbb, jrd_tra* transaction, bool commit, i
9797
static void expand_view_lock(thread_db* tdbb, jrd_tra*, jrd_rel*, UCHAR lock_type,
9898
const char* option_name, RelationLockTypeMap& lockmap, const int level);
9999
static tx_inv_page* fetch_inventory_page(thread_db*, WIN* window, ULONG sequence, USHORT lock_level);
100-
static const char* get_lockname_v3(const UCHAR lock);
100+
static constexpr const char* get_lockname_v3(const UCHAR lock) noexcept;
101101
static ULONG inventory_page(thread_db*, ULONG);
102102
static int limbo_transaction(thread_db*, TraNumber id);
103103
static void release_temp_tables(thread_db*, jrd_tra*);
@@ -109,7 +109,7 @@ static void transaction_flush(thread_db* tdbb, USHORT flush_flag, TraNumber tra_
109109
static void transaction_options(thread_db*, jrd_tra*, const UCHAR*, USHORT);
110110
static void transaction_start(thread_db* tdbb, jrd_tra* temp);
111111

112-
static const UCHAR sweep_tpb[] =
112+
static constexpr UCHAR sweep_tpb[] =
113113
{
114114
isc_tpb_version1, isc_tpb_read,
115115
isc_tpb_read_committed, isc_tpb_rec_version
@@ -149,7 +149,7 @@ void TRA_setup_request_snapshot(Jrd::thread_db* tdbb, Jrd::Request* request)
149149
// This function is called whenever request is started in a transaction.
150150
// Setup context to preserve read consistency in READ COMMITTED transactions.
151151

152-
Jrd::jrd_tra* transaction = request->req_transaction;
152+
const Jrd::jrd_tra* transaction = request->req_transaction;
153153

154154
// We assume that request is already attached to a transaction
155155
fb_assert(transaction);
@@ -448,7 +448,7 @@ void TRA_commit(thread_db* tdbb, jrd_tra* transaction, const bool retaining_flag
448448

449449
EDS::Transaction::jrdTransactionEnd(tdbb, transaction, true, retaining_flag, false);
450450

451-
jrd_tra* const sysTran = tdbb->getAttachment()->getSysTransaction();
451+
const jrd_tra* const sysTran = tdbb->getAttachment()->getSysTransaction();
452452

453453
// If this is a commit retaining, and no updates have been performed,
454454
// and no events have been posted (via stored procedures etc)
@@ -626,7 +626,7 @@ int TRA_fetch_state(thread_db* tdbb, TraNumber number)
626626
*
627627
**************************************/
628628
SET_TDBB(tdbb);
629-
Database* dbb = tdbb->getDatabase();
629+
const Database* dbb = tdbb->getDatabase();
630630
CHECK_DBB(dbb);
631631

632632
// locate and fetch the proper TIP page
@@ -665,7 +665,7 @@ void TRA_get_inventory(thread_db* tdbb, UCHAR* bit_vector, TraNumber base, TraNu
665665
*
666666
**************************************/
667667
SET_TDBB(tdbb);
668-
Database* dbb = tdbb->getDatabase();
668+
const Database* dbb = tdbb->getDatabase();
669669
CHECK_DBB(dbb);
670670

671671
// It does not make sence to call this function without bit_vector now
@@ -1002,7 +1002,7 @@ void TRA_post_resources(thread_db* tdbb, jrd_tra* transaction, ResourceList& res
10021002
case Resource::rsc_collation:
10031003
rsc->rsc_coll->incUseCount(tdbb);
10041004
break;
1005-
default: // shut up compiler warning
1005+
default:
10061006
break;
10071007
}
10081008
}
@@ -1030,7 +1030,7 @@ bool TRA_is_active(thread_db* tdbb, TraNumber number)
10301030
*
10311031
**************************************/
10321032
SET_TDBB(tdbb);
1033-
Database* dbb = tdbb->getDatabase();
1033+
const Database* dbb = tdbb->getDatabase();
10341034
CHECK_DBB(dbb);
10351035

10361036
Lock temp_lock(tdbb, sizeof(TraNumber), LCK_tra);
@@ -1107,7 +1107,7 @@ void TRA_prepare(thread_db* tdbb, jrd_tra* transaction, USHORT length, const UCH
11071107
DFW_perform_work(tdbb, transaction);
11081108

11091109
// Flush pages if transaction logically modified data
1110-
jrd_tra* sysTran = tdbb->getAttachment()->getSysTransaction();
1110+
const jrd_tra* sysTran = tdbb->getAttachment()->getSysTransaction();
11111111

11121112
if (transaction->tra_flags & TRA_write)
11131113
transaction_flush(tdbb, FLUSH_TRAN, transaction->tra_number);
@@ -1142,7 +1142,7 @@ jrd_tra* TRA_reconnect(thread_db* tdbb, const UCHAR* id, USHORT length)
11421142
*
11431143
**************************************/
11441144
SET_TDBB(tdbb);
1145-
Database* const dbb = tdbb->getDatabase();
1145+
const Database* const dbb = tdbb->getDatabase();
11461146
CHECK_DBB(dbb);
11471147
Jrd::Attachment* const attachment = tdbb->getAttachment();
11481148

@@ -1242,7 +1242,7 @@ void TRA_release_transaction(thread_db* tdbb, jrd_tra* transaction, Jrd::TraceTr
12421242
}
12431243
else
12441244
{
1245-
ULONG temp_id = current->bli_temp_id;
1245+
const ULONG temp_id = current->bli_temp_id;
12461246
current->bli_blob_object->BLB_cancel(tdbb);
12471247
if (!transaction->tra_blobs->locate(Firebird::locGreat, temp_id))
12481248
break;
@@ -1466,7 +1466,7 @@ void TRA_rollback(thread_db* tdbb, jrd_tra* transaction, const bool retaining_fl
14661466
state = tra_committed;
14671467
}
14681468

1469-
jrd_tra* const sysTran = tdbb->getAttachment()->getSysTransaction();
1469+
const jrd_tra* const sysTran = tdbb->getAttachment()->getSysTransaction();
14701470
if (sysTran->tra_flags & TRA_write)
14711471
transaction_flush(tdbb, FLUSH_SYSTEM, 0);
14721472

@@ -1499,7 +1499,7 @@ void TRA_set_state(thread_db* tdbb, jrd_tra* transaction, TraNumber number, int
14991499
*
15001500
**************************************/
15011501
SET_TDBB(tdbb);
1502-
Database* dbb = tdbb->getDatabase();
1502+
const Database* dbb = tdbb->getDatabase();
15031503
CHECK_DBB(dbb);
15041504

15051505
// If it is a ReadOnly DB, set the new state in the TIP cache and return
@@ -1662,12 +1662,12 @@ int TRA_snapshot_state(thread_db* tdbb, const jrd_tra* trans, TraNumber number,
16621662
if ((trans->tra_flags & TRA_read_consistency) && state == tra_committed)
16631663
{
16641664
// GC thread accesses data directly without any request
1665-
if (Request* current_request = tdbb->getRequest())
1665+
if (const Request* current_request = tdbb->getRequest())
16661666
{
16671667
// Notes:
16681668
// 1) There is no request snapshot when we build expression index
16691669
// 2) Disable read committed snapshot after we encountered update conflict
1670-
Request* snapshot_request = current_request->req_snapshot.m_owner;
1670+
const Request* snapshot_request = current_request->req_snapshot.m_owner;
16711671
if (snapshot_request && !(snapshot_request->req_flags & req_update_conflict))
16721672
{
16731673
if (stateCn > snapshot_request->req_snapshot.m_number)
@@ -1708,7 +1708,7 @@ jrd_tra* TRA_start(thread_db* tdbb, ULONG flags, SSHORT lock_timeout, Jrd::jrd_t
17081708
*
17091709
**************************************/
17101710
SET_TDBB(tdbb);
1711-
Database* const dbb = tdbb->getDatabase();
1711+
const Database* const dbb = tdbb->getDatabase();
17121712
Jrd::Attachment* const attachment = tdbb->getAttachment();
17131713

17141714
// Starting new transactions should be allowed for threads which
@@ -1765,7 +1765,7 @@ jrd_tra* TRA_start(thread_db* tdbb, int tpb_length, const UCHAR* tpb, Jrd::jrd_t
17651765
*
17661766
**************************************/
17671767
SET_TDBB(tdbb);
1768-
Database* dbb = tdbb->getDatabase();
1768+
const Database* dbb = tdbb->getDatabase();
17691769
Jrd::Attachment* attachment = tdbb->getAttachment();
17701770

17711771
// Starting new transactions should be allowed for threads which
@@ -1807,7 +1807,7 @@ jrd_tra* TRA_start(thread_db* tdbb, int tpb_length, const UCHAR* tpb, Jrd::jrd_t
18071807
}
18081808

18091809

1810-
int TRA_state(const UCHAR* bit_vector, TraNumber oldest, TraNumber number)
1810+
int TRA_state(const UCHAR* bit_vector, TraNumber oldest, TraNumber number) noexcept
18111811
{
18121812
/**************************************
18131813
*
@@ -1984,7 +1984,7 @@ int TRA_wait(thread_db* tdbb, jrd_tra* trans, TraNumber number, jrd_tra::wait_t
19841984
*
19851985
**************************************/
19861986
SET_TDBB(tdbb);
1987-
Database* dbb = tdbb->getDatabase();
1987+
const Database* dbb = tdbb->getDatabase();
19881988
CHECK_DBB(dbb);
19891989

19901990
// Create, wait on, and release lock on target transaction. If
@@ -2320,7 +2320,7 @@ static tx_inv_page* fetch_inventory_page(thread_db* tdbb,
23202320
}
23212321

23222322

2323-
static const char* get_lockname_v3(const UCHAR lock)
2323+
static constexpr const char* get_lockname_v3(const UCHAR lock) noexcept
23242324
{
23252325
/**************************************
23262326
*
@@ -2333,24 +2333,20 @@ static const char* get_lockname_v3(const UCHAR lock)
23332333
* This is for TPB versions 1 & 3.
23342334
*
23352335
**************************************/
2336-
const char* typestr = "unknown";
23372336
switch (lock)
23382337
{
23392338
case LCK_none:
23402339
case LCK_SR:
2341-
typestr = "isc_tpb_lock_read, isc_tpb_shared";
2342-
break;
2340+
return "isc_tpb_lock_read, isc_tpb_shared";
23432341
case LCK_PR:
2344-
typestr = "isc_tpb_lock_read, isc_tpb_protected/isc_tpb_exclusive";
2345-
break;
2342+
return "isc_tpb_lock_read, isc_tpb_protected/isc_tpb_exclusive";
23462343
case LCK_SW:
2347-
typestr = "isc_tpb_lock_write, isc_tpb_shared";
2348-
break;
2344+
return "isc_tpb_lock_write, isc_tpb_shared";
23492345
case LCK_EX:
2350-
typestr = "isc_tpb_lock_write, isc_tpb_protected/isc_tpb_exclusive";
2351-
break;
2346+
return "isc_tpb_lock_write, isc_tpb_protected/isc_tpb_exclusive";
2347+
default:
2348+
return "unknown";
23522349
}
2353-
return typestr;
23542350
}
23552351

23562352

@@ -2420,7 +2416,7 @@ static int limbo_transaction(thread_db* tdbb, TraNumber id)
24202416
*
24212417
**************************************/
24222418
SET_TDBB(tdbb);
2423-
Database* dbb = tdbb->getDatabase();
2419+
const Database* dbb = tdbb->getDatabase();
24242420
CHECK_DBB(dbb);
24252421

24262422
const ULONG trans_per_tip = dbb->dbb_page_manager.transPerTIP;
@@ -2456,7 +2452,7 @@ void jrd_tra::unlinkFromAttachment()
24562452
}
24572453

24582454

2459-
void jrd_tra::linkToAttachment(Attachment* attachment)
2455+
void jrd_tra::linkToAttachment(Attachment* attachment) noexcept
24602456
{
24612457
/**************************************
24622458
*
@@ -2619,7 +2615,7 @@ static void retain_context(thread_db* tdbb, jrd_tra* transaction, bool commit, i
26192615
const bool dontWrite = (dbb->dbb_flags & DBB_shared) &&
26202616
(transaction->tra_flags & TRA_readonly);
26212617

2622-
const auto header = bump_transaction_id(tdbb, &window, dontWrite);
2618+
const auto* header = bump_transaction_id(tdbb, &window, dontWrite);
26232619
new_number = header->hdr_next_transaction;
26242620
}
26252621
#endif
@@ -2707,10 +2703,10 @@ static void retain_context(thread_db* tdbb, jrd_tra* transaction, bool commit, i
27072703

27082704

27092705
namespace {
2710-
class SweepParameter : public GlobalStorage
2706+
class SweepParameter final : public GlobalStorage
27112707
{
27122708
public:
2713-
SweepParameter(Database* d)
2709+
SweepParameter(Database* d) noexcept
27142710
: dbb(d)
27152711
{ }
27162712

@@ -2741,12 +2737,12 @@ namespace {
27412737
status.check();
27422738
dpb->insertString(&status, isc_dpb_user_name, "sweeper");
27432739
status.check();
2744-
UCHAR byte = isc_dpb_records;
2740+
constexpr UCHAR byte = isc_dpb_records;
27452741
dpb->insertBytes(&status, isc_dpb_sweep, &byte, 1);
27462742
status.check();
27472743
const UCHAR* dpbBytes = dpb->getBuffer(&status);
27482744
status.check();
2749-
unsigned dpbLen = dpb->getBufferLength(&status);
2745+
const unsigned dpbLen = dpb->getBufferLength(&status);
27502746
status.check();
27512747

27522748
AutoRelease<IAttachment> att(prov->attachDatabase(&status, dbName.c_str(), dpbLen, dpbBytes));
@@ -2771,7 +2767,7 @@ namespace {
27712767
}
27722768
}
27732769

2774-
static void cleanup(SweepParameter* par)
2770+
static void cleanup(SweepParameter* par) noexcept
27752771
{
27762772
SPTHR_DEBUG(fprintf(stderr, "Cleanup dbb=%p par=%p\n", par->dbb, par));
27772773
delete par;
@@ -3584,7 +3580,7 @@ static void transaction_start(thread_db* tdbb, jrd_tra* trans)
35843580
const bool dontWrite = (dbb->dbb_flags & DBB_shared) &&
35853581
(trans->tra_flags & TRA_readonly);
35863582

3587-
const auto header = bump_transaction_id(tdbb, &window, dontWrite);
3583+
const auto* header = bump_transaction_id(tdbb, &window, dontWrite);
35883584
number = header->hdr_next_transaction;
35893585
oldest = header->hdr_oldest_transaction;
35903586
oldest_active = header->hdr_oldest_active;
@@ -3675,7 +3671,7 @@ static void transaction_start(thread_db* tdbb, jrd_tra* trans)
36753671
for (; active < number; active++)
36763672
{
36773673
//oldest_state = TPC_cache_state(tdbb, active);
3678-
const ULONG mask = (1 << tra_active);
3674+
constexpr ULONG mask = (1 << tra_active);
36793675
active = TPC_find_states(tdbb, active, number, mask, oldest_state);
36803676
if (!active)
36813677
{
@@ -3755,7 +3751,7 @@ static void transaction_start(thread_db* tdbb, jrd_tra* trans)
37553751
for (oldest = trans->tra_oldest; oldest < number; oldest++)
37563752
{
37573753
//oldest_state = TPC_cache_state(tdbb, oldest);
3758-
const ULONG mask = ~((1 << tra_committed) | (1 << tra_precommitted));
3754+
constexpr ULONG mask = ~((1 << tra_committed) | (1 << tra_precommitted));
37593755
oldest = TPC_find_states(tdbb, trans->tra_oldest, number, mask, oldest_state);
37603756
if (!oldest)
37613757
{
@@ -3889,7 +3885,7 @@ JTransaction* jrd_tra::getInterface(bool create)
38893885
}
38903886

38913887

3892-
void jrd_tra::setInterface(JTransaction* jt)
3888+
void jrd_tra::setInterface(JTransaction* jt) noexcept
38933889
{
38943890
fb_assert(tra_interface == NULL || tra_interface == jt);
38953891
tra_interface = jt;
@@ -3931,7 +3927,7 @@ DbCreatorsList* jrd_tra::getDbCreatorsList()
39313927
}
39323928

39333929

3934-
jrd_tra* jrd_tra::getOuter()
3930+
jrd_tra* jrd_tra::getOuter() noexcept
39353931
{
39363932
jrd_tra* tra = this;
39373933

@@ -4237,7 +4233,7 @@ TraceSweepEvent::TraceSweepEvent(thread_db* tdbb)
42374233
m_tdbb = tdbb;
42384234

42394235
WIN window(HEADER_PAGE_NUMBER);
4240-
Ods::header_page* header = (Ods::header_page*) CCH_FETCH(m_tdbb, &window, LCK_read, pag_header);
4236+
const Ods::header_page* header = (Ods::header_page*) CCH_FETCH(m_tdbb, &window, LCK_read, pag_header);
42414237

42424238
m_sweep_info.update(header);
42434239
CCH_RELEASE(m_tdbb, &window);
@@ -4352,7 +4348,7 @@ void TraceSweepEvent::report(ntrace_process_state_t state)
43524348
if (!m_need_trace)
43534349
return;
43544350

4355-
Database* dbb = m_tdbb->getDatabase();
4351+
const Database* dbb = m_tdbb->getDatabase();
43564352
TraceManager* trace_mgr = att->att_trace_manager;
43574353

43584354
TraceConnectionImpl conn(att);
@@ -4361,7 +4357,7 @@ void TraceSweepEvent::report(ntrace_process_state_t state)
43614357
if (state != ITracePlugin::SWEEP_STATE_PROGRESS)
43624358
m_base_stats.reset();
43634359

4364-
jrd_tra* tran = m_tdbb->getTransaction();
4360+
const jrd_tra* tran = m_tdbb->getTransaction();
43654361

43664362
TraceRuntimeStats stats(att, &m_base_stats, &att->att_stats, finiTime, 0);
43674363

@@ -4372,7 +4368,7 @@ void TraceSweepEvent::report(ntrace_process_state_t state)
43724368
m_need_trace = false;
43734369
}
43744370

4375-
SecDbContext::SecDbContext(IAttachment* a, ITransaction* t)
4371+
SecDbContext::SecDbContext(IAttachment* a, ITransaction* t) noexcept
43764372
: att(a), tra(t), savePoint(0)
43774373
{ }
43784374

@@ -4392,7 +4388,7 @@ SecDbContext::~SecDbContext()
43924388
}
43934389
}
43944390

4395-
SecDbContext* jrd_tra::getSecDbContext()
4391+
SecDbContext* jrd_tra::getSecDbContext() noexcept
43964392
{
43974393
return tra_sec_db_context;
43984394
}
@@ -4405,7 +4401,7 @@ SecDbContext* jrd_tra::setSecDbContext(IAttachment* att, ITransaction* tra)
44054401
return tra_sec_db_context;
44064402
}
44074403

4408-
void jrd_tra::eraseSecDbContext()
4404+
void jrd_tra::eraseSecDbContext() noexcept
44094405
{
44104406
delete tra_sec_db_context;
44114407
tra_sec_db_context = NULL;

0 commit comments

Comments
 (0)