Optimizing dataflow execution – push-down techniques