26
26
#include "../jrd/SystemTriggers.h"
27
27
#include "../jrd/constants.h"
28
28
#include "../jrd/ids.h"
29
+ #include "../jrd/ini.h"
29
30
#include "../jrd/req.h"
30
31
#include "../jrd/dpm_proto.h"
31
32
#include "../jrd/err_proto.h"
@@ -41,7 +42,10 @@ using namespace Firebird;
41
42
using namespace Jrd;
42
43
43
44
44
- void SystemTriggers::beforeDeleteCheckConstraint(thread_db* tdbb, Record* record)
45
+ namespace
46
+ {
47
+
48
+ void beforeDeleteCheckConstraint(thread_db* tdbb, Record* record)
45
49
{
46
50
const auto transaction = tdbb->getTransaction();
47
51
@@ -62,7 +66,7 @@ void SystemTriggers::beforeDeleteCheckConstraint(thread_db* tdbb, Record* record
62
66
END_FOR
63
67
}
64
68
65
- void SystemTriggers:: afterDeleteCheckConstraint(thread_db* tdbb, Record* record)
69
+ void afterDeleteCheckConstraint(thread_db* tdbb, Record* record)
66
70
{
67
71
const auto transaction = tdbb->getTransaction();
68
72
dsc desc;
@@ -122,7 +126,7 @@ void SystemTriggers::afterDeleteCheckConstraint(thread_db* tdbb, Record* record)
122
126
END_FOR
123
127
}
124
128
125
- void SystemTriggers:: beforeUpdateCheckConstraint(thread_db* tdbb, Record* orgRecord, Record* newRecord)
129
+ void beforeUpdateCheckConstraint(thread_db* tdbb, Record* orgRecord, Record* newRecord)
126
130
{
127
131
const auto transaction = tdbb->getTransaction();
128
132
@@ -144,7 +148,7 @@ void SystemTriggers::beforeUpdateCheckConstraint(thread_db* tdbb, Record* orgRec
144
148
END_FOR
145
149
}
146
150
147
- void SystemTriggers:: beforeDeleteIndex(thread_db* tdbb, Record* record)
151
+ void beforeDeleteIndex(thread_db* tdbb, Record* record)
148
152
{
149
153
const auto transaction = tdbb->getTransaction();
150
154
@@ -165,7 +169,7 @@ void SystemTriggers::beforeDeleteIndex(thread_db* tdbb, Record* record)
165
169
END_FOR
166
170
}
167
171
168
- void SystemTriggers:: beforeUpdateIndex(thread_db* tdbb, Record* orgRecord, Record* newRecord)
172
+ void beforeUpdateIndex(thread_db* tdbb, Record* orgRecord, Record* newRecord)
169
173
{
170
174
const auto transaction = tdbb->getTransaction();
171
175
@@ -267,7 +271,7 @@ void SystemTriggers::beforeUpdateIndex(thread_db* tdbb, Record* orgRecord, Recor
267
271
}
268
272
}
269
273
270
- void SystemTriggers:: beforeDeleteIndexSegment(thread_db* tdbb, Record* record)
274
+ void beforeDeleteIndexSegment(thread_db* tdbb, Record* record)
271
275
{
272
276
const auto transaction = tdbb->getTransaction();
273
277
@@ -288,7 +292,7 @@ void SystemTriggers::beforeDeleteIndexSegment(thread_db* tdbb, Record* record)
288
292
END_FOR
289
293
}
290
294
291
- void SystemTriggers:: beforeUpdateIndexSegment(thread_db* tdbb, Record* orgRecord, Record* newRecord)
295
+ void beforeUpdateIndexSegment(thread_db* tdbb, Record* orgRecord, Record* newRecord)
292
296
{
293
297
const auto transaction = tdbb->getTransaction();
294
298
@@ -334,7 +338,7 @@ void SystemTriggers::beforeUpdateIndexSegment(thread_db* tdbb, Record* orgRecord
334
338
END_FOR
335
339
}
336
340
337
- void SystemTriggers:: beforeUpdateField(thread_db* tdbb, Record* orgRecord, Record* newRecord)
341
+ void beforeUpdateField(thread_db* tdbb, Record* orgRecord, Record* newRecord)
338
342
{
339
343
const auto transaction = tdbb->getTransaction();
340
344
@@ -397,7 +401,7 @@ void SystemTriggers::beforeUpdateField(thread_db* tdbb, Record* orgRecord, Recor
397
401
}
398
402
}
399
403
400
- void SystemTriggers:: beforeInsertRefConstraint(thread_db* tdbb, Record* record)
404
+ void beforeInsertRefConstraint(thread_db* tdbb, Record* record)
401
405
{
402
406
const auto transaction = tdbb->getTransaction();
403
407
@@ -444,7 +448,7 @@ void SystemTriggers::beforeInsertRefConstraint(thread_db* tdbb, Record* record)
444
448
ERR_post(Arg::Gds(isc_foreign_key_notfound));
445
449
}
446
450
447
- void SystemTriggers:: beforeDeleteRelationConstraint(thread_db* tdbb, Record* record)
451
+ void beforeDeleteRelationConstraint(thread_db* tdbb, Record* record)
448
452
{
449
453
const auto transaction = tdbb->getTransaction();
450
454
dsc desc;
@@ -525,7 +529,7 @@ void SystemTriggers::beforeDeleteRelationConstraint(thread_db* tdbb, Record* rec
525
529
}
526
530
}
527
531
528
- void SystemTriggers:: afterDeleteRelationConstraint(thread_db* tdbb, Record* record)
532
+ void afterDeleteRelationConstraint(thread_db* tdbb, Record* record)
529
533
{
530
534
const auto transaction = tdbb->getTransaction();
531
535
dsc desc;
@@ -649,7 +653,7 @@ void SystemTriggers::afterDeleteRelationConstraint(thread_db* tdbb, Record* reco
649
653
}
650
654
}
651
655
652
- void SystemTriggers:: beforeInsertRelationConstraint(thread_db* tdbb, Record* record)
656
+ void beforeInsertRelationConstraint(thread_db* tdbb, Record* record)
653
657
{
654
658
const auto transaction = tdbb->getTransaction();
655
659
dsc desc;
@@ -693,7 +697,7 @@ void SystemTriggers::beforeInsertRelationConstraint(thread_db* tdbb, Record* rec
693
697
}
694
698
}
695
699
696
- void SystemTriggers:: beforeDeleteRelationField(thread_db* tdbb, Record* record)
700
+ void beforeDeleteRelationField(thread_db* tdbb, Record* record)
697
701
{
698
702
const auto transaction = tdbb->getTransaction();
699
703
dsc desc;
@@ -772,7 +776,7 @@ void SystemTriggers::beforeDeleteRelationField(thread_db* tdbb, Record* record)
772
776
END_FOR
773
777
}
774
778
775
- void SystemTriggers:: afterDeleteRelationField(thread_db* tdbb, Record* record)
779
+ void afterDeleteRelationField(thread_db* tdbb, Record* record)
776
780
{
777
781
const auto transaction = tdbb->getTransaction();
778
782
dsc desc;
@@ -804,7 +808,7 @@ void SystemTriggers::afterDeleteRelationField(thread_db* tdbb, Record* record)
804
808
END_FOR
805
809
}
806
810
807
- void SystemTriggers:: beforeUpdateRelationField(thread_db* tdbb, Record* orgRecord, Record* newRecord)
811
+ void beforeUpdateRelationField(thread_db* tdbb, Record* orgRecord, Record* newRecord)
808
812
{
809
813
const auto transaction = tdbb->getTransaction();
810
814
@@ -860,7 +864,7 @@ void SystemTriggers::beforeUpdateRelationField(thread_db* tdbb, Record* orgRecor
860
864
}
861
865
}
862
866
863
- void SystemTriggers:: beforeDeleteTrigger(thread_db* tdbb, Record* record)
867
+ void beforeDeleteTrigger(thread_db* tdbb, Record* record)
864
868
{
865
869
const auto transaction = tdbb->getTransaction();
866
870
dsc desc;
@@ -887,7 +891,7 @@ void SystemTriggers::beforeDeleteTrigger(thread_db* tdbb, Record* record)
887
891
END_FOR
888
892
}
889
893
890
- void SystemTriggers:: beforeUpdateTrigger(thread_db* tdbb, Record* orgRecord, Record* newRecord)
894
+ void beforeUpdateTrigger(thread_db* tdbb, Record* orgRecord, Record* newRecord)
891
895
{
892
896
const auto transaction = tdbb->getTransaction();
893
897
dsc desc;
@@ -961,7 +965,7 @@ void SystemTriggers::beforeUpdateTrigger(thread_db* tdbb, Record* orgRecord, Rec
961
965
END_FOR
962
966
}
963
967
964
- void SystemTriggers:: beforeDeleteUserPrivilege(thread_db* tdbb, Record* record)
968
+ void beforeDeleteUserPrivilege(thread_db* tdbb, Record* record)
965
969
{
966
970
const auto transaction = tdbb->getTransaction();
967
971
dsc desc;
@@ -998,7 +1002,7 @@ void SystemTriggers::beforeDeleteUserPrivilege(thread_db* tdbb, Record* record)
998
1002
END_FOR
999
1003
}
1000
1004
1001
- void SystemTriggers:: beforeInsertUserPrivilege(thread_db* tdbb, Record* record)
1005
+ void beforeInsertUserPrivilege(thread_db* tdbb, Record* record)
1002
1006
{
1003
1007
const auto attachment = tdbb->getAttachment();
1004
1008
const auto transaction = tdbb->getTransaction();
@@ -1273,3 +1277,106 @@ void SystemTriggers::beforeInsertUserPrivilege(thread_db* tdbb, Record* record)
1273
1277
}
1274
1278
}
1275
1279
}
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