Caching on execution_plan doesn't seem to pay back. The execution_plan will have failed? method in future. For now, I will go with your original suggestion