mirror of
https://github.com/FirebirdSQL/firebird.git
synced 2025-01-24 09:23:03 +01:00
Pass some tdbb's as arguments.
This commit is contained in:
parent
e632ad961d
commit
f5db14b277
@ -265,7 +265,8 @@ static const deferred_task task_table[] =
|
||||
};
|
||||
|
||||
|
||||
USHORT DFW_assign_index_type(DeferredWork* work, SSHORT field_type, SSHORT ttype)
|
||||
USHORT DFW_assign_index_type(thread_db* tdbb,
|
||||
DeferredWork* work, SSHORT field_type, SSHORT ttype)
|
||||
{
|
||||
/**************************************
|
||||
*
|
||||
@ -278,7 +279,7 @@ USHORT DFW_assign_index_type(DeferredWork* work, SSHORT field_type, SSHORT ttype
|
||||
* on the field's type and subtype.
|
||||
*
|
||||
**************************************/
|
||||
thread_db* tdbb = JRD_get_thread_data();
|
||||
SET_TDBB(tdbb);
|
||||
|
||||
if (field_type == dtype_varying ||
|
||||
field_type == dtype_cstring ||
|
||||
@ -443,7 +444,7 @@ void DFW_merge_work(jrd_tra* transaction,
|
||||
}
|
||||
|
||||
|
||||
void DFW_perform_system_work(void)
|
||||
void DFW_perform_system_work(thread_db* tdbb)
|
||||
{
|
||||
/**************************************
|
||||
*
|
||||
@ -456,13 +457,14 @@ void DFW_perform_system_work(void)
|
||||
* system transaction.
|
||||
*
|
||||
**************************************/
|
||||
Database* dbb = GET_DBB();
|
||||
SET_TDBB(tdbb);
|
||||
Database* dbb = tdbb->getDatabase();
|
||||
|
||||
DFW_perform_work(dbb->dbb_sys_trans);
|
||||
DFW_perform_work(tdbb, dbb->dbb_sys_trans);
|
||||
}
|
||||
|
||||
|
||||
void DFW_perform_work(jrd_tra* transaction)
|
||||
void DFW_perform_work(thread_db* tdbb, jrd_tra* transaction)
|
||||
{
|
||||
/**************************************
|
||||
*
|
||||
@ -475,7 +477,6 @@ void DFW_perform_work(jrd_tra* transaction)
|
||||
* come.
|
||||
*
|
||||
**************************************/
|
||||
thread_db* tdbb = JRD_get_thread_data();
|
||||
|
||||
/* If no deferred work or it's all deferred event posting
|
||||
don't bother */
|
||||
@ -486,6 +487,7 @@ void DFW_perform_work(jrd_tra* transaction)
|
||||
return;
|
||||
}
|
||||
|
||||
SET_TDBB(tdbb);
|
||||
Jrd::ContextPoolHolder context(tdbb, transaction->tra_pool);
|
||||
|
||||
/* Loop for as long as any of the deferred work routines says that it has
|
||||
@ -1868,7 +1870,7 @@ static bool create_index( thread_db* tdbb,
|
||||
const SSHORT text_type =
|
||||
INTL_CS_COLL_TO_TTYPE(FLD.RDB$CHARACTER_SET_ID, collate);
|
||||
idx.idx_rpt[SEG.RDB$FIELD_POSITION].idx_itype =
|
||||
DFW_assign_index_type(work,
|
||||
DFW_assign_index_type(tdbb, work,
|
||||
gds_cvt_blr_dtype[FLD.RDB$FIELD_TYPE],
|
||||
text_type);
|
||||
|
||||
|
@ -24,11 +24,11 @@
|
||||
#ifndef JRD_DFW_PROTO_H
|
||||
#define JRD_DFW_PROTO_H
|
||||
|
||||
USHORT DFW_assign_index_type(Jrd::DeferredWork*, SSHORT, SSHORT);
|
||||
USHORT DFW_assign_index_type(Jrd::thread_db*, Jrd::DeferredWork*, SSHORT, SSHORT);
|
||||
void DFW_delete_deferred(Jrd::jrd_tra*, SLONG);
|
||||
void DFW_merge_work(Jrd::jrd_tra*, SLONG, SLONG);
|
||||
void DFW_perform_system_work(void);
|
||||
void DFW_perform_work(Jrd::jrd_tra*);
|
||||
void DFW_perform_system_work(Jrd::thread_db*);
|
||||
void DFW_perform_work(Jrd::thread_db*, Jrd::jrd_tra*);
|
||||
void DFW_perform_post_commit_work(Jrd::jrd_tra*);
|
||||
Jrd::DeferredWork* DFW_post_work(Jrd::jrd_tra*, enum Jrd::dfw_t, const dsc*, USHORT);
|
||||
Jrd::DeferredWork* DFW_post_work_arg(Jrd::jrd_tra*, Jrd::DeferredWork*, const dsc*, USHORT);
|
||||
|
@ -143,7 +143,6 @@ bool GRANT_privileges( thread_db* tdbb, SSHORT phase, DeferredWork* work,
|
||||
* the order of operations lightly.
|
||||
*
|
||||
**************************************/
|
||||
|
||||
switch (phase) {
|
||||
case 1:
|
||||
case 2:
|
||||
@ -263,10 +262,11 @@ bool GRANT_privileges( thread_db* tdbb, SSHORT phase, DeferredWork* work,
|
||||
}
|
||||
|
||||
default:
|
||||
SET_TDBB(tdbb);
|
||||
break;
|
||||
}
|
||||
|
||||
DFW_perform_system_work();
|
||||
DFW_perform_system_work(tdbb);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@ -67,10 +67,10 @@ const char* DEFAULT_CLASS = "SQL$DEFAULT";
|
||||
#ifdef NOT_USED_OR_REPLACED
|
||||
static void add_generator(TEXT*, jrd_req**);
|
||||
#endif
|
||||
static void add_global_fields(USHORT);
|
||||
static void add_global_fields(thread_db*, USHORT);
|
||||
static void add_index_set(Database*, bool, USHORT, USHORT);
|
||||
static void add_new_triggers(USHORT, USHORT);
|
||||
static void add_relation_fields(USHORT);
|
||||
static void add_relation_fields(thread_db*, USHORT);
|
||||
static void add_security_to_sys_rel(thread_db*, const Firebird::MetaName&,
|
||||
const TEXT*, const UCHAR*, const SSHORT);
|
||||
#ifdef NOT_USED_OR_REPLACED
|
||||
@ -468,9 +468,9 @@ void INI_format(const TEXT* owner, const TEXT* charset)
|
||||
|
||||
store_functions(tdbb, dbb);
|
||||
|
||||
DFW_perform_system_work();
|
||||
DFW_perform_system_work(tdbb);
|
||||
|
||||
add_relation_fields(0);
|
||||
add_relation_fields(tdbb, 0);
|
||||
|
||||
/*
|
||||
====================================================================
|
||||
@ -843,13 +843,13 @@ void INI_update_database()
|
||||
which holds their information needs to have an additional field
|
||||
to define which major ODS version they belong to.
|
||||
PENDING WORK.
|
||||
add_global_fields (major_version, minor_version);
|
||||
add_relation_fields (major_version, minor_version);
|
||||
add_global_fields (tdbb, major_version, minor_version);
|
||||
add_relation_fields (tdbb, major_version, minor_version);
|
||||
Look at add_new_triggers() for reference.
|
||||
***/
|
||||
|
||||
add_global_fields(minor_version);
|
||||
add_relation_fields(minor_version);
|
||||
add_global_fields(tdbb, minor_version);
|
||||
add_relation_fields(tdbb, minor_version);
|
||||
}
|
||||
|
||||
add_index_set(dbb, true, major_version, minor_version);
|
||||
@ -888,7 +888,7 @@ void INI_update_database()
|
||||
dbb->dbb_minor_version = header->hdr_ods_minor;
|
||||
CCH_RELEASE(tdbb, &window);
|
||||
|
||||
DFW_perform_system_work();
|
||||
DFW_perform_system_work(tdbb);
|
||||
}
|
||||
|
||||
#ifdef NOT_USED_OR_REPLACED
|
||||
@ -923,7 +923,7 @@ static void add_generator(TEXT* generator_name, jrd_req** handle)
|
||||
}
|
||||
#endif
|
||||
|
||||
static void add_global_fields( USHORT minor_version)
|
||||
static void add_global_fields(thread_db* tdbb, USHORT minor_version)
|
||||
{
|
||||
/**************************************
|
||||
*
|
||||
@ -938,7 +938,7 @@ static void add_global_fields( USHORT minor_version)
|
||||
* ODS change.
|
||||
*
|
||||
**************************************/
|
||||
thread_db* tdbb = JRD_get_thread_data();
|
||||
SET_TDBB(tdbb);
|
||||
|
||||
/* add desired global fields to system relations */
|
||||
|
||||
@ -955,7 +955,7 @@ static void add_global_fields( USHORT minor_version)
|
||||
CMP_release(tdbb, handle);
|
||||
}
|
||||
|
||||
DFW_perform_system_work();
|
||||
DFW_perform_system_work(tdbb);
|
||||
}
|
||||
|
||||
|
||||
@ -1102,7 +1102,7 @@ static void add_new_triggers(USHORT major_version, USHORT minor_version)
|
||||
}
|
||||
|
||||
|
||||
static void add_relation_fields( USHORT minor_version)
|
||||
static void add_relation_fields(thread_db* tdbb, USHORT minor_version)
|
||||
{
|
||||
/**************************************
|
||||
*
|
||||
@ -1117,7 +1117,7 @@ static void add_relation_fields( USHORT minor_version)
|
||||
* ODS change.
|
||||
*
|
||||
**************************************/
|
||||
thread_db* tdbb = JRD_get_thread_data();
|
||||
SET_TDBB(tdbb);
|
||||
Database* dbb = tdbb->getDatabase();
|
||||
|
||||
/* add desired fields to system relations, forcing a new format version */
|
||||
@ -1160,7 +1160,7 @@ static void add_relation_fields( USHORT minor_version)
|
||||
CMP_release(tdbb, m_handle);
|
||||
}
|
||||
|
||||
DFW_perform_system_work();
|
||||
DFW_perform_system_work(tdbb);
|
||||
}
|
||||
|
||||
|
||||
|
@ -177,7 +177,7 @@ bool PCMET_expression_index(thread_db* tdbb, SSHORT phase, DeferredWork* work,
|
||||
CMP_get_desc(tdbb, csb, idx.idx_expression,
|
||||
&idx.idx_expression_desc);
|
||||
idx.idx_rpt[0].idx_itype =
|
||||
DFW_assign_index_type(work,
|
||||
DFW_assign_index_type(tdbb, work,
|
||||
idx.idx_expression_desc.dsc_dtype,
|
||||
idx.idx_expression_desc.dsc_sub_type);
|
||||
idx.idx_rpt[0].idx_selectivity = 0;
|
||||
|
@ -424,7 +424,7 @@ void TRA_commit(thread_db* tdbb, jrd_tra* transaction, const bool retaining_flag
|
||||
/* Perform any meta data work deferred */
|
||||
|
||||
if (!(transaction->tra_flags & TRA_prepared))
|
||||
DFW_perform_work(transaction);
|
||||
DFW_perform_work(tdbb, transaction);
|
||||
|
||||
if (transaction->tra_flags & (TRA_prepare2 | TRA_reconnected))
|
||||
MET_update_transaction(tdbb, transaction, true);
|
||||
@ -964,7 +964,7 @@ void TRA_prepare(thread_db* tdbb, jrd_tra* transaction, USHORT length,
|
||||
|
||||
/* Perform any meta data work deferred */
|
||||
|
||||
DFW_perform_work(transaction);
|
||||
DFW_perform_work(tdbb, transaction);
|
||||
|
||||
#ifdef GARBAGE_THREAD
|
||||
/* Flush pages if transaction logically modified data */
|
||||
|
Loading…
Reference in New Issue
Block a user