We need to make sure that there is a sane query and fragment Close() path on the query and fragments, i.e. we shouldn't be relying on destructors, shared/scoped_ptrs. The worst offenders are the coordinator and fragment management classes, e.g. PlanFragmentExecutor, FragmentExecState, QueryExecState, Coordinator. At the same time, we should make sure that all ExecNodes, sinks, and other backend classes used for query execution have all cleanup logic in Close() methods. In some cases, Close() methods will need to be added.