I was going through documentation about Operations That Don't Invoke Triggers and got confused with Cascading delete operations. Records that did not initiate a delete don't cause trigger evaluation statement.
In our org we use three level cascade delete in various places and never noticed this behavior. Triggers of all the three objects are evaluated every time.
In before trigger of every trigger, I do this:
public static void cleanupChildren(map<Id, Object1__c> mapOld) {
delete [Select Id FROM Object2__c WHERE Parent__c IN :mapOld.keySet()];
}
I can confirm that all the three triggers are evaluated when the delete operation was initiated by Object1__c. As per the documentation triggers of Object2__c and Object3__ should not be evaluated as they didn't initiate delete operation.
What am I missing here? Did I misinterpret the definition of Cascade deletion?