PostgreSQL Source Code: src/backend/executor/nodeMergeAppend.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

34

35

36

37

38

40

46

47

48

49

50

51

53

56

57

58

59

60

61

62

63

66{

71 int nplans;

72 int i,

73 j;

74

75

77

78

79

80

82 mergestate->ps.state = estate;

84

85

87 {

89

90

91

92

93

94

99 &validsubplans);

102

103

104

105

106

107

110 }

111 else

112 {

114

115

116

117

118

123 }

124

126 mergestate->mergeplans = mergeplanstates;

128

131 mergestate);

132

133

134

135

136

137 j = 0;

138 i = -1;

140 {

142

143 mergeplanstates[j++] = ExecInitNode(initNode, estate, eflags);

144 }

145

146

147

148

149

150

151

152

153

154

156 if (mergeops != NULL)

157 {

159 }

160 else

161 {

163

166 }

167

168

169

170

172

173

174

175

178

180 {

182

186 sortKey->ssup_attno = node->sortColIdx[i];

187

188

189

190

191

192

193

194

196

198 }

199

200

201

202

204

205 return mergestate;

206}

207

208

209

210

211

212

213

216{

220

222

224 {

225

228

229

230

231

232

233

237

238

239

240

241

242 i = -1;

244 {

248 }

251 }

252 else

253 {

254

255

256

257

258

259

260

261

266 else

268 }

269

271 {

272

274 }

275 else

276 {

279 }

280

281 return result;

282}

283

284

285

286

289{

293

296 int nkey;

297

300

301 for (nkey = 0; nkey < node->ms_nkeys; nkey++)

302 {

306 datum2;

307 bool isNull1,

308 isNull2;

310

313

315 datum2, isNull2,

316 sortKey);

318 {

321 }

322 }

323 return 0;

324}

325

326

327

328

329

330

331

332

333

334void

336{

338 int nplans;

339 int i;

340

341

342

343

346

347

348

349

350 for (i = 0; i < nplans; i++)

352}

353

354void

356{

357 int i;

358

359

360

361

362

363

367 {

370 }

371

373 {

375

376

377

378

379

382

383

384

385

386

387 if (subnode->chgParam == NULL)

389 }

392}

void binaryheap_build(binaryheap *heap)

void binaryheap_replace_first(binaryheap *heap, bh_node_type d)

void binaryheap_reset(binaryheap *heap)

bh_node_type binaryheap_first(binaryheap *heap)

bh_node_type binaryheap_remove_first(binaryheap *heap)

void binaryheap_add_unordered(binaryheap *heap, bh_node_type d)

binaryheap * binaryheap_allocate(int capacity, binaryheap_comparator compare, void *arg)

#define binaryheap_empty(h)

int bms_next_member(const Bitmapset *a, int prevbit)

Bitmapset * bms_add_range(Bitmapset *a, int lower, int upper)

void bms_free(Bitmapset *a)

int bms_num_members(const Bitmapset *a)

bool bms_overlap(const Bitmapset *a, const Bitmapset *b)

#define INVERT_COMPARE_RESULT(var)

void ExecReScan(PlanState *node)

PartitionPruneState * ExecInitPartitionExecPruning(PlanState *planstate, int n_total_subplans, int part_prune_index, Bitmapset *relids, Bitmapset **initially_valid_subplans)

Bitmapset * ExecFindMatchingSubPlans(PartitionPruneState *prunestate, bool initial_prune, Bitmapset **validsubplan_rtis)

void ExecEndNode(PlanState *node)

PlanState * ExecInitNode(Plan *node, EState *estate, int eflags)

const TupleTableSlotOps TTSOpsVirtual

void ExecInitResultTupleSlotTL(PlanState *planstate, const TupleTableSlotOps *tts_ops)

const TupleTableSlotOps * ExecGetCommonSlotOps(PlanState **planstates, int nplans)

void UpdateChangedParamSet(PlanState *node, Bitmapset *newchg)

#define EXEC_FLAG_BACKWARD

static TupleTableSlot * ExecProcNode(PlanState *node)

static int compare(const void *arg1, const void *arg2)

Assert(PointerIsAligned(start, uint64))

void * palloc0(Size size)

MemoryContext CurrentMemoryContext

#define CHECK_FOR_INTERRUPTS()

static int heap_compare_slots(Datum a, Datum b, void *arg)

static TupleTableSlot * ExecMergeAppend(PlanState *pstate)

void ExecReScanMergeAppend(MergeAppendState *node)

MergeAppendState * ExecInitMergeAppend(MergeAppend *node, EState *estate, int eflags)

void ExecEndMergeAppend(MergeAppendState *node)

#define castNode(_type_, nodeptr)

static int list_length(const List *l)

static void * list_nth(const List *list, int n)

static Datum Int32GetDatum(int32 X)

static int32 DatumGetInt32(Datum X)

void PrepareSortSupportFromOrderingOp(Oid orderingOp, SortSupport ssup)

static int ApplySortComparator(Datum datum1, bool isNull1, Datum datum2, bool isNull2, SortSupport ssup)

Bitmapset * ms_valid_subplans

struct binaryheap * ms_heap

TupleTableSlot ** ms_slots

struct PartitionPruneState * ms_prune_state

TupleTableSlot * ps_ResultTupleSlot

ProjectionInfo * ps_ProjInfo

ExecProcNodeMtd ExecProcNode

static Datum slot_getattr(TupleTableSlot *slot, int attnum, bool *isnull)

static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)