PostgreSQL Source Code: src/include/executor/execExpr.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14#ifndef EXEC_EXPR_H

15#define EXEC_EXPR_H

16

20

21

26

27

28

29#define EEO_FLAG_INTERPRETER_INITIALIZED (1 << 5)

30

31#define EEO_FLAG_DIRECT_THREADED (1 << 6)

32

33

37

38

42

43

44

46{

47

48

49

50

51

52

56

57

58

59

60

61

62

63

64

65

67{

68

70

71

73

74

80

81

87

88

94

95

97

98

99

100

101

102

108

109

111

113

114

116

117

118

119

120

121

128

129

130

131

132

133

134

138

139

143

144

146

147

149

150

152

153

157

158

161

162

165

166

171

172

176

178

179

182

183

185

186

199

200

201

202

203

205

206

208

209

211

212

214

215

216

217

218

220

221

222

223

224

225

227

228

230

231

232

233

234

235

237

238

240

241

243

244

247

248

250

251

253

254

260

261

276

277

294

295

298

299

301{

302

303

304

305

306

308

309

312

313

314

315

316

317

318

319 union

320 {

321

322 struct

323 {

324

326

328

330

333

334

335 struct

336 {

337

338

343

344

345 struct

346 {

347 Var *var;

348 bool first;

349 bool slow;

353

354

355 struct

356 {

357

359

362

363

364 struct

365 {

366

369

370

371 struct

372 {

374 int jumpdone;

376

377

378 struct

379 {

380

384

385

386 struct

387 {

390

392 int nargs;

393 bool make_ro;

395

396

397 struct

398 {

399 bool *anynull;

400 int jumpdone;

402

403

404 struct

405 {

406 int jumpdone;

408

409

410 struct

411 {

412 int jumpdone;

414

415

416 struct

417 {

418

421

422

423 struct

424 {

425 int paramid;

428

429

430 struct

431 {

433 void *paramarg;

434 void *paramarg2;

435 int paramid;

436 Oid paramtype;

438

439

440 struct

441 {

445

446

447 struct

448 {

449 Datum *value;

452

453

454 struct

455 {

456

459

463

464

465 struct

466 {

469

470

471 struct

472 {

476

477

478 struct

479 {

482 int nelems;

485 bool elembyval;

486 char elemalign;

487 bool multidims;

489

490

491 struct

492 {

497

498

499 struct

500 {

502

506

507

508 struct

509 {

510

514

516

519

520

521 struct

522 {

525

526

527 struct

528 {

529

533

535

539

540

541 struct

542 {

545

548

549

550 struct

551 {

552

554

555

556

558

559

564

565

566 struct

567 {

569

571 int jumpdone;

573

574

575 struct

576 {

578

581

582

583 struct

584 {

585

587

590

594

595

596 struct

597 {

599

601

602

603 struct

604 {

607

609 int jumpdone;

612

613

614 struct

615 {

618

623

624

625 struct

626 {

627

629 bool useOr;

635

638

639

640 struct

641 {

643 bool inclause;

649

650

651 struct

652 {

654

657

661

662

663 struct

664 {

667

668

669 struct

670 {

673

674

675 struct

676 {

679

680

681 struct

682 {

683

686

687

688 struct

689 {

690

693

694

695 struct

696 {

700

701

702 struct

703 {

704

705

706

707

708

709

710

711

712

713

714

720

721

722 struct

723 {

727

728

729 struct

730 {

735

736

737

738 struct

739 {

746

747

748 struct

749 {

752

753

754 struct

755 {

758

759

760 struct

761 {

765

774

775

777 "size of ExprEvalStep exceeds 64 bytes");

778

779

780

782{

783 bool isassignment;

784

785

787

788

789

791 bool *upperprovided;

794

795

800

801

804

805

809

810

812{

813

819

820

822{

827 struct

828 {

834

835

836

838

839

842

845

846

847

848

849

850

905

909 Datum newValue, bool newValueIsNull,

910 Datum oldValue, bool oldValueIsNull);

919

920#endif

void ExecEvalParamExtern(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalFieldStoreForm(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalGroupingFunc(ExprState *state, ExprEvalStep *op)

struct SubscriptExecSteps SubscriptExecSteps

void ExecEvalRow(ExprState *state, ExprEvalStep *op)

void ExecEvalFieldStoreDeForm(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalCurrentOfExpr(ExprState *state, ExprEvalStep *op)

void ExecEvalSQLValueFunction(ExprState *state, ExprEvalStep *op)

void ExecEvalRowNull(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

struct SubscriptingRefState SubscriptingRefState

void ExecEvalArrayExpr(ExprState *state, ExprEvalStep *op)

void ExecEvalParamSet(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalCoerceViaIOSafe(ExprState *state, ExprEvalStep *op)

Datum ExecInterpExprStillValid(ExprState *state, ExprContext *econtext, bool *isNull)

void ExecEvalConvertRowtype(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

bool ExecEvalPreOrderedDistinctMulti(AggState *aggstate, AggStatePerTrans pertrans)

void ExecEvalFieldSelect(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

int ExecEvalJsonExprPath(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalConstraintNotNull(ExprState *state, ExprEvalStep *op)

void ExprEvalPushStep(ExprState *es, const ExprEvalStep *s)

void ExecEvalScalarArrayOp(ExprState *state, ExprEvalStep *op)

void ExecEvalAggOrderedTransDatum(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalParamExec(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalJsonCoercion(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

struct ExprEvalRowtypeCache ExprEvalRowtypeCache

void ExecAggInitGroup(AggState *aggstate, AggStatePerTrans pertrans, AggStatePerGroup pergroup, ExprContext *aggcontext)

void ExecEvalNextValueExpr(ExprState *state, ExprEvalStep *op)

void ExecEvalSysVar(ExprState *state, ExprEvalStep *op, ExprContext *econtext, TupleTableSlot *slot)

void ExecEvalMinMax(ExprState *state, ExprEvalStep *op)

void ExecEvalSubPlan(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalJsonIsPredicate(ExprState *state, ExprEvalStep *op)

bool(* ExecEvalBoolSubroutine)(ExprState *state, struct ExprEvalStep *op, ExprContext *econtext)

Datum ExecAggCopyTransValue(AggState *aggstate, AggStatePerTrans pertrans, Datum newValue, bool newValueIsNull, Datum oldValue, bool oldValueIsNull)

struct ExprEvalStep ExprEvalStep

void ExecEvalMergeSupportFunc(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void CheckExprStillValid(ExprState *state, ExprContext *econtext)

void ExecEvalJsonConstructor(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalWholeRowVar(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalHashedScalarArrayOp(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalJsonCoercionFinish(ExprState *state, ExprEvalStep *op)

void ExecReadyInterpretedExpr(ExprState *state)

void ExecEvalRowNotNull(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

ExprEvalOp ExecEvalStepOp(ExprState *state, ExprEvalStep *op)

void(* ExecEvalSubroutine)(ExprState *state, struct ExprEvalStep *op, ExprContext *econtext)

@ EEOP_FUNCEXPR_STRICT_FUSAGE

@ EEOP_HASHDATUM_NEXT32_STRICT

@ EEOP_JSONEXPR_COERCION_FINISH

@ EEOP_HASHDATUM_FIRST_STRICT

@ EEOP_AGG_PLAIN_PERGROUP_NULLCHECK

@ EEOP_AGG_STRICT_DESERIALIZE

@ EEOP_BOOLTEST_IS_NOT_FALSE

@ EEOP_AGG_PLAIN_TRANS_BYREF

@ EEOP_AGG_PRESORTED_DISTINCT_MULTI

@ EEOP_AGG_PLAIN_TRANS_BYVAL

@ EEOP_NULLTEST_ROWISNOTNULL

@ EEOP_ASSIGN_TMP_MAKE_RO

@ EEOP_BOOL_OR_STEP_FIRST

@ EEOP_AGG_STRICT_INPUT_CHECK_NULLS

@ EEOP_AGG_STRICT_INPUT_CHECK_ARGS_1

@ EEOP_AGG_STRICT_INPUT_CHECK_ARGS

@ EEOP_NULLTEST_ROWISNULL

@ EEOP_NULLTEST_ISNOTNULL

@ EEOP_MERGE_SUPPORT_FUNC

@ EEOP_AGG_PRESORTED_DISTINCT_SINGLE

@ EEOP_BOOL_AND_STEP_FIRST

@ EEOP_DOMAIN_TESTVAL_EXT

@ EEOP_BOOL_AND_STEP_LAST

@ EEOP_AGG_ORDERED_TRANS_DATUM

@ EEOP_HASHDATUM_SET_INITVAL

@ EEOP_AGG_PLAIN_TRANS_STRICT_BYREF

@ EEOP_BOOLTEST_IS_NOT_TRUE

@ EEOP_AGG_PLAIN_TRANS_INIT_STRICT_BYVAL

@ EEOP_AGG_PLAIN_TRANS_STRICT_BYVAL

@ EEOP_AGG_PLAIN_TRANS_INIT_STRICT_BYREF

@ EEOP_HASHED_SCALARARRAYOP

@ EEOP_AGG_ORDERED_TRANS_TUPLE

void ExecEvalConstraintCheck(ExprState *state, ExprEvalStep *op)

StaticAssertDecl(sizeof(ExprEvalStep)<=64, "size of ExprEvalStep exceeds 64 bytes")

void ExecEvalArrayCoerce(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalFuncExprStrictFusage(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalFuncExprFusage(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

void ExecEvalXmlExpr(ExprState *state, ExprEvalStep *op)

bool ExecEvalPreOrderedDistinctSingle(AggState *aggstate, AggStatePerTrans pertrans)

struct JsonConstructorExprState JsonConstructorExprState

void ExecEvalAggOrderedTransTuple(ExprState *state, ExprEvalStep *op, ExprContext *econtext)

Datum(* PGFunction)(FunctionCallInfo fcinfo)

ExprState * elemexprstate

struct ExprEvalStep::@55::@94 grouping_func

struct ExprEvalStep::@55::@66 jump

WindowFuncExprState * wfstate

void * json_coercion_cache

ExecEvalBoolSubroutine subscriptfunc

ExprEvalRowtypeCache * rowcache

struct ExprEvalStep::@55::@81 fieldselect

struct ExprEvalStep::@55::@90 hashedscalararrayop

struct ExprEvalStep::@55::@92 json_constructor

struct ExprEvalStep::@55::@60 assign_tmp

struct ExprEvalStep::@55::@71 make_readonly

struct ExprEvalStep::@55::@57 var

struct ExprEvalStep::@55::@82 fieldstore

struct ExprEvalStep::@55::@85 domaincheck

struct ExprEvalStep::@55::@102 is_json

struct ScalarArrayOpExprHashTable * elements_tab

struct SubscriptingRefState * state

VarReturningType varreturningtype

AggStatePerTrans pertrans

struct ExprEvalStep::@55::@104 jsonexpr_coercion

struct ExprEvalStep::@55::@78 rowcompare_step

struct ExprEvalStep::@55::@83 sbsref_subscript

struct JsonExprState * jsestate

struct ExprEvalStep::@55::@91 xmlexpr

struct ExprEvalStep::@55::@84 sbsref

struct ExprEvalStep::@55::@67 nulltest_row

struct ExprEvalStep::@55::@69 cparam

ExecEvalSubroutine paramfunc

FunctionCallInfo fcinfo_data_in

struct ExprEvalStep::@55::@77 row

ExprEvalRowtypeCache * incache

struct ExprEvalStep::@55::@103 jsonexpr

struct ExprEvalStep::@55::@74 nextvalueexpr

struct ExprEvalStep::@55::@86 hashdatum_initvalue

const TupleTableSlotOps * kind

struct ExprEvalStep::@55::@99 agg_plain_pergroup_nullcheck

struct ExprEvalStep::@55::@62 constval

FunctionCallInfo fcinfo_data

struct ExprEvalStep::@55::@93 aggref

struct ExprEvalStep::@55::@97 agg_deserialize

struct ExprEvalStep::@55::@95 window_func

struct ExprEvalStep::@55::@61 returningexpr

struct ExprEvalStep::@55::@72 iocoerce

ErrorSaveContext * escontext

union ExprEvalStep::@55 d

struct ExprEvalStep::@55::@98 agg_strict_input_check

struct ExprEvalStep::@55::@80 minmax

struct ExprEvalStep::@55::@88 convert_rowtype

struct ExprEvalStep::@55::@79 rowcompare_final

struct ExprEvalStep::@55::@70 casetest

struct ExprEvalStep::@55::@75 arrayexpr

struct ExprEvalStep::@55::@89 scalararrayop

struct ExprEvalStep::@55::@100 agg_presorted_distinctcheck

struct ExprEvalStep::@55::@65 qualexpr

struct ExprEvalStep::@55::@58 wholerow

struct ExprEvalStep::@55::@101 agg_trans

FunctionCallInfo fcinfo_data_out

ExecEvalSubroutine subscriptfunc

ExprEvalRowtypeCache * outcache

struct ExprEvalStep::@55::@68 param

struct ExprEvalStep::@55::@87 hashdatum

struct ExprEvalStep::@55::@96 subplan

struct ExprEvalStep::@55::@63 func

struct ExprEvalStep::@55::@73 sqlvaluefunction

struct ExprEvalStep::@55::@64 boolexpr

ExprEvalRowtypeCache rowcache

struct JsonConstructorExprState * jcstate

struct ExprEvalStep::@55::@56 fetch

struct ExprEvalStep::@55::@59 assign_var

struct ArrayMapState * amstate

struct ExprEvalStep::@55::@76 arraycoerce

JsonConstructorExpr * constructor

struct JsonConstructorExprState::@105 * arg_type_cache

ExecEvalSubroutine sbs_fetch_old

ExecEvalBoolSubroutine sbs_check_subscripts

ExecEvalSubroutine sbs_assign

ExecEvalSubroutine sbs_fetch