/* * Creates a new workfile in a given set * * The next file name in the sequence is generated */ ExecWorkFile * workfile_mgr_create_file(workfile_set *work_set) { Assert(NULL != work_set); work_set->no_files++; return workfile_mgr_create_fileno(work_set, work_set->no_files); }
/* * Save the serialized plan to a file in the workfile set. * It will be used to do full plan matching before reusing. */ static void workfile_mgr_save_plan(workfile_set *work_set, workfile_set_plan *sf_plan) { Assert(work_set); Assert(sf_plan); ExecWorkFile *plan_file = workfile_mgr_create_fileno(work_set, WORKFILE_NUM_ALL_PLAN); insist_log(plan_file != NULL, "Could not create temporary work file: %m"); elog(gp_workfile_caching_loglevel, "Saving query plan to file %s", ExecWorkFile_GetFileName(plan_file)); bool res = ExecWorkFile_Write(plan_file, sf_plan->serialized_plan, sf_plan->serialized_plan_len); if(!res) { workfile_mgr_report_error(); } workfile_mgr_close_file(work_set, plan_file); }