Doc: Improve documentation for creating custom scan paths.

This improves the documentation related to parallel query a little bit.

Reviewed by Richard Guo.

Discussion: https://postgr.es/m/CAPmGK159eJShAR4ek4Db8oHD4%2BZ18zwJkisEWkqRN-80BdDGFQ%40mail.gmail.com
This commit is contained in:
Etsuro Fujita 2023-08-30 17:45:00 +09:00
parent 05c821294e
commit 7ef5f5fb32

View File

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