2626#include "../jrd/SystemTriggers.h"
2727#include "../jrd/constants.h"
2828#include "../jrd/ids.h"
29+ #include "../jrd/ini.h"
2930#include "../jrd/req.h"
3031#include "../jrd/dpm_proto.h"
3132#include "../jrd/err_proto.h"
@@ -41,7 +42,10 @@ using namespace Firebird;
4142using namespace Jrd;
4243
4344
44- void SystemTriggers::beforeDeleteCheckConstraint(thread_db* tdbb, Record* record)
45+ namespace
46+ {
47+
48+ void beforeDeleteCheckConstraint(thread_db* tdbb, Record* record)
4549{
4650 const auto transaction = tdbb->getTransaction();
4751
@@ -62,7 +66,7 @@ void SystemTriggers::beforeDeleteCheckConstraint(thread_db* tdbb, Record* record
6266 END_FOR
6367}
6468
65- void SystemTriggers:: afterDeleteCheckConstraint(thread_db* tdbb, Record* record)
69+ void afterDeleteCheckConstraint(thread_db* tdbb, Record* record)
6670{
6771 const auto transaction = tdbb->getTransaction();
6872 dsc desc;
@@ -122,7 +126,7 @@ void SystemTriggers::afterDeleteCheckConstraint(thread_db* tdbb, Record* record)
122126 END_FOR
123127}
124128
125- void SystemTriggers:: beforeUpdateCheckConstraint(thread_db* tdbb, Record* orgRecord, Record* newRecord)
129+ void beforeUpdateCheckConstraint(thread_db* tdbb, Record* orgRecord, Record* newRecord)
126130{
127131 const auto transaction = tdbb->getTransaction();
128132
@@ -144,7 +148,7 @@ void SystemTriggers::beforeUpdateCheckConstraint(thread_db* tdbb, Record* orgRec
144148 END_FOR
145149}
146150
147- void SystemTriggers:: beforeDeleteIndex(thread_db* tdbb, Record* record)
151+ void beforeDeleteIndex(thread_db* tdbb, Record* record)
148152{
149153 const auto transaction = tdbb->getTransaction();
150154
@@ -165,7 +169,7 @@ void SystemTriggers::beforeDeleteIndex(thread_db* tdbb, Record* record)
165169 END_FOR
166170}
167171
168- void SystemTriggers:: beforeUpdateIndex(thread_db* tdbb, Record* orgRecord, Record* newRecord)
172+ void beforeUpdateIndex(thread_db* tdbb, Record* orgRecord, Record* newRecord)
169173{
170174 const auto transaction = tdbb->getTransaction();
171175
@@ -267,7 +271,7 @@ void SystemTriggers::beforeUpdateIndex(thread_db* tdbb, Record* orgRecord, Recor
267271 }
268272}
269273
270- void SystemTriggers:: beforeDeleteIndexSegment(thread_db* tdbb, Record* record)
274+ void beforeDeleteIndexSegment(thread_db* tdbb, Record* record)
271275{
272276 const auto transaction = tdbb->getTransaction();
273277
@@ -288,7 +292,7 @@ void SystemTriggers::beforeDeleteIndexSegment(thread_db* tdbb, Record* record)
288292 END_FOR
289293}
290294
291- void SystemTriggers:: beforeUpdateIndexSegment(thread_db* tdbb, Record* orgRecord, Record* newRecord)
295+ void beforeUpdateIndexSegment(thread_db* tdbb, Record* orgRecord, Record* newRecord)
292296{
293297 const auto transaction = tdbb->getTransaction();
294298
@@ -334,7 +338,7 @@ void SystemTriggers::beforeUpdateIndexSegment(thread_db* tdbb, Record* orgRecord
334338 END_FOR
335339}
336340
337- void SystemTriggers:: beforeUpdateField(thread_db* tdbb, Record* orgRecord, Record* newRecord)
341+ void beforeUpdateField(thread_db* tdbb, Record* orgRecord, Record* newRecord)
338342{
339343 const auto transaction = tdbb->getTransaction();
340344
@@ -397,7 +401,7 @@ void SystemTriggers::beforeUpdateField(thread_db* tdbb, Record* orgRecord, Recor
397401 }
398402}
399403
400- void SystemTriggers:: beforeInsertRefConstraint(thread_db* tdbb, Record* record)
404+ void beforeInsertRefConstraint(thread_db* tdbb, Record* record)
401405{
402406 const auto transaction = tdbb->getTransaction();
403407
@@ -444,7 +448,7 @@ void SystemTriggers::beforeInsertRefConstraint(thread_db* tdbb, Record* record)
444448 ERR_post(Arg::Gds(isc_foreign_key_notfound));
445449}
446450
447- void SystemTriggers:: beforeDeleteRelationConstraint(thread_db* tdbb, Record* record)
451+ void beforeDeleteRelationConstraint(thread_db* tdbb, Record* record)
448452{
449453 const auto transaction = tdbb->getTransaction();
450454 dsc desc;
@@ -525,7 +529,7 @@ void SystemTriggers::beforeDeleteRelationConstraint(thread_db* tdbb, Record* rec
525529 }
526530}
527531
528- void SystemTriggers:: afterDeleteRelationConstraint(thread_db* tdbb, Record* record)
532+ void afterDeleteRelationConstraint(thread_db* tdbb, Record* record)
529533{
530534 const auto transaction = tdbb->getTransaction();
531535 dsc desc;
@@ -649,7 +653,7 @@ void SystemTriggers::afterDeleteRelationConstraint(thread_db* tdbb, Record* reco
649653 }
650654}
651655
652- void SystemTriggers:: beforeInsertRelationConstraint(thread_db* tdbb, Record* record)
656+ void beforeInsertRelationConstraint(thread_db* tdbb, Record* record)
653657{
654658 const auto transaction = tdbb->getTransaction();
655659 dsc desc;
@@ -693,7 +697,7 @@ void SystemTriggers::beforeInsertRelationConstraint(thread_db* tdbb, Record* rec
693697 }
694698}
695699
696- void SystemTriggers:: beforeDeleteRelationField(thread_db* tdbb, Record* record)
700+ void beforeDeleteRelationField(thread_db* tdbb, Record* record)
697701{
698702 const auto transaction = tdbb->getTransaction();
699703 dsc desc;
@@ -772,7 +776,7 @@ void SystemTriggers::beforeDeleteRelationField(thread_db* tdbb, Record* record)
772776 END_FOR
773777}
774778
775- void SystemTriggers:: afterDeleteRelationField(thread_db* tdbb, Record* record)
779+ void afterDeleteRelationField(thread_db* tdbb, Record* record)
776780{
777781 const auto transaction = tdbb->getTransaction();
778782 dsc desc;
@@ -804,7 +808,7 @@ void SystemTriggers::afterDeleteRelationField(thread_db* tdbb, Record* record)
804808 END_FOR
805809}
806810
807- void SystemTriggers:: beforeUpdateRelationField(thread_db* tdbb, Record* orgRecord, Record* newRecord)
811+ void beforeUpdateRelationField(thread_db* tdbb, Record* orgRecord, Record* newRecord)
808812{
809813 const auto transaction = tdbb->getTransaction();
810814
@@ -860,7 +864,7 @@ void SystemTriggers::beforeUpdateRelationField(thread_db* tdbb, Record* orgRecor
860864 }
861865}
862866
863- void SystemTriggers:: beforeDeleteTrigger(thread_db* tdbb, Record* record)
867+ void beforeDeleteTrigger(thread_db* tdbb, Record* record)
864868{
865869 const auto transaction = tdbb->getTransaction();
866870 dsc desc;
@@ -887,7 +891,7 @@ void SystemTriggers::beforeDeleteTrigger(thread_db* tdbb, Record* record)
887891 END_FOR
888892}
889893
890- void SystemTriggers:: beforeUpdateTrigger(thread_db* tdbb, Record* orgRecord, Record* newRecord)
894+ void beforeUpdateTrigger(thread_db* tdbb, Record* orgRecord, Record* newRecord)
891895{
892896 const auto transaction = tdbb->getTransaction();
893897 dsc desc;
@@ -961,7 +965,7 @@ void SystemTriggers::beforeUpdateTrigger(thread_db* tdbb, Record* orgRecord, Rec
961965 END_FOR
962966}
963967
964- void SystemTriggers:: beforeDeleteUserPrivilege(thread_db* tdbb, Record* record)
968+ void beforeDeleteUserPrivilege(thread_db* tdbb, Record* record)
965969{
966970 const auto transaction = tdbb->getTransaction();
967971 dsc desc;
@@ -998,7 +1002,7 @@ void SystemTriggers::beforeDeleteUserPrivilege(thread_db* tdbb, Record* record)
9981002 END_FOR
9991003}
10001004
1001- void SystemTriggers:: beforeInsertUserPrivilege(thread_db* tdbb, Record* record)
1005+ void beforeInsertUserPrivilege(thread_db* tdbb, Record* record)
10021006{
10031007 const auto attachment = tdbb->getAttachment();
10041008 const auto transaction = tdbb->getTransaction();
@@ -1273,3 +1277,106 @@ void SystemTriggers::beforeInsertUserPrivilege(thread_db* tdbb, Record* record)
12731277 }
12741278 }
12751279}
1280+
1281+ } // anonymous
1282+
1283+
1284+ void SystemTriggers::executeBeforeDeleteTriggers(thread_db* tdbb, jrd_rel* relation, Record* record)
1285+ {
1286+ switch ((RIDS) relation->rel_id)
1287+ {
1288+ case rel_ccon:
1289+ beforeDeleteCheckConstraint(tdbb, record);
1290+ break;
1291+
1292+ case rel_indices:
1293+ beforeDeleteIndex(tdbb, record);
1294+ break;
1295+
1296+ case rel_priv:
1297+ beforeDeleteUserPrivilege(tdbb, record);
1298+ break;
1299+
1300+ case rel_rcon:
1301+ beforeDeleteRelationConstraint(tdbb, record);
1302+ break;
1303+
1304+ case rel_rfr:
1305+ beforeDeleteRelationField(tdbb, record);
1306+ break;
1307+
1308+ case rel_segments:
1309+ beforeDeleteIndexSegment(tdbb, record);
1310+ break;
1311+
1312+ case rel_triggers:
1313+ beforeDeleteTrigger(tdbb, record);
1314+ break;
1315+ }
1316+ }
1317+
1318+ void SystemTriggers::executeAfterDeleteTriggers(thread_db* tdbb, jrd_rel* relation, Record* record)
1319+ {
1320+ switch ((RIDS) relation->rel_id)
1321+ {
1322+ case rel_ccon:
1323+ afterDeleteCheckConstraint(tdbb, record);
1324+ break;
1325+
1326+ case rel_rcon:
1327+ afterDeleteRelationConstraint(tdbb, record);
1328+ break;
1329+
1330+ case rel_rfr:
1331+ afterDeleteRelationField(tdbb, record);
1332+ break;
1333+ }
1334+ }
1335+
1336+ void SystemTriggers::executeBeforeInsertTriggers(thread_db* tdbb, jrd_rel* relation, Record* record)
1337+ {
1338+ switch ((RIDS) relation->rel_id)
1339+ {
1340+ case rel_priv:
1341+ beforeInsertUserPrivilege(tdbb, record);
1342+ break;
1343+
1344+ case rel_rcon:
1345+ beforeInsertRelationConstraint(tdbb, record);
1346+ break;
1347+
1348+ case rel_refc:
1349+ beforeInsertRefConstraint(tdbb, record);
1350+ break;
1351+ }
1352+ }
1353+
1354+ void SystemTriggers::executeBeforeUpdateTriggers(thread_db* tdbb, jrd_rel* relation, Record* orgRecord, Record* newRecord)
1355+ {
1356+ switch ((RIDS) relation->rel_id)
1357+ {
1358+ case rel_ccon:
1359+ beforeUpdateCheckConstraint(tdbb, orgRecord, newRecord);
1360+ break;
1361+
1362+ case rel_fields:
1363+ beforeUpdateField(tdbb, orgRecord, newRecord);
1364+ break;
1365+
1366+ case rel_indices:
1367+ beforeUpdateIndex(tdbb, orgRecord, newRecord);
1368+ break;
1369+
1370+ case rel_rfr:
1371+ beforeUpdateRelationField(tdbb, orgRecord, newRecord);
1372+ break;
1373+
1374+ case rel_segments:
1375+ beforeUpdateIndexSegment(tdbb, orgRecord, newRecord);
1376+ break;
1377+
1378+ case rel_triggers:
1379+ beforeUpdateTrigger(tdbb, orgRecord, newRecord);
1380+ break;
1381+ }
1382+ }
0 commit comments