A custom scan provider will typically add paths for a base relation by
setting the following hook, which is called after the core code has
generated all the access paths it can for the relation (except for
- Gather paths, which are made after this call so that they can use
- partial paths added by the hook):
+ Gather and Gather Merge paths, which are made after this call so that
+ they can use partial paths added by the hook):
typedef void (*set_rel_pathlist_hook_type) (PlannerInfo *root,
RelOptInfo *rel,
Although this hook function can be used to examine, modify, or remove
paths generated by the core system, a custom scan provider will typically
confine itself to generating CustomPath objects and adding
- them to rel using add_path. The custom scan
- provider is responsible for initializing the CustomPath
- object, which is declared like this:
+ them to rel using add_path, or
+ add_partial_path if they are partial paths. The
+ custom scan provider is responsible for initializing the
+ CustomPath object, which is declared like this:
typedef struct CustomPath
{