PostgreSQL Source Code: src/backend/executor/nodeUnique.c Source File (original) (raw)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
35
39
40
41
42
43
44
47{
53
55
56
57
58
61
62
63
64
65
66
67 for (;;)
68 {
69
70
71
74 {
75
77 return NULL;
78 }
79
80
81
82
84 break;
85
86
87
88
89
90
94 break;
95 }
96
97
98
99
100
101
102
104}
105
106
107
108
109
110
111
112
115{
117
118
120
121
122
123
125 uniquestate->ps.plan = (Plan *) node;
126 uniquestate->ps.state = estate;
128
129
130
131
133
134
135
136
138
139
140
141
142
145
146
147
148
152 node->uniqColIdx,
153 node->uniqOperators,
154 node->uniqCollations,
155 &uniquestate->ps);
156
157 return uniquestate;
158}
159
160
161
162
163
164
165
166
167void
169{
171}
172
173
174void
176{
178
179
181
182
183
184
185
188}
void ExecReScan(PlanState *node)
ExprState * execTuplesMatchPrepare(TupleDesc desc, int numCols, const AttrNumber *keyColIdx, const Oid *eqOperators, const Oid *collations, PlanState *parent)
void ExecEndNode(PlanState *node)
PlanState * ExecInitNode(Plan *node, EState *estate, int eflags)
void ExecInitResultTupleSlotTL(PlanState *planstate, const TupleTableSlotOps *tts_ops)
const TupleTableSlotOps TTSOpsMinimalTuple
TupleDesc ExecGetResultType(PlanState *planstate)
void ExecAssignExprContext(EState *estate, PlanState *planstate)
#define outerPlanState(node)
#define EXEC_FLAG_BACKWARD
static bool ExecQualAndReset(ExprState *state, ExprContext *econtext)
static TupleTableSlot * ExecProcNode(PlanState *node)
Assert(PointerIsAligned(start, uint64))
#define CHECK_FOR_INTERRUPTS()
void ExecEndUnique(UniqueState *node)
static TupleTableSlot * ExecUnique(PlanState *pstate)
void ExecReScanUnique(UniqueState *node)
UniqueState * ExecInitUnique(Unique *node, EState *estate, int eflags)
#define castNode(_type_, nodeptr)
TupleTableSlot * ecxt_innertuple
TupleTableSlot * ecxt_outertuple
ExprContext * ps_ExprContext
TupleTableSlot * ps_ResultTupleSlot
ProjectionInfo * ps_ProjInfo
ExecProcNodeMtd ExecProcNode
static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)
static TupleTableSlot * ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)