@@ -83,7 +83,7 @@ typedef struct CustomPath
83
83
by <literal>nodeToString</literal>, so that debugging routines that attempt to
84
84
print the custom path will work as designed. <structfield>methods</structfield> must
85
85
point to a (usually statically allocated) object implementing the required
86
- custom path methods, of which there is currently only one .
86
+ custom path methods, which are further detailed below .
87
87
</para>
88
88
89
89
<para>
@@ -123,6 +123,23 @@ Plan *(*PlanCustomPath) (PlannerInfo *root,
123
123
be a <literal>CustomScan</literal> object, which the callback must allocate and
124
124
initialize. See <xref linkend="custom-scan-plan"/> for more details.
125
125
</para>
126
+
127
+ <para>
128
+ <programlisting>
129
+ List *(*ReparameterizeCustomPathByChild) (PlannerInfo *root,
130
+ List *custom_private,
131
+ RelOptInfo *child_rel);
132
+ </programlisting>
133
+ This callback is called while converting a path parameterized by the
134
+ top-most parent of the given child relation <literal>child_rel</literal>
135
+ to be parameterized by the child relation. The callback is used to
136
+ reparameterize any paths or translate any expression nodes saved in the
137
+ given <literal>custom_private</literal> member of a
138
+ <structname>CustomPath</structname>. The callback may use
139
+ <literal>reparameterize_path_by_child</literal>,
140
+ <literal>adjust_appendrel_attrs</literal> or
141
+ <literal>adjust_appendrel_attrs_multilevel</literal> as required.
142
+ </para>
126
143
</sect2>
127
144
</sect1>
128
145
0 commit comments