PostgreSQL Source Code git master
Loading...
Searching...
No Matches
execAsync.h File Reference
#include "nodes/execnodes.h"
Include dependency graph for execAsync.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void ExecAsyncRequest (AsyncRequest *areq)
 
void ExecAsyncConfigureWait (AsyncRequest *areq)
 
void ExecAsyncNotify (AsyncRequest *areq)
 
void ExecAsyncResponse (AsyncRequest *areq)
 
void ExecAsyncRequestDone (AsyncRequest *areq, TupleTableSlot *result)
 
void ExecAsyncRequestPending (AsyncRequest *areq)
 

Function Documentation

◆ ExecAsyncConfigureWait()

void ExecAsyncConfigureWait ( AsyncRequest areq)
extern

Definition at line 62 of file execAsync.c.

63{
64 /* must provide our own instrumentation support */
65 if (areq->requestee->instrument)
66 InstrStartNode(areq->requestee->instrument);
67
68 switch (nodeTag(areq->requestee))
69 {
72 break;
73 default:
74 /* If the node doesn't support async, caller messed up. */
75 elog(ERROR, "unrecognized node type: %d",
76 (int) nodeTag(areq->requestee));
77 }
78
79 /* must provide our own instrumentation support */
80 if (areq->requestee->instrument)
81 InstrStopNode(areq->requestee->instrument, 0.0);
82}
#define ERROR
Definition elog.h:39
#define elog(elevel,...)
Definition elog.h:226
void InstrStartNode(Instrumentation *instr)
Definition instrument.c:68
void InstrStopNode(Instrumentation *instr, double nTuples)
Definition instrument.c:84
void ExecAsyncForeignScanConfigureWait(AsyncRequest *areq)
#define nodeTag(nodeptr)
Definition nodes.h:139
static int fb(int x)

References elog, ERROR, ExecAsyncForeignScanConfigureWait(), fb(), InstrStartNode(), InstrStopNode(), and nodeTag.

Referenced by ExecAppendAsyncEventWait().

◆ ExecAsyncNotify()

void ExecAsyncNotify ( AsyncRequest areq)
extern

Definition at line 88 of file execAsync.c.

89{
90 /* must provide our own instrumentation support */
91 if (areq->requestee->instrument)
92 InstrStartNode(areq->requestee->instrument);
93
94 switch (nodeTag(areq->requestee))
95 {
98 break;
99 default:
100 /* If the node doesn't support async, caller messed up. */
101 elog(ERROR, "unrecognized node type: %d",
102 (int) nodeTag(areq->requestee));
103 }
104
106
107 /* must provide our own instrumentation support */
108 if (areq->requestee->instrument)
109 InstrStopNode(areq->requestee->instrument,
110 TupIsNull(areq->result) ? 0.0 : 1.0);
111}
void ExecAsyncResponse(AsyncRequest *areq)
Definition execAsync.c:117
void ExecAsyncForeignScanNotify(AsyncRequest *areq)
#define TupIsNull(slot)
Definition tuptable.h:309

References elog, ERROR, ExecAsyncForeignScanNotify(), ExecAsyncResponse(), fb(), InstrStartNode(), InstrStopNode(), nodeTag, and TupIsNull.

Referenced by ExecAppendAsyncEventWait().

◆ ExecAsyncRequest()

void ExecAsyncRequest ( AsyncRequest areq)
extern

Definition at line 26 of file execAsync.c.

27{
28 if (areq->requestee->chgParam != NULL) /* something changed? */
29 ExecReScan(areq->requestee); /* let ReScan handle this */
30
31 /* must provide our own instrumentation support */
32 if (areq->requestee->instrument)
33 InstrStartNode(areq->requestee->instrument);
34
35 switch (nodeTag(areq->requestee))
36 {
39 break;
40 default:
41 /* If the node doesn't support async, caller messed up. */
42 elog(ERROR, "unrecognized node type: %d",
43 (int) nodeTag(areq->requestee));
44 }
45
47
48 /* must provide our own instrumentation support */
49 if (areq->requestee->instrument)
50 InstrStopNode(areq->requestee->instrument,
51 TupIsNull(areq->result) ? 0.0 : 1.0);
52}
void ExecReScan(PlanState *node)
Definition execAmi.c:77
void ExecAsyncForeignScanRequest(AsyncRequest *areq)

References elog, ERROR, ExecAsyncForeignScanRequest(), ExecAsyncResponse(), ExecReScan(), fb(), InstrStartNode(), InstrStopNode(), nodeTag, and TupIsNull.

Referenced by ExecAppendAsyncBegin(), and ExecAppendAsyncRequest().

◆ ExecAsyncRequestDone()

void ExecAsyncRequestDone ( AsyncRequest areq,
TupleTableSlot result 
)
extern

Definition at line 137 of file execAsync.c.

138{
139 areq->request_complete = true;
140 areq->result = result;
141}

References fb().

Referenced by process_pending_request(), and produce_tuple_asynchronously().

◆ ExecAsyncRequestPending()

void ExecAsyncRequestPending ( AsyncRequest areq)
extern

Definition at line 149 of file execAsync.c.

150{
151 areq->callback_pending = true;
152 areq->request_complete = false;
153 areq->result = NULL;
154}

References fb().

Referenced by produce_tuple_asynchronously().

◆ ExecAsyncResponse()

void ExecAsyncResponse ( AsyncRequest areq)
extern

Definition at line 117 of file execAsync.c.

118{
119 switch (nodeTag(areq->requestor))
120 {
121 case T_AppendState:
123 break;
124 default:
125 /* If the node doesn't support async, caller messed up. */
126 elog(ERROR, "unrecognized node type: %d",
127 (int) nodeTag(areq->requestor));
128 }
129}
void ExecAsyncAppendResponse(AsyncRequest *areq)

References elog, ERROR, ExecAsyncAppendResponse(), fb(), and nodeTag.

Referenced by complete_pending_request(), ExecAsyncNotify(), ExecAsyncRequest(), and process_pending_request().