mirror of
https://github.com/postgres/postgres.git
synced 2025-07-30 11:03:19 +03:00
Allow custom and foreign scans to have shutdown callbacks.
This is expected to be useful mostly when performing such scans in
parallel, because in that case it allows (in combination with commit
acf555bc53
) nodes below a Gather to get
control just before the DSM segment goes away.
KaiGai Kohei, except that I rewrote the documentation. Reviewed by
Claudio Freire.
Discussion: http://postgr.es/m/CADyhKSXJK0jUJ8rWv4AmKDhsUh124_rEn39eqgfC5D8fu6xVuw@mail.gmail.com
This commit is contained in:
@ -340,6 +340,19 @@ void (*InitializeWorkerCustomScan) (CustomScanState *node,
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
void (*ShutdownCustomScan) (CustomScanState *node);
|
||||
</programlisting>
|
||||
Release resources when it is anticipated the node will not be executed
|
||||
to completion. This is not called in all cases; sometimes,
|
||||
<literal>EndCustomScan</> may be called without this function having
|
||||
been called first. Since the DSM segment used by parallel query is
|
||||
destroyed just after this callback is invoked, custom scan providers that
|
||||
wish to take some action before the DSM segment goes away should implement
|
||||
this method.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
void (*ExplainCustomScan) (CustomScanState *node,
|
||||
List *ancestors,
|
||||
ExplainState *es);
|
||||
|
@ -1254,6 +1254,20 @@ InitializeWorkerForeignScan(ForeignScanState *node, shm_toc *toc,
|
||||
This callback is optional, and needs only be supplied if this
|
||||
custom path supports parallel execution.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<programlisting>
|
||||
void
|
||||
ShutdownForeignScan(ForeignScanState *node);
|
||||
</programlisting>
|
||||
Release resources when it is anticipated the node will not be executed
|
||||
to completion. This is not called in all cases; sometimes,
|
||||
<literal>EndForeignScan</> may be called without this function having
|
||||
been called first. Since the DSM segment used by parallel query is
|
||||
destroyed just after this callback is invoked, foreign data wrappers that
|
||||
wish to take some action before the DSM segment goes away should implement
|
||||
this method.
|
||||
</para>
|
||||
</sect2>
|
||||
|
||||
</sect1>
|
||||
|
Reference in New Issue
Block a user