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

23

27

28

29

30

31

32

33

34

35

36

37

38static TupleTableSlot *

40{

44 bool forward;

46 bool eof_tuplestore;

48

50

51

52

53

58

59

60

61

62 if (tuplestorestate == NULL && node->eflags != 0)

63 {

67 {

68

69

70

71

73

77 }

79 }

80

81

82

83

84

85 eof_tuplestore = (tuplestorestate == NULL) ||

87

88 if (!forward && eof_tuplestore)

89 {

91 {

92

93

94

95

96

97

99 return NULL;

100 }

101 eof_tuplestore = false;

102 }

103

104

105

106

108 if (!eof_tuplestore)

109 {

111 return slot;

112 if (forward)

113 eof_tuplestore = true;

114 }

115

116

117

118

119

120

121

122

123

125 {

128

129

130

131

132

136 {

138 return NULL;

139 }

140

141

142

143

144

145

146 if (tuplestorestate)

148

150 return slot;

151 }

152

153

154

155

157}

158

159

160

161

162

165{

168

169

170

171

176

177

178

179

180

181

182

186

187

188

189

190

191

192

193

196

199

200

201

202

203

204

205

206

207

208

209

210

211

212

214

217

218

219

220

221

222

223

226

227

228

229

231

232 return matstate;

233}

234

235

236

237

238

239void

241{

242

243

244

248

249

250

251

253}

254

255

256

257

258

259

260

261void

263{

265

266

267

268

270 return;

271

272

273

274

276

277

278

279

281}

282

283

284

285

286

287

288

289void

291{

293

294

295

296

298 return;

299

300

301

302

304}

305

306

307

308

309

310

311

312void

314{

316

318

319 if (node->eflags != 0)

320 {

321

322

323

324

325

327 return;

328

329

330

331

332

333

334

335

336

337

338

339 if (outerPlan->chgParam != NULL ||

341 {

347 }

348 else

350 }

351 else

352 {

353

354

355

356

357

358

362 }

363}

#define PG_USED_FOR_ASSERTS_ONLY

void ExecReScan(PlanState *node)

void ExecEndNode(PlanState *node)

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

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

const TupleTableSlotOps TTSOpsMinimalTuple

void ExecCreateScanSlotFromOuterPlan(EState *estate, ScanState *scanstate, const TupleTableSlotOps *tts_ops)

#define outerPlanState(node)

#define EXEC_FLAG_BACKWARD

static TupleTableSlot * ExecProcNode(PlanState *node)

Assert(PointerIsAligned(start, uint64))

#define CHECK_FOR_INTERRUPTS()

static TupleTableSlot * ExecMaterial(PlanState *pstate)

void ExecReScanMaterial(MaterialState *node)

void ExecMaterialMarkPos(MaterialState *node)

MaterialState * ExecInitMaterial(Material *node, EState *estate, int eflags)

void ExecEndMaterial(MaterialState *node)

void ExecMaterialRestrPos(MaterialState *node)

#define castNode(_type_, nodeptr)

#define ScanDirectionIsForward(direction)

ScanDirection es_direction

Tuplestorestate * tuplestorestate

TupleTableSlot * ps_ResultTupleSlot

ProjectionInfo * ps_ProjInfo

ExecProcNodeMtd ExecProcNode

bool tuplestore_gettupleslot(Tuplestorestate *state, bool forward, bool copy, TupleTableSlot *slot)

void tuplestore_puttupleslot(Tuplestorestate *state, TupleTableSlot *slot)

void tuplestore_rescan(Tuplestorestate *state)

int tuplestore_alloc_read_pointer(Tuplestorestate *state, int eflags)

Tuplestorestate * tuplestore_begin_heap(bool randomAccess, bool interXact, int maxKBytes)

void tuplestore_trim(Tuplestorestate *state)

void tuplestore_copy_read_pointer(Tuplestorestate *state, int srcptr, int destptr)

bool tuplestore_advance(Tuplestorestate *state, bool forward)

void tuplestore_end(Tuplestorestate *state)

bool tuplestore_ateof(Tuplestorestate *state)

void tuplestore_set_eflags(Tuplestorestate *state, int eflags)

static TupleTableSlot * ExecClearTuple(TupleTableSlot *slot)

static TupleTableSlot * ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)