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
8484using namespace Jrd ;
8585using namespace Ods ;
@@ -97,7 +97,7 @@ static void retain_context(thread_db* tdbb, jrd_tra* transaction, bool commit, i
9797static void expand_view_lock (thread_db* tdbb, jrd_tra*, jrd_rel*, UCHAR lock_type,
9898 const char * option_name, RelationLockTypeMap& lockmap, const int level);
9999static 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 ;
101101static ULONG inventory_page (thread_db*, ULONG);
102102static int limbo_transaction (thread_db*, TraNumber id);
103103static void release_temp_tables (thread_db*, jrd_tra*);
@@ -109,7 +109,7 @@ static void transaction_flush(thread_db* tdbb, USHORT flush_flag, TraNumber tra_
109109static void transaction_options (thread_db*, jrd_tra*, const UCHAR*, USHORT);
110110static 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
27092705namespace {
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