From: <asf...@us...> - 2010-06-12 16:32:53
|
Revision: 51243 http://firebird.svn.sourceforge.net/firebird/?rev=51243&view=rev Author: asfernandes Date: 2010-06-12 16:32:46 +0000 (Sat, 12 Jun 2010) Log Message: ----------- Misc Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2010-06-12 16:28:11 UTC (rev 51242) +++ firebird/trunk/src/jrd/met.epp 2010-06-12 16:32:46 UTC (rev 51243) @@ -113,21 +113,21 @@ static int blocking_ast_relation(void*); static int partners_ast_relation(void*); static void get_trigger(thread_db*, jrd_rel*, bid*, bid*, trig_vec**, const TEXT*, FB_UINT64, bool, - USHORT, const Firebird::MetaName&, const Firebird::string&, const bid*); + USHORT, const MetaName&, const string&, const bid*); static bool get_type(thread_db*, USHORT*, const UCHAR*, const TEXT*); static void lookup_view_contexts(thread_db*, jrd_rel*); -static void make_relation_scope_name(const TEXT*, const USHORT, Firebird::string& str); -static jrd_nod* parse_field_blr(thread_db* tdbb, bid* blob_id, const Firebird::MetaName name = Firebird::MetaName()); +static void make_relation_scope_name(const TEXT*, const USHORT, string& str); +static jrd_nod* parse_field_blr(thread_db* tdbb, bid* blob_id, const MetaName name = MetaName()); static void parse_procedure_blr(thread_db*, jrd_prc*, bid*, CompilerScratch*, bool); static void par_messages(thread_db*, const UCHAR* const, USHORT, jrd_prc*, CompilerScratch*); static bool resolve_charset_and_collation(thread_db*, USHORT*, const UCHAR*, const UCHAR*); static void save_trigger_data(thread_db*, trig_vec**, jrd_rel*, JrdStatement*, blb*, bid*, - const TEXT*, FB_UINT64, bool, USHORT, const Firebird::MetaName&, const Firebird::string&, + const TEXT*, FB_UINT64, bool, USHORT, const MetaName&, const string&, const bid*); static void scan_partners(thread_db*, jrd_rel*); static void store_dependencies(thread_db*, CompilerScratch*, const jrd_rel*, - const Firebird::MetaName&, int, jrd_tra*); -static bool verify_TRG_ignore_perm(thread_db*, const Firebird::MetaName&); + const MetaName&, int, jrd_tra*); +static bool verify_TRG_ignore_perm(thread_db*, const MetaName&); @@ -180,7 +180,7 @@ } -void MET_get_domain(thread_db* tdbb, const Firebird::MetaName& name, dsc* desc, FieldInfo* fieldInfo) +void MET_get_domain(thread_db* tdbb, const MetaName& name, dsc* desc, FieldInfo* fieldInfo) { /************************************** * @@ -230,7 +230,7 @@ else fieldInfo->validation = parse_field_blr(tdbb, &FLD.RDB$VALIDATION_BLR, name); } - catch (const Firebird::Exception&) + catch (const Exception&) { dbb->deletePool(csb_pool); throw; @@ -247,9 +247,9 @@ } -Firebird::MetaName MET_get_relation_field(thread_db* tdbb, - const Firebird::MetaName& relationName, - const Firebird::MetaName& fieldName, +MetaName MET_get_relation_field(thread_db* tdbb, + const MetaName& relationName, + const MetaName& fieldName, dsc* desc, FieldInfo* fieldInfo) { @@ -268,7 +268,7 @@ Jrd::Attachment* attachment = tdbb->getAttachment(); Database* dbb = tdbb->getDatabase(); bool found = false; - Firebird::MetaName sourceName; + MetaName sourceName; AutoCacheRequest handle(tdbb, irq_l_relfield, IRQ_REQUESTS); @@ -316,7 +316,7 @@ else fieldInfo->validation = NULL; } - catch (const Firebird::Exception&) + catch (const Exception&) { dbb->deletePool(csb_pool); throw; @@ -823,7 +823,7 @@ DEP.RDB$DEPENDENT_NAME EQ PRC.RDB$PROCEDURE_NAME AND PRC.RDB$PACKAGE_NAME MISSING { - Firebird::MetaName proc_name(PRC.RDB$PROCEDURE_NAME); + MetaName proc_name(PRC.RDB$PROCEDURE_NAME); dsc desc; desc.makeText(proc_name.length(), CS_METADATA, (UCHAR*) proc_name.c_str()); @@ -845,7 +845,7 @@ DEP.RDB$DEPENDENT_TYPE EQ obj_package_body) AND DEP.RDB$DEPENDENT_NAME EQ PRC.RDB$PACKAGE_NAME { - Firebird::MetaName proc_name(PRC.RDB$PROCEDURE_NAME); + MetaName proc_name(PRC.RDB$PROCEDURE_NAME); dsc desc; desc.makeText(proc_name.length(), CS_METADATA, (UCHAR*) proc_name.c_str()); @@ -866,8 +866,8 @@ DEP.RDB$DEPENDENT_TYPE EQ obj_trigger AND DEP.RDB$DEPENDENT_NAME EQ TRG.RDB$TRIGGER_NAME { - Firebird::MetaName trigger_name(TRG.RDB$TRIGGER_NAME); - Firebird::MetaName trigger_relation_name(TRG.RDB$RELATION_NAME); + MetaName trigger_name(TRG.RDB$TRIGGER_NAME); + MetaName trigger_relation_name(TRG.RDB$RELATION_NAME); dsc desc; desc.makeText(trigger_name.length(), CS_METADATA, (UCHAR*) trigger_name.c_str()); @@ -895,7 +895,7 @@ DEP.RDB$DEPENDENT_NAME EQ PRC.RDB$PROCEDURE_NAME AND PRC.RDB$PACKAGE_NAME MISSING { - Firebird::MetaName proc_name(PRC.RDB$PROCEDURE_NAME); + MetaName proc_name(PRC.RDB$PROCEDURE_NAME); dsc desc; desc.makeText(proc_name.length(), CS_METADATA, (UCHAR*) proc_name.c_str()); @@ -919,8 +919,8 @@ DEP.RDB$DEPENDENT_TYPE EQ obj_trigger AND DEP.RDB$DEPENDENT_NAME EQ TRG.RDB$TRIGGER_NAME { - Firebird::MetaName trigger_name(TRG.RDB$TRIGGER_NAME); - Firebird::MetaName trigger_relation_name(TRG.RDB$RELATION_NAME); + MetaName trigger_name(TRG.RDB$TRIGGER_NAME); + MetaName trigger_relation_name(TRG.RDB$RELATION_NAME); dsc desc; desc.makeText(trigger_name.length(), CS_METADATA, (UCHAR*) trigger_name.c_str()); @@ -945,7 +945,7 @@ DEP.RDB$DEPENDENT_NAME EQ FUN.RDB$FUNCTION_NAME AND FUN.RDB$PACKAGE_NAME MISSING { - Firebird::MetaName name(FUN.RDB$FUNCTION_NAME); + MetaName name(FUN.RDB$FUNCTION_NAME); dsc desc; desc.makeText(name.length(), CS_METADATA, (UCHAR*) name.c_str()); @@ -970,7 +970,7 @@ DEP.RDB$DEPENDENT_NAME EQ FUN.RDB$FUNCTION_NAME AND FUN.RDB$PACKAGE_NAME MISSING { - Firebird::MetaName name(FUN.RDB$FUNCTION_NAME); + MetaName name(FUN.RDB$FUNCTION_NAME); dsc desc; desc.makeText(name.length(), CS_METADATA, (UCHAR*) name.c_str()); @@ -992,7 +992,7 @@ DEP.RDB$DEPENDENT_TYPE EQ obj_package_body) AND DEP.RDB$DEPENDENT_NAME EQ FUN.RDB$PACKAGE_NAME { - Firebird::MetaName name(FUN.RDB$FUNCTION_NAME); + MetaName name(FUN.RDB$FUNCTION_NAME); dsc desc; desc.makeText(name.length(), CS_METADATA, (UCHAR*) name.c_str()); @@ -1031,7 +1031,7 @@ void MET_delete_dependencies(thread_db* tdbb, - const Firebird::MetaName& object_name, + const MetaName& object_name, int dependency_type, jrd_tra* transaction) { @@ -1131,7 +1131,7 @@ // notify others through AST to mark as obsolete Database* const dbb = tdbb->getDatabase(); const size_t key_length = item->lock->lck_length; - Firebird::AutoPtr<Lock> temp_lock(FB_NEW_RPT(*tdbb->getDefaultPool(), key_length) Lock()); + AutoPtr<Lock> temp_lock(FB_NEW_RPT(*tdbb->getDefaultPool(), key_length) Lock()); temp_lock->lck_dbb = dbb; temp_lock->lck_parent = dbb->dbb_lock; temp_lock->lck_type = LCK_dsql_cache; @@ -1212,7 +1212,7 @@ format = Format::newFormat(*dbb->dbb_permanent, count); - Firebird::Array<Ods::Descriptor> odsDescs; + Array<Ods::Descriptor> odsDescs; Ods::Descriptor* odsDesc = odsDescs.getBuffer(count); memcpy(odsDesc, buffer.begin() + bufferPos, count * sizeof(Ods::Descriptor)); @@ -1653,7 +1653,7 @@ void MET_load_trigger(thread_db* tdbb, jrd_rel* relation, - const Firebird::MetaName& trigger_name, + const MetaName& trigger_name, trig_vec** triggers) { /************************************** @@ -1716,8 +1716,8 @@ if (!TRG.RDB$DEBUG_INFO.NULL) // ODS_11_1 debug_blob_id = TRG.RDB$DEBUG_INFO; - Firebird::MetaName engine; - Firebird::string entryPoint; + MetaName engine; + string entryPoint; if (!TRG.RDB$ENGINE_NAME.NULL) // ODS_12_0 { @@ -1775,8 +1775,8 @@ void MET_lookup_cnstrt_for_index(thread_db* tdbb, - Firebird::MetaName& constraint_name, - const Firebird::MetaName& index_name) + MetaName& constraint_name, + const MetaName& index_name) { /************************************** * @@ -1805,9 +1805,9 @@ void MET_lookup_cnstrt_for_trigger(thread_db* tdbb, - Firebird::MetaName& constraint_name, - Firebird::MetaName& relation_name, - const Firebird::MetaName& trigger_name) + MetaName& constraint_name, + MetaName& relation_name, + const MetaName& trigger_name) { /************************************** * @@ -1853,7 +1853,7 @@ void MET_lookup_exception(thread_db* tdbb, SLONG number, - Firebird::MetaName& name, + MetaName& name, string* message) { /************************************** @@ -1890,7 +1890,7 @@ } -SLONG MET_lookup_exception_number(thread_db* tdbb, const Firebird::MetaName& name) +SLONG MET_lookup_exception_number(thread_db* tdbb, const MetaName& name) { /************************************** * @@ -1924,8 +1924,8 @@ int MET_lookup_field(thread_db* tdbb, jrd_rel* relation, - const Firebird::MetaName& name, - const Firebird::MetaName* security_name) + const MetaName& name, + const MetaName* security_name) { /************************************** * @@ -2084,7 +2084,7 @@ return gen_id; } -void MET_lookup_generator_id (thread_db* tdbb, SLONG gen_id, Firebird::MetaName& name) +void MET_lookup_generator_id (thread_db* tdbb, SLONG gen_id, MetaName& name) { /************************************** * @@ -2119,8 +2119,8 @@ } void MET_lookup_index(thread_db* tdbb, - Firebird::MetaName& index_name, - const Firebird::MetaName& relation_name, + MetaName& index_name, + const MetaName& relation_name, USHORT number) { /************************************** @@ -2152,7 +2152,7 @@ SLONG MET_lookup_index_name(thread_db* tdbb, - const Firebird::MetaName& index_name, + const MetaName& index_name, SLONG* relation_id, SSHORT* status) { /************************************** @@ -2432,7 +2432,7 @@ } -jrd_rel* MET_lookup_relation(thread_db* tdbb, const Firebird::MetaName& name) +jrd_rel* MET_lookup_relation(thread_db* tdbb, const MetaName& name) { /************************************** * @@ -2633,7 +2633,7 @@ blb* blob = BLB_open(tdbb, attachment->getSysTransaction(), blob_id); SLONG length = blob->blb_length + 10; - Firebird::HalfStaticArray<UCHAR, 512> tmp; + HalfStaticArray<UCHAR, 512> tmp; UCHAR* temp = tmp.getBuffer(length); length = BLB_get_data(tdbb, blob, temp, length); @@ -2728,7 +2728,7 @@ { blb* blob = BLB_open(tdbb, attachment->getSysTransaction(), &TRG.RDB$TRIGGER_BLR); SLONG length = blob->blb_length + 10; - Firebird::HalfStaticArray<UCHAR, 128> blr; + HalfStaticArray<UCHAR, 128> blr; length = BLB_get_data(tdbb, blob, blr.getBuffer(length), length); USHORT par_flags = (USHORT) ((trig_flags & TRG_ignore_perm) ? csb_ignore_perm : 0); @@ -3052,7 +3052,7 @@ parse_procedure_blr(tdbb, procedure, (P.RDB$PROCEDURE_BLR.NULL ? NULL : &P.RDB$PROCEDURE_BLR), csb, external); } - catch (const Firebird::Exception&) + catch (const Exception&) { delete csb; @@ -3135,7 +3135,7 @@ procedure->prc_flags &= ~PRC_being_scanned; } // try - catch (const Firebird::Exception&) + catch (const Exception&) { procedure->prc_flags &= ~(PRC_being_scanned | PRC_scanned); if (procedure->prc_existence_lock) @@ -3226,8 +3226,8 @@ } -bool MET_relation_default_class(thread_db* tdbb, const Firebird::MetaName& relation_name, - const Firebird::MetaName& default_security_class_name) +bool MET_relation_default_class(thread_db* tdbb, const MetaName& relation_name, + const MetaName& default_security_class_name) { /************************************** * @@ -3555,7 +3555,7 @@ if (dependencies) { - const Firebird::MetaName depName(REL.RDB$RELATION_NAME); + const MetaName depName(REL.RDB$RELATION_NAME); relation->rel_view_rse = (RecordSelExpr*) MET_get_dependencies(tdbb, relation, NULL, 0, NULL, &REL.RDB$VIEW_BLR, NULL, @@ -3608,7 +3608,7 @@ // Pick up field specific stuff blob = BLB_open(tdbb, attachment->getSysTransaction(), &REL.RDB$RUNTIME); - Firebird::HalfStaticArray<UCHAR, 256> temp; + HalfStaticArray<UCHAR, 256> temp; UCHAR* const buffer = temp.getBuffer(blob->blb_max_segment + 1); jrd_fld* field = NULL; @@ -3691,7 +3691,7 @@ { csb->csb_g_flags |= csb_get_dependencies; field->fld_source = PAR_make_field(tdbb, csb, view_context, (TEXT*) p); - const Firebird::MetaName depName(REL.RDB$RELATION_NAME); + const MetaName depName(REL.RDB$RELATION_NAME); store_dependencies(tdbb, csb, 0, depName, obj_view, depTrans); } else { @@ -3819,7 +3819,7 @@ relation->rel_current_format = NULL; } // try - catch (const Firebird::Exception&) + catch (const Exception&) { relation->rel_flags &= ~(REL_being_scanned | REL_scanned); if (dependencies) { @@ -3836,7 +3836,7 @@ } -void MET_trigger_msg(thread_db* tdbb, Firebird::string& msg, const Firebird::MetaName& name, +void MET_trigger_msg(thread_db* tdbb, string& msg, const MetaName& name, USHORT number) { /************************************** @@ -3963,7 +3963,7 @@ item->locked = false; LCK_release(tdbb, item->lock); } - catch (const Firebird::Exception&) + catch (const Exception&) {} // no-op return 0; @@ -3975,7 +3975,7 @@ Database* dbb = tdbb->getDatabase(); Jrd::Attachment* attachment = tdbb->getAttachment(); - Firebird::string key((char*) &type, sizeof(type)); + string key((char*) &type, sizeof(type)); int len = name.identifier.length(); key.append((char*) &len, sizeof(len)); key.append(name.identifier.c_str(), len); @@ -4044,7 +4044,7 @@ } procedure->prc_flags |= PRC_obsolete; } - catch (const Firebird::Exception&) + catch (const Exception&) {} // no-op return 0; @@ -4092,7 +4092,7 @@ LCK_release(tdbb, relation->rel_existence_lock); } } - catch (const Firebird::Exception&) + catch (const Exception&) {} // no-op return 0; @@ -4118,7 +4118,7 @@ LCK_release(tdbb, relation->rel_partners_lock); relation->rel_flags |= REL_check_partners; } - catch (const Firebird::Exception&) + catch (const Exception&) {} // no-op return 0; @@ -4129,7 +4129,7 @@ bid* blob_id, bid* debug_blob_id, trig_vec** ptr, const TEXT* name, FB_UINT64 type, bool sys_trigger, USHORT flags, - const Firebird::MetaName& engine, const Firebird::string& entryPoint, + const MetaName& engine, const string& entryPoint, const bid* body) { /************************************** @@ -4249,7 +4249,7 @@ static void make_relation_scope_name(const TEXT* rel_name, const USHORT rel_flags, - Firebird::string& str) + string& str) { /************************************** * @@ -4278,7 +4278,7 @@ // * p a r s e _ f i e l d _ b l r // *********************************************************** // Parses default BLR and validation BLR for a field. -static jrd_nod* parse_field_blr(thread_db* tdbb, bid* blob_id, const Firebird::MetaName name) +static jrd_nod* parse_field_blr(thread_db* tdbb, bid* blob_id, const MetaName name) { SET_TDBB(tdbb); Jrd::Attachment* attachment = tdbb->getAttachment(); @@ -4287,7 +4287,7 @@ blb* blob = BLB_open(tdbb, attachment->getSysTransaction(), blob_id); SLONG length = blob->blb_length + 10; - Firebird::HalfStaticArray<UCHAR, 512> temp; + HalfStaticArray<UCHAR, 512> temp; length = BLB_get_data(tdbb, blob, temp.getBuffer(length), length); @@ -4301,7 +4301,7 @@ // Generate BLR message for external procedures -static void gen_ext_message(Firebird::UCharBuffer& blr, UCHAR message, +static void gen_ext_message(UCharBuffer& blr, UCHAR message, const Array<Parameter*>& parameters) { size_t count = parameters.getCount(); @@ -4378,7 +4378,7 @@ SET_TDBB(tdbb); Jrd::Attachment* attachment = tdbb->getAttachment(); - Firebird::UCharBuffer tmp; + UCharBuffer tmp; if (external || !blob_id) { @@ -4548,7 +4548,7 @@ } -void MET_release_trigger(thread_db* tdbb, trig_vec** vector_ptr, const Firebird::MetaName& name) +void MET_release_trigger(thread_db* tdbb, trig_vec** vector_ptr, const MetaName& name) { /*********************************************** * @@ -4749,7 +4749,7 @@ JrdStatement* statement, blb* blrBlob, bid* dbgBlobID, const TEXT* name, FB_UINT64 type, bool sys_trigger, USHORT flags, - const Firebird::MetaName& engine, const Firebird::string& entryPoint, + const MetaName& engine, const string& entryPoint, const bid* body) { /************************************** @@ -4808,7 +4808,7 @@ } -const Trigger* findTrigger(trig_vec* triggers, const Firebird::MetaName& trig_name) +const Trigger* findTrigger(trig_vec* triggers, const MetaName& trig_name) { if (triggers) { @@ -4961,7 +4961,7 @@ static void store_dependencies(thread_db* tdbb, CompilerScratch* csb, const jrd_rel* dep_rel, - const Firebird::MetaName& object_name, + const MetaName& object_name, int dependency_type, jrd_tra* transaction) { @@ -4977,7 +4977,7 @@ * compilation of blr for a trigger, view, etc. * **************************************/ - Firebird::MetaName name; + MetaName name; SET_TDBB(tdbb); @@ -5003,7 +5003,7 @@ int dpdo_type = (int) (IPTR) node->nod_arg[e_dep_object_type]; jrd_rel* relation = NULL; jrd_prc* procedure = NULL; - const Firebird::MetaName* dpdo_name = 0; + const MetaName* dpdo_name = 0; MetaName packageName; SubtypeInfo info; @@ -5025,7 +5025,7 @@ (dependency_type == obj_computed) && (dep_rel->rel_view_rse != NULL) )) { - Firebird::string sMaster, sChild; + string sMaster, sChild; make_relation_scope_name(relation->rel_name.c_str(), relation->rel_flags, sMaster); @@ -5063,7 +5063,7 @@ } break; case obj_field: - dpdo_name = (Firebird::MetaName*) node->nod_arg[e_dep_object]; + dpdo_name = (MetaName*) node->nod_arg[e_dep_object]; break; // CVC: Here I'm going to track those pesky things named generators and UDFs. case obj_generator: @@ -5088,7 +5088,7 @@ jrd_nod* field_node = node->nod_arg[e_dep_field]; - Firebird::MetaName field_name; + MetaName field_name; if (field_node) { if (field_node->nod_type == nod_field) @@ -5194,7 +5194,7 @@ } -static bool verify_TRG_ignore_perm(thread_db* tdbb, const Firebird::MetaName& trig_name) +static bool verify_TRG_ignore_perm(thread_db* tdbb, const MetaName& trig_name) { /***************************************************** * This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <di...@us...> - 2011-01-14 06:51:57
|
Revision: 52119 http://firebird.svn.sourceforge.net/firebird/?rev=52119&view=rev Author: dimitr Date: 2011-01-14 06:51:51 +0000 (Fri, 14 Jan 2011) Log Message: ----------- Tuned the code a little in order to avoid redundant retrievals. As a side effect, it downgrades three-way joins to two-way ones, thus helping the optimizer to choose a good plan in the worst (zero selectivity) cases. This should resolve CORE-2933 (Very slow execution of a script that creates a lot of metadata) and CORE-3237 (Slow compilation of stored procedures) without tweaking the optimizer constants. Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2011-01-14 06:47:36 UTC (rev 52118) +++ firebird/trunk/src/jrd/met.epp 2011-01-14 06:51:51 UTC (rev 52119) @@ -817,7 +817,7 @@ Jrd::Attachment* attachment = tdbb->getAttachment(); dsc relation_name; - DeferredWork* dw = 0; + DeferredWork* dw = NULL; AutoCacheRequest request(tdbb, irq_m_fields, IRQ_REQUESTS); FOR(REQUEST_HANDLE request) @@ -828,6 +828,84 @@ (UCHAR*) X.RDB$RELATION_NAME); SCL_check_relation(tdbb, &relation_name, SCL_control); dw = DFW_post_work(transaction, dfw_update_format, &relation_name, 0); + + AutoCacheRequest request2(tdbb, irq_m_fields4, IRQ_REQUESTS); + + FOR(REQUEST_HANDLE request2) + RFL IN RDB$RELATION_FIELDS CROSS + DEP IN RDB$DEPENDENCIES CROSS + PRC IN RDB$PROCEDURES + WITH RFL.RDB$FIELD_SOURCE EQ field_source->dsc_address AND + DEP.RDB$DEPENDED_ON_NAME EQ RFL.RDB$RELATION_NAME AND + DEP.RDB$FIELD_NAME EQ RFL.RDB$FIELD_NAME AND + DEP.RDB$DEPENDED_ON_TYPE EQ obj_relation AND + DEP.RDB$DEPENDENT_TYPE EQ obj_procedure AND + DEP.RDB$DEPENDENT_NAME EQ PRC.RDB$PROCEDURE_NAME AND + PRC.RDB$PACKAGE_NAME MISSING + { + MetaName proc_name(PRC.RDB$PROCEDURE_NAME); + + dsc desc; + desc.makeText(proc_name.length(), CS_METADATA, (UCHAR*) proc_name.c_str()); + + DeferredWork* dw2 = + DFW_post_work(transaction, dfw_modify_procedure, &desc, PRC.RDB$PROCEDURE_ID); + DFW_post_work_arg(transaction, dw2, NULL, 0, dfw_arg_check_blr); + } + END_FOR + + request2.reset(tdbb, irq_m_fields5, IRQ_REQUESTS); + + FOR(REQUEST_HANDLE request2) + RFL IN RDB$RELATION_FIELDS CROSS + DEP IN RDB$DEPENDENCIES CROSS + TRG IN RDB$TRIGGERS + WITH RFL.RDB$FIELD_SOURCE EQ field_source->dsc_address AND + DEP.RDB$DEPENDED_ON_NAME EQ RFL.RDB$RELATION_NAME AND + DEP.RDB$FIELD_NAME EQ RFL.RDB$FIELD_NAME AND + DEP.RDB$DEPENDED_ON_TYPE EQ obj_relation AND + DEP.RDB$DEPENDENT_TYPE EQ obj_trigger AND + DEP.RDB$DEPENDENT_NAME EQ TRG.RDB$TRIGGER_NAME + { + MetaName trigger_name(TRG.RDB$TRIGGER_NAME); + MetaName trigger_relation_name(TRG.RDB$RELATION_NAME); + + dsc desc; + desc.makeText(trigger_name.length(), CS_METADATA, (UCHAR*) trigger_name.c_str()); + + DeferredWork* dw2 = DFW_post_work(transaction, dfw_modify_trigger, &desc, 0); + DFW_post_work_arg(transaction, dw2, NULL, TRG.RDB$TRIGGER_TYPE, dfw_arg_trg_type); + + desc.dsc_length = trigger_relation_name.length(); + desc.dsc_address = (UCHAR*) trigger_relation_name.c_str(); + DFW_post_work_arg(transaction, dw2, &desc, 0, dfw_arg_check_blr); + } + END_FOR + + request2.reset(tdbb, irq_m_fields8, IRQ_REQUESTS); + + FOR(REQUEST_HANDLE request2) + RFL IN RDB$RELATION_FIELDS CROSS + DEP IN RDB$DEPENDENCIES CROSS + FUN IN RDB$FUNCTIONS + WITH RFL.RDB$FIELD_SOURCE EQ field_source->dsc_address AND + DEP.RDB$DEPENDED_ON_NAME EQ RFL.RDB$RELATION_NAME AND + DEP.RDB$FIELD_NAME EQ RFL.RDB$FIELD_NAME AND + DEP.RDB$DEPENDED_ON_TYPE EQ obj_relation AND + DEP.RDB$DEPENDENT_TYPE EQ obj_udf AND + DEP.RDB$DEPENDENT_NAME EQ FUN.RDB$FUNCTION_NAME AND + FUN.RDB$PACKAGE_NAME MISSING + { + MetaName name(FUN.RDB$FUNCTION_NAME); + + dsc desc; + desc.makeText(name.length(), CS_METADATA, (UCHAR*) name.c_str()); + + DeferredWork* dw2 = + DFW_post_work(transaction, dfw_modify_function, &desc, FUN.RDB$FUNCTION_ID); + DFW_post_work_arg(transaction, dw2, NULL, 0, dfw_arg_check_blr); + } + END_FOR } END_FOR @@ -900,59 +978,6 @@ } END_FOR - request.reset(tdbb, irq_m_fields4, IRQ_REQUESTS); - - FOR(REQUEST_HANDLE request) - RFL IN RDB$RELATION_FIELDS CROSS - DEP IN RDB$DEPENDENCIES CROSS - PRC IN RDB$PROCEDURES - WITH RFL.RDB$FIELD_SOURCE EQ field_source->dsc_address AND - DEP.RDB$DEPENDED_ON_NAME EQ RFL.RDB$RELATION_NAME AND - DEP.RDB$FIELD_NAME EQ RFL.RDB$FIELD_NAME AND - DEP.RDB$DEPENDED_ON_TYPE EQ obj_relation AND - DEP.RDB$DEPENDENT_TYPE EQ obj_procedure AND - DEP.RDB$DEPENDENT_NAME EQ PRC.RDB$PROCEDURE_NAME AND - PRC.RDB$PACKAGE_NAME MISSING - { - MetaName proc_name(PRC.RDB$PROCEDURE_NAME); - - dsc desc; - desc.makeText(proc_name.length(), CS_METADATA, (UCHAR*) proc_name.c_str()); - - DeferredWork* dw2 = - DFW_post_work(transaction, dfw_modify_procedure, &desc, PRC.RDB$PROCEDURE_ID); - DFW_post_work_arg(transaction, dw2, NULL, 0, dfw_arg_check_blr); - } - END_FOR - - request.reset(tdbb, irq_m_fields5, IRQ_REQUESTS); - - FOR(REQUEST_HANDLE request) - RFL IN RDB$RELATION_FIELDS CROSS - DEP IN RDB$DEPENDENCIES CROSS - TRG IN RDB$TRIGGERS - WITH RFL.RDB$FIELD_SOURCE EQ field_source->dsc_address AND - DEP.RDB$DEPENDED_ON_NAME EQ RFL.RDB$RELATION_NAME AND - DEP.RDB$FIELD_NAME EQ RFL.RDB$FIELD_NAME AND - DEP.RDB$DEPENDED_ON_TYPE EQ obj_relation AND - DEP.RDB$DEPENDENT_TYPE EQ obj_trigger AND - DEP.RDB$DEPENDENT_NAME EQ TRG.RDB$TRIGGER_NAME - { - MetaName trigger_name(TRG.RDB$TRIGGER_NAME); - MetaName trigger_relation_name(TRG.RDB$RELATION_NAME); - - dsc desc; - desc.makeText(trigger_name.length(), CS_METADATA, (UCHAR*) trigger_name.c_str()); - - DeferredWork* dw2 = DFW_post_work(transaction, dfw_modify_trigger, &desc, 0); - DFW_post_work_arg(transaction, dw2, NULL, TRG.RDB$TRIGGER_TYPE, dfw_arg_trg_type); - - desc.dsc_length = trigger_relation_name.length(); - desc.dsc_address = (UCHAR*) trigger_relation_name.c_str(); - DFW_post_work_arg(transaction, dw2, &desc, 0, dfw_arg_check_blr); - } - END_FOR - request.reset(tdbb, irq_m_fields7, IRQ_REQUESTS); FOR(REQUEST_HANDLE request) @@ -975,31 +1000,6 @@ } END_FOR - request.reset(tdbb, irq_m_fields8, IRQ_REQUESTS); - - FOR(REQUEST_HANDLE request) - RFL IN RDB$RELATION_FIELDS CROSS - DEP IN RDB$DEPENDENCIES CROSS - FUN IN RDB$FUNCTIONS - WITH RFL.RDB$FIELD_SOURCE EQ field_source->dsc_address AND - DEP.RDB$DEPENDED_ON_NAME EQ RFL.RDB$RELATION_NAME AND - DEP.RDB$FIELD_NAME EQ RFL.RDB$FIELD_NAME AND - DEP.RDB$DEPENDED_ON_TYPE EQ obj_relation AND - DEP.RDB$DEPENDENT_TYPE EQ obj_udf AND - DEP.RDB$DEPENDENT_NAME EQ FUN.RDB$FUNCTION_NAME AND - FUN.RDB$PACKAGE_NAME MISSING - { - MetaName name(FUN.RDB$FUNCTION_NAME); - - dsc desc; - desc.makeText(name.length(), CS_METADATA, (UCHAR*) name.c_str()); - - DeferredWork* dw2 = - DFW_post_work(transaction, dfw_modify_function, &desc, FUN.RDB$FUNCTION_ID); - DFW_post_work_arg(transaction, dw2, NULL, 0, dfw_arg_check_blr); - } - END_FOR - request.reset(tdbb, irq_m_fields9, IRQ_REQUESTS); FOR(REQUEST_HANDLE request) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <hv...@us...> - 2011-03-30 22:51:41
|
Revision: 52608 http://firebird.svn.sourceforge.net/firebird/?rev=52608&view=rev Author: hvlad Date: 2011-03-30 22:51:35 +0000 (Wed, 30 Mar 2011) Log Message: ----------- Fixed bug CORE-3418 : Inactive DB-trigger after Create/Alter Is Active Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2011-03-30 20:35:28 UTC (rev 52607) +++ firebird/trunk/src/jrd/met.epp 2011-03-30 22:51:35 UTC (rev 52608) @@ -1698,7 +1698,8 @@ FOR(REQUEST_HANDLE request) TRG IN RDB$TRIGGERS - WITH TRG.RDB$TRIGGER_NAME EQ trigger_name.c_str() + WITH TRG.RDB$TRIGGER_NAME EQ trigger_name.c_str() AND + TRG.RDB$TRIGGER_INACTIVE EQ 0 { // check if the trigger is to be fired without any permissions // checks. Verify such a claim This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <asf...@us...> - 2011-04-01 19:39:55
|
Revision: 52633 http://firebird.svn.sourceforge.net/firebird/?rev=52633&view=rev Author: asfernandes Date: 2011-04-01 19:39:49 +0000 (Fri, 01 Apr 2011) Log Message: ----------- Fix related to change done for CORE-3418. It brokes insertion of permission in just created database. Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2011-04-01 18:39:41 UTC (rev 52632) +++ firebird/trunk/src/jrd/met.epp 2011-04-01 19:39:49 UTC (rev 52633) @@ -1699,7 +1699,7 @@ FOR(REQUEST_HANDLE request) TRG IN RDB$TRIGGERS WITH TRG.RDB$TRIGGER_NAME EQ trigger_name.c_str() AND - TRG.RDB$TRIGGER_INACTIVE EQ 0 + (TRG.RDB$TRIGGER_INACTIVE MISSING OR TRG.RDB$TRIGGER_INACTIVE EQ 0) { // check if the trigger is to be fired without any permissions // checks. Verify such a claim This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <di...@us...> - 2011-05-12 08:45:33
|
Revision: 52927 http://firebird.svn.sourceforge.net/firebird/?rev=52927&view=rev Author: dimitr Date: 2011-05-12 08:45:27 +0000 (Thu, 12 May 2011) Log Message: ----------- Front-ported CORE-3314: Dependencies are not removed after dropping the procedure and the table it depends on in the same transaction. Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2011-05-12 08:34:58 UTC (rev 52926) +++ firebird/trunk/src/jrd/met.epp 2011-05-12 08:45:27 UTC (rev 52927) @@ -615,14 +615,6 @@ procedure->prc_int_use_count = 0; } } - - // Remove deallocated procedures from cache - for (ptr = procedures->begin(), end = procedures->end(); ptr < end; ptr++) - { - if ( (procedure = *ptr) && (procedure->prc_flags & PRC_obsolete) ) - MET_remove_procedure(tdbb, procedure->getId(), procedure); - } - } #ifdef DEV_BUILD MET_verify_cache(tdbb); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ale...@us...> - 2011-06-01 06:57:18
|
Revision: 53070 http://firebird.svn.sourceforge.net/firebird/?rev=53070&view=rev Author: alexpeshkoff Date: 2011-06-01 06:57:12 +0000 (Wed, 01 Jun 2011) Log Message: ----------- Misc Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2011-06-01 03:18:08 UTC (rev 53069) +++ firebird/trunk/src/jrd/met.epp 2011-06-01 06:57:12 UTC (rev 53070) @@ -117,7 +117,6 @@ static int partners_ast_relation(void*); static int rescan_ast_relation(void*); static ULONG get_rel_flags_from_FLAGS(USHORT); -static ULONG get_rel_flags_from_TYPE(USHORT); static void get_trigger(thread_db*, jrd_rel*, bid*, bid*, trig_vec**, const TEXT*, FB_UINT64, bool, USHORT, const MetaName&, const string&, const bid*); static bool get_type(thread_db*, USHORT*, const UCHAR*, const TEXT*); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <asf...@us...> - 2011-06-03 17:39:28
|
Revision: 53107 http://firebird.svn.sourceforge.net/firebird/?rev=53107&view=rev Author: asfernandes Date: 2011-06-03 17:39:22 +0000 (Fri, 03 Jun 2011) Log Message: ----------- Fix problem with database triggers. Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2011-06-03 17:08:42 UTC (rev 53106) +++ firebird/trunk/src/jrd/met.epp 2011-06-03 17:39:22 UTC (rev 53107) @@ -4835,7 +4835,8 @@ if (!vector) { - vector = FB_NEW(*relation->rel_pool) trig_vec(*relation->rel_pool); + MemoryPool* pool = relation ? relation->rel_pool : attachment->att_pool; + vector = FB_NEW(*pool) trig_vec(*pool); *ptr = vector; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2011-09-11 05:23:53
|
Revision: 53434 http://firebird.svn.sourceforge.net/firebird/?rev=53434&view=rev Author: robocop Date: 2011-09-11 05:23:47 +0000 (Sun, 11 Sep 2011) Log Message: ----------- Misc. Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2011-09-10 03:36:52 UTC (rev 53433) +++ firebird/trunk/src/jrd/met.epp 2011-09-11 05:23:47 UTC (rev 53434) @@ -4714,7 +4714,7 @@ Format* format = Format::newFormat(*tdbb->getDefaultPool(), count); USHORT padField; - bool shouldPad = csb->csb_message_pad.get(msgNumber, padField); + const bool shouldPad = csb->csb_message_pad.get(msgNumber, padField); USHORT maxAlignment = 0; ULONG offset = 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <asf...@us...> - 2014-02-11 14:52:34
|
Revision: 59118 http://sourceforge.net/p/firebird/code/59118 Author: asfernandes Date: 2014-02-11 14:52:32 +0000 (Tue, 11 Feb 2014) Log Message: ----------- Fixed CORE-4304 - Engine crashes when attempt to REcreate table with FK after syntax error before such recreating. Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2014-02-11 09:28:23 UTC (rev 59117) +++ firebird/trunk/src/jrd/met.epp 2014-02-11 14:52:32 UTC (rev 59118) @@ -2487,7 +2487,9 @@ IND.RDB$INDEX_NAME EQ IDX.RDB$FOREIGN_KEY AND IND.RDB$UNIQUE_FLAG = 1 { - const jrd_rel* partner_relation = MET_lookup_relation(tdbb, IND.RDB$RELATION_NAME); + //// ASF: Hack fix for CORE-4304, until nasty interactions between dfw and met are not resolved. + const jrd_rel* partner_relation = relation->rel_name == IND.RDB$RELATION_NAME ? + relation : MET_lookup_relation(tdbb, IND.RDB$RELATION_NAME); if (partner_relation && !IDX.RDB$INDEX_INACTIVE && !IND.RDB$INDEX_INACTIVE) { @@ -4809,7 +4811,9 @@ IND.RDB$INDEX_NAME EQ IDX.RDB$FOREIGN_KEY AND IND.RDB$UNIQUE_FLAG = 1 { - const jrd_rel* partner_relation = MET_lookup_relation(tdbb, IND.RDB$RELATION_NAME); + //// ASF: Hack fix for CORE-4304, until nasty interactions between dfw and met are not resolved. + const jrd_rel* partner_relation = relation->rel_name == IND.RDB$RELATION_NAME ? + relation : MET_lookup_relation(tdbb, IND.RDB$RELATION_NAME); if (partner_relation && !IDX.RDB$INDEX_INACTIVE && !IND.RDB$INDEX_INACTIVE) { @@ -4866,7 +4870,9 @@ IDX.RDB$RELATION_NAME EQ relation->rel_name.c_str() AND IND.RDB$FOREIGN_KEY EQ IDX.RDB$INDEX_NAME { - const jrd_rel* partner_relation = MET_lookup_relation(tdbb, IND.RDB$RELATION_NAME); + //// ASF: Hack fix for CORE-4304, until nasty interactions between dfw and met are not resolved. + const jrd_rel* partner_relation = relation->rel_name == IND.RDB$RELATION_NAME ? + relation : MET_lookup_relation(tdbb, IND.RDB$RELATION_NAME); if (partner_relation && !IDX.RDB$INDEX_INACTIVE && !IND.RDB$INDEX_INACTIVE) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <di...@us...> - 2014-12-17 07:41:18
|
Revision: 60375 http://sourceforge.net/p/firebird/code/60375 Author: dimitr Date: 2014-12-17 07:41:10 +0000 (Wed, 17 Dec 2014) Log Message: ----------- Fixed CORE-4472: Message "Modifying function <F> which is currently in use" when running script with AUTODDL=OFF and <F> is called from INTERNAL function declared in other unit. Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2014-12-16 20:48:38 UTC (rev 60374) +++ firebird/trunk/src/jrd/met.epp 2014-12-17 07:41:10 UTC (rev 60375) @@ -149,6 +149,14 @@ static void inc_int_use_count(JrdStatement* statement) { + // Handle sub-statements + for (JrdStatement** subStatement = statement->subStatements.begin(); + subStatement != statement->subStatements.end(); + ++subStatement) + { + inc_int_use_count(*subStatement); + } + // Increment int_use_count for all procedures in resource list of request ResourceList& list = statement->resources; FB_SIZE_T i; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ale...@us...> - 2015-07-09 17:32:45
|
Revision: 61959 http://sourceforge.net/p/firebird/code/61959 Author: alexpeshkoff Date: 2015-07-09 17:32:42 +0000 (Thu, 09 Jul 2015) Log Message: ----------- Explanation why this check is needed in both FB3 & 2.5 see in CORE-4869 Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2015-07-09 17:21:08 UTC (rev 61958) +++ firebird/trunk/src/jrd/met.epp 2015-07-09 17:32:42 UTC (rev 61959) @@ -766,7 +766,7 @@ { routine->releaseStatement(tdbb); - if (routine->existenceLock) //// TODO: verify why this IF is necessary now + if (routine->existenceLock) LCK_release(tdbb, routine->existenceLock); routine->existenceLock = NULL; routine->flags |= Routine::FLAG_OBSOLETE; @@ -792,7 +792,7 @@ { routine->releaseStatement(tdbb); - if (routine->existenceLock) //// TODO: verify why this IF is necessary now + if (routine->existenceLock) LCK_release(tdbb, routine->existenceLock); routine->existenceLock = NULL; routine->flags |= Routine::FLAG_OBSOLETE; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <asf...@us...> - 2016-02-03 15:22:38
|
Revision: 62922 http://sourceforge.net/p/firebird/code/62922 Author: asfernandes Date: 2016-02-03 15:22:36 +0000 (Wed, 03 Feb 2016) Log Message: ----------- Fixed CORE-5097 - COMPUTED-BY expressions are not converted to their field type inside the engine. Modified Paths: -------------- firebird/trunk/src/jrd/met.epp Modified: firebird/trunk/src/jrd/met.epp =================================================================== --- firebird/trunk/src/jrd/met.epp 2016-02-03 15:02:45 UTC (rev 62921) +++ firebird/trunk/src/jrd/met.epp 2016-02-03 15:22:36 UTC (rev 62922) @@ -3850,7 +3850,14 @@ field->fld_name, obj_computed, 0, depTrans) : PAR_blr(tdbb, relation, p, length, csb, NULL, NULL, false, 0); - field->fld_computation = static_cast<ValueExprNode*>(nod); + Format* format = MET_format(tdbb, relation, relation->rel_current_fmt); + + CastNode* cast = FB_NEW_POOL(*tdbb->getDefaultPool()) CastNode( + *tdbb->getDefaultPool()); + cast->source = static_cast<ValueExprNode*>(nod); + cast->castDesc = format->fmt_desc[field_id]; + + field->fld_computation = cast; } break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |