MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / Trigger

Method Trigger

src/jrd/ExtEngineManager.cpp:884–928  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

882
883
884ExtEngineManager::Trigger::Trigger(thread_db* tdbb, MemoryPool& pool, CompilerScratch* csb,
885 ExtEngineManager* aExtManager, IExternalEngine* aEngine, RoutineMetadata* aMetadata,
886 IExternalTrigger* aTrigger, const Jrd::Trigger* aTrg)
887 : ExtRoutine(tdbb, aExtManager, aEngine, aMetadata),
888 computedStatements(pool),
889 trigger(aTrigger),
890 trg(aTrg),
891 fieldsPos(pool),
892 varDecls(pool),
893 computedCount(0)
894{
895 jrd_rel* relation = trg->relation;
896
897 if (relation)
898 {
899 GenericMap<Left<MetaName, USHORT> > fieldsMap;
900
901 for (FB_SIZE_T i = 0; i < relation->rel_fields->count(); ++i)
902 {
903 jrd_fld* field = (*relation->rel_fields)[i];
904
905 if (field)
906 fieldsMap.put(field->fld_name, (USHORT) i);
907 }
908
909 format = Routine::createFormat(pool, metadata->triggerFields, false);
910
911 FbLocalStatus status;
912
913 for (unsigned i = 0; i < format->fmt_count / 2u; ++i)
914 {
915 const char* fieldName = metadata->triggerFields->getField(&status, i);
916 status.check();
917
918 USHORT pos;
919
920 if (!fieldsMap.get(fieldName, pos))
921 fb_assert(false);
922 else
923 fieldsPos.add(pos);
924 }
925
926 setupComputedFields(tdbb, pool, csb);
927 }
928}
929
930
931ExtEngineManager::Trigger::~Trigger()

Callers

nothing calls this directly

Calls 6

countMethod · 0.45
putMethod · 0.45
getFieldMethod · 0.45
checkMethod · 0.45
getMethod · 0.45
addMethod · 0.45

Tested by

no test coverage detected