PostgreSQL Source Code: src/include/nodes/pathnodes.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16#ifndef PATHNODES_H

17#define PATHNODES_H

18

24

25

26

27

28

29

31

32

33

34

35

37{

40

41

42

43

44

46{

50

51

52

53

54

55

56

57

59{

64

65

66

67

68

70{

71 UPPERREL_SETOP,

73

79 UPPERREL_FINAL,

80

82

83

84

85

86

87

88

89

90

91

92

93

94

96{

98

100

101

103

104

106

107

109

110

112

113

115

116

118

119

120

121

122

124

125

126

127

128

129

131

132

134

135

137

138

140

141

143

144

146

147

149

150

152

153

155

156

158

159

161

162

164

165

167

168

170

171

173

174

176

177

179

180

182

183

186

187

188#define planner_subplan_get_plan(root, subplan) \

189 ((Plan *) list_nth((root)->glob->subplans, (subplan)->plan_id - 1))

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214#ifndef HAVE_PLANNERINFO_TYPEDEF

216#define HAVE_PLANNERINFO_TYPEDEF 1

217#endif

218

220{

222

224

225

227

228

230

231

233

234

236

237

238

239

240

241

242

243

246

247

248

249

250

251

252

253

255

257

258

259

260

261

262

263

265

266

267

268

269

270

271

272

274

275

276

277

278

280

281

282

283

284

286

287

288

289

290

291

292

294

295

296

297

298

299

300

301

302

303

306

307

308

309

310

311

312

313

314

315

316

317

319

321

322

324

325

326

327

328

330

331

333

334

336

337

339

340

342

343

345

346

347

348

349

351

352

353

354

355

357

358

359

360

362

363

365

366

368

369

370

371

372

373

374

375

376

377

379

381

382

383

384

385

386

387

388

390

391

393

394

396

397

399

400

402

403 int placeholder_array_size pg_node_attr(read_write_ignore);

404

405

407

408

410

411

413

414

415

416

417

418

420

421

423

425

427

429

430

432

433

435

436

437

438

439

441

442

444

445

446

447

448

449

450

451

452

453

454

455

456

457

458

459

460

461

462

464

465

466

467

468

469

470

471

472

473

474

476

477

478

479

480

481

482

483

484

485

487

488

489

490

491

492

493

495

496

497

498

499

501

503

504

506

507

509

510

512

514

515

516

517

518

520

521

523

525

527

529

531

533

535

536

537

538

539

541

542

543

544

545

547

549

551

553

555

556

557

558

559

561

563

564

565

566

567

569

571

572

573

574

575

576

577

580

581

582 void *join_search_private pg_node_attr(read_write_ignore);

583

584

586

587

589};

590

591

592

593

594

595

596

597#define planner_rt_fetch(rti, root) \

598 ((root)->simple_rte_array ? (root)->simple_rte_array[rti] : \

599 rt_fetch(rti, (root)->parse->rtable))

600

601

602

603

604

605

606

607

608

609

610

611

612

613

614

616{

622

623

626

627

630

632

633

634

635

636

637

638

639

640

641

642

643

644

645

646

647

648

649

650

651

652

653

654

655

656

657

658

659

660

661

662

663

664

665

666

667

668

669

670

671

672

673

674

675

676

677

678

679

680

681

682

683

684

685

686

687

688

689

690

691

692

693

694

695

696

697

698

699

700

701

702

703

704

705

706

707

708

709

710

711

712

713

714

715

716

717

718

719

720

721

722

723

724

725

726

727

728

729

730

731

732

733

734

735

736

737

738

739

740

741

742

743

744

745

746

747

748

749

750

751

752

753

754

755

756

757

758

759

760

761

762

763

764

765

766

767

768

769

770

771

772

773

774

775

776

777

778

779

780

781

782

783

784

785

786

787

788

789

790

791

792

793

794

795

796

797

798

799

800

801

802

803

804

805

806

807

808

809

810

811

812

813

814

815

816

817

818

819

820

821

822

823

824

825

826

827

828

829

830

831

832

833

834

835

836

837

838

839

840

841

842

843

844

845

846

847

848

849

850#define AMFLAG_HAS_TID_RANGE (1 << 0)

851

853{

861

862

863

864

865

866#define IS_SIMPLE_REL(rel) \

867 ((rel)->reloptkind == RELOPT_BASEREL || \

868 (rel)->reloptkind == RELOPT_OTHER_MEMBER_REL)

869

870

871#define IS_JOIN_REL(rel) \

872 ((rel)->reloptkind == RELOPT_JOINREL || \

873 (rel)->reloptkind == RELOPT_OTHER_JOINREL)

874

875

876#define IS_UPPER_REL(rel) \

877 ((rel)->reloptkind == RELOPT_UPPER_REL || \

878 (rel)->reloptkind == RELOPT_OTHER_UPPER_REL)

879

880

881#define IS_OTHER_REL(rel) \

882 ((rel)->reloptkind == RELOPT_OTHER_MEMBER_REL || \

883 (rel)->reloptkind == RELOPT_OTHER_JOINREL || \

884 (rel)->reloptkind == RELOPT_OTHER_UPPER_REL)

885

887{

889

891

893

894

895

896

897

899

900

901

902

903

905

906

907

908

909

911

913

915

916

917

918

919

921

922

923

924

932

933

934

935

936

937

939

941

942

943

944

946

948

950

952

954

956

958

959

960

961

962

964

966

968

970

972

974

978

982

984

986

987

988

989

990

992

994

996

999

1000

1001

1002

1003

1005

1007

1008

1009

1010

1011

1013

1015

1017

1019

1021

1022

1023

1024

1025

1027

1028

1029

1030

1031

1033

1035

1037

1038

1039

1040

1041

1043

1044

1045

1046

1047

1049

1051

1053

1055

1056

1057

1058

1059

1061

1062

1063

1064

1065

1067

1069

1070

1071

1072

1073

1074

1075

1077

1080

1081

1082

1083

1084

1085

1086

1087

1088

1089#define IS_PARTITIONED_REL(rel) \

1090 ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \

1091 (rel)->part_rels && !IS_DUMMY_REL(rel))

1092

1093

1094

1095

1096

1097#define REL_HAS_ALL_PART_PROPS(rel) \

1098 ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \

1099 (rel)->part_rels && (rel)->partexprs && (rel)->nullable_partexprs)

1100

1101

1102

1103

1104

1105

1106

1107

1108

1109

1110

1111

1112

1113

1114

1115

1116

1117

1118

1119

1120

1121

1122

1123

1124

1125

1126

1127

1128

1129

1130

1131

1132#ifndef HAVE_INDEXOPTINFO_TYPEDEF

1134#define HAVE_INDEXOPTINFO_TYPEDEF 1

1135#endif

1136

1137struct IndexPath;

1138

1140{

1142

1144

1145

1147

1149

1151

1152

1153

1154

1155

1157

1159

1161

1162

1163

1164

1165

1167

1169

1170

1171

1172

1173

1175

1177

1179

1181

1183

1185

1187

1189

1191

1193

1194

1195

1196

1197

1199

1201

1202

1204

1205

1206

1207

1208

1209

1211

1212

1214

1216

1218

1220

1222

1223

1224

1225

1226

1231

1233

1236

1238

1239

1241};

1242

1243

1244

1245

1246

1247

1248

1249

1250

1252{

1253 pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble)

1254

1256

1257

1258

1259

1260

1261

1263

1265

1267

1269

1271

1273

1274

1275

1276

1277

1278

1280

1282

1284

1286

1288

1290

1293

1294

1295

1296

1297

1298

1299

1300

1302{

1304

1306

1307

1309

1310

1312

1313

1315

1316

1318

1319

1321

1322

1325

1326

1327

1328

1329

1330

1331

1332

1333

1334

1335

1336

1337

1338

1339

1340

1341

1342

1343

1344

1345

1346

1347

1348

1349

1350

1351

1353{

1355

1357

1360

1361

1362

1363

1364

1365

1366

1367

1368

1369

1370

1371

1372

1373

1374

1375

1376

1377

1378

1379

1380

1381

1382

1383

1384

1385

1386

1387

1388

1389

1390

1391

1392

1393

1394

1395

1396

1397

1398

1399

1400

1401

1402

1403

1404

1405

1406

1407

1408

1409

1410

1411

1412

1413

1414

1415

1416

1417

1418

1419

1420

1421

1422

1423

1424

1425

1426

1427

1428

1429

1430

1431

1432

1433

1434

1435

1436

1437

1438

1439

1440

1441

1442

1443

1445{

1446 pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble)

1447

1449

1458

1459

1461

1464 bool ec_broken;

1470

1471

1472

1473

1474

1475#define EC_MUST_BE_REDUNDANT(eclass) \

1476 ((eclass)->ec_has_const)

1477

1478

1479

1480

1481

1482

1483

1484

1485

1486

1487

1488

1489

1490

1491

1492

1493

1494

1495

1496

1497

1498

1499

1500

1501

1502

1503

1504

1506{

1508

1510

1514 bool em_is_child;

1517

1520

1521

1522

1523

1524

1525

1526

1527

1528

1529

1530

1531

1532

1533

1534

1535

1536

1537

1538

1539

1540

1541

1542

1543

1544

1545

1546

1547

1548

1549

1550

1551

1552

1553

1554

1555

1556

1557

1558

1559

1560

1561

1562

1563

1564

1565

1566

1567

1568

1569

1570typedef struct

1571{

1573 int current_relid;

1574

1575

1577

1581

1582

1583

1584

1585

1586

1587

1588

1589

1590

1591

1592

1593

1594

1595

1596

1598{

1600

1602

1603

1609

1610

1611

1612

1613

1614

1615

1616

1617

1618

1620{

1622

1626

1627

1628

1629

1630

1631

1633{

1638

1639

1640

1641

1642

1643

1644

1645

1646

1647

1648

1649

1650

1651

1652

1653

1654

1655

1656

1657

1658

1659

1660

1661

1663{

1665

1667

1668

1670

1671

1673

1674

1676

1677

1679

1680

1683

1684

1685#define get_pathtarget_sortgroupref(target, colno) \

1686 ((target)->sortgrouprefs ? (target)->sortgrouprefs[colno] : (Index) 0)

1687

1688

1689

1690

1691

1692

1693

1694

1695

1696

1697

1698

1699

1700

1701

1702

1703

1704

1705

1706

1707

1708

1710{

1712

1714

1720

1721

1722

1723

1724

1725

1726

1727

1728

1729

1730

1731

1732

1733

1734

1735

1736

1737

1738

1739

1740

1741

1742

1743

1744

1745

1746

1747

1748

1749

1750

1751

1752

1753

1754

1756{

1758

1760

1761

1763

1764

1765

1766

1767

1768

1769

1771

1772

1773

1774

1775

1776

1778

1779

1780

1781

1782

1783

1784

1785

1787

1788

1790

1792

1794

1795

1800

1801

1804

1805

1806#define PATH_REQ_OUTER(path) \

1807 ((path)->param_info ? (path)->param_info->ppi_req_outer : (Relids) NULL)

1808

1809

1810

1811

1812

1813

1814

1815

1816

1817

1818

1819

1820

1821

1822

1823

1824

1825

1826

1827

1828

1829

1830

1831

1832

1833

1834

1835

1836

1837

1838

1839

1840

1841

1842

1843

1845{

1855

1856

1857

1858

1859

1860

1861

1862

1863

1864

1865

1866

1867

1868

1869

1870

1871

1872

1873

1874

1875

1876

1877

1878

1879

1880

1881

1882

1883

1884

1885

1886

1887

1888

1889

1891{

1893

1897 bool lossy;

1901

1902

1903

1904

1905

1906

1907

1908

1909

1910

1911

1912

1913

1914

1915

1916

1917

1918

1920{

1924

1925

1926

1927

1928

1929

1930

1932{

1937

1938

1939

1940

1941

1942

1943

1945{

1950

1951

1952

1953

1954

1955

1956

1957

1959{

1963

1964

1965

1966

1967

1968

1969

1971{

1975

1976

1977

1978

1979

1980

1981

1982

1983

1985{

1987 Path *subpath;

1989

1990

1991

1992

1993

1994

1995

1996

1997

1998

1999

2000

2001

2002

2003

2005{

2011

2012

2013

2014

2015

2016

2017

2018

2019

2020

2021

2022

2023

2024

2025

2026

2027

2028

2029

2030

2031

2032

2033

2034

2035

2036

2037

2039

2041{

2044

2050

2051

2052

2053

2054

2055

2056

2057

2058

2059

2060

2061

2062

2063

2064

2065

2067{

2070

2074

2075#define IS_DUMMY_APPEND(p) \

2076 (IsA((p), AppendPath) && ((AppendPath *) (p))->subpaths == NIL)

2077

2078

2079

2080

2081

2082

2083#define IS_DUMMY_REL(r) is_dummy_rel(r)

2085

2086

2087

2088

2089

2091{

2096

2097

2098

2099

2100

2101

2102

2103

2105{

2109

2110

2111

2112

2113

2114

2115

2117{

2121

2122

2123

2124

2125

2126

2128{

2133 bool singlerow;

2134

2135 bool binary_mode;

2136

2139

2140

2142

2143

2144

2145

2146

2147

2148

2149

2150

2151

2152

2153

2154

2156{

2161

2163{

2170

2171

2172

2173

2174

2175

2177{

2180 bool single_copy;

2183

2184

2185

2186

2187

2189{

2194

2195

2196

2197

2198

2199

2201{

2203

2205

2207

2208 bool inner_unique;

2209

2210

2213

2215

2216

2217

2218

2219

2220

2222

2223

2224

2225

2226

2228{

2231

2232

2233

2234

2235

2236

2237

2238

2239

2240

2241

2242

2243

2244

2245

2246

2247

2248

2249

2250

2251

2252

2253

2254

2255

2256

2257

2258

2259

2260

2261

2262

2263

2264

2265

2266

2267

2268

2269

2270

2271

2272

2274{

2280

2284

2285

2286

2287

2288

2289

2290

2291

2292

2293

2295{

2301

2302

2303

2304

2305

2306

2307

2308

2309

2310

2311

2312

2313

2314

2315

2317{

2320 bool dummypp;

2322

2323

2324

2325

2326

2327

2329{

2333

2334

2335

2336

2337

2338

2339

2340

2341

2343{

2347

2348

2349

2350

2351

2352

2353

2355{

2359

2360

2361

2362

2363

2364

2365

2366

2367

2369{

2373 List *qual;

2375

2376

2377

2378

2379

2380

2381

2383{

2386 int numkeys;

2388

2389

2390

2391

2392

2393

2394

2395

2397{

2405 List *qual;

2407

2408

2409

2410

2411

2413{

2415

2417 List *set;

2420

2422{

2424

2427 List *gsets;

2431 bool is_hashed;

2433

2434

2435

2436

2437

2439{

2444 List *qual;

2447

2448

2449

2450

2452{

2457

2458

2459

2460

2462{

2466 List *qual;

2468 bool topwindow;

2469

2471

2472

2473

2474

2476{

2485

2486

2487

2488

2490{

2495 int wtParam;

2498

2499

2500

2501

2503{

2507 int epqParam;

2509

2510

2511

2512

2513

2514

2515

2516

2518{

2522 bool canSetTag;

2532 int epqParam;

2534

2536

2538

2539

2540

2541

2543{

2550

2551

2552

2553

2554

2555

2556

2557

2558

2559

2560

2561

2562

2563

2564

2565

2566

2567

2568

2569

2570

2571

2572

2573

2574

2575

2576

2577

2578

2579

2580

2581

2582

2583

2584

2585

2586

2587

2588

2589

2590

2591

2592

2593

2594

2595

2596

2597

2598

2599

2600

2601

2602

2603

2604

2605

2606

2607

2608

2609

2610

2611

2612

2613

2614

2615

2616

2617

2618

2619

2620

2621

2622

2623

2624

2625

2626

2627

2628

2629

2630

2631

2632

2633

2634

2635

2636

2637

2638

2639

2640

2641

2642

2643

2644

2645

2646

2647

2648

2649

2650

2651

2652

2653

2654

2655

2656

2657

2658

2659

2660

2661

2662

2663

2664

2665

2666

2667

2668

2669

2670

2671

2672

2673

2674

2675

2676

2677

2678

2679

2680

2681

2682

2683

2684

2685

2686

2687

2688

2689

2690

2691

2692

2693

2694

2695

2696

2697

2698

2699

2700

2702{

2704

2706

2707

2709

2710

2712

2713

2715

2716

2718

2719

2722

2723

2725

2726

2728

2729

2731

2732

2734

2735

2737

2738

2740

2741

2743

2744

2746

2747

2748

2749

2750

2753

2754

2755

2756

2757

2759

2760

2761

2762

2763

2764

2765

2766

2767

2768

2769

2770

2771

2772

2773

2774

2775

2776

2777

2778

2779

2781

2782

2783

2784

2785

2787

2788

2789

2790

2791

2792

2794

2795

2797

2799

2800

2801

2802

2803

2805

2806

2807

2808

2809

2810

2812

2814

2816

2818

2819

2820

2821

2822

2823

2825

2826

2827

2828

2829

2831

2832

2833

2834

2835

2837

2838

2839

2840

2841

2843

2845

2847

2849

2850

2854

2855

2856

2857

2858

2859

2860

2861

2862

2863

2864

2865#define RINFO_IS_PUSHED_DOWN(rinfo, joinrelids) \

2866 ((rinfo)->is_pushed_down || \

2867 !bms_is_subset((rinfo)->required_relids, joinrelids))

2868

2869

2870

2871

2872

2873

2874

2875

2877{

2878

2879 Oid opfamily;

2882 bool nulls_first;

2883

2889

2890

2891

2892

2893

2894

2895

2896

2897

2898

2899

2900

2901

2902

2903

2904

2905

2906

2907

2908

2909

2910

2911

2912

2913

2914

2915

2916

2917

2918

2919

2920

2921

2923{

2925

2927

2928

2930

2931

2933

2934

2936

2937

2939

2940

2943

2944

2945

2946

2947

2948

2949

2950

2951

2952

2953

2954

2955

2956

2957

2958

2959

2960

2961

2962

2963

2964

2965

2966

2967

2968

2969

2970

2971

2972

2973

2974

2975

2976

2977

2978

2979

2980

2981

2982

2983

2984

2985

2986

2987

2988

2989

2990

2991

2992

2993

2994

2995

2996

2997

2998

2999

3000

3001

3002

3003

3004

3005

3006

3007

3008

3009

3010

3011

3012

3013

3014

3015

3016

3017

3018

3019

3020

3021

3022

3023

3024

3025

3026

3027

3028#ifndef HAVE_SPECIALJOININFO_TYPEDEF

3030#define HAVE_SPECIALJOININFO_TYPEDEF 1

3031#endif

3032

3034{

3036

3048 bool lhs_strict;

3049

3054};

3055

3056

3057

3058

3059

3060

3061

3063{

3065

3070

3071

3072

3073

3074

3075

3076

3077

3078

3079

3080

3081

3082

3083

3084

3085

3086

3087

3088

3089

3090

3091

3092

3093

3094

3095

3096

3097

3098

3099

3100

3102{

3104

3106

3107

3108

3109

3110

3111

3112

3115

3116

3117

3118

3119

3120

3121

3124

3125

3126

3127

3128

3129

3130

3131

3132

3133

3134

3135

3136

3137

3138

3139

3140

3142

3143

3144

3145

3146

3147

3148

3151

3152

3153

3154

3155

3156

3159

3160

3161

3162

3163

3164

3165

3166

3167

3168

3169

3170

3171

3172

3173

3174

3175

3176

3177

3179{

3181

3183

3184 Var *rowidvar;

3186 char *rowidname;

3189

3190

3191

3192

3193

3194

3195

3196

3197

3198

3199

3200

3201

3202

3203

3204

3205

3206

3207

3208

3209

3210

3211

3212

3213

3214

3215

3217{

3219

3221

3222

3224

3225

3226

3227

3228

3230

3231

3233

3234

3236

3237

3239

3240

3243

3244

3245

3246

3247

3248

3250{

3252

3254

3255

3257

3258

3260

3261

3263

3264

3265

3266

3267

3269

3270

3272

3273

3275

3276

3279

3280

3281

3282

3283

3284

3285

3286

3287

3288

3289

3290

3291

3292

3293

3294

3295

3296

3297

3298

3299

3300

3301

3302

3303

3304

3305

3306

3307

3308

3309

3310

3311

3312

3313

3314

3315

3316

3317

3318

3319

3320

3321

3322

3323

3324

3325

3326

3328{

3330

3332

3333 Node *item;

3334 int paramId;

3336

3337

3338

3339

3340

3341

3342

3343

3344

3345

3346

3347

3348

3349

3350

3351

3352

3354{

3358

3359

3360

3361

3362

3363

3364

3365

3366

3367

3368

3369

3370

3371

3373{

3381

3382

3383

3384

3385

3386

3387

3388

3389

3390

3391

3392

3393

3394

3395

3396

3397#define GROUPING_CAN_USE_SORT 0x0001

3398#define GROUPING_CAN_USE_HASH 0x0002

3399#define GROUPING_CAN_PARTIAL_AGG 0x0004

3400

3401

3402

3403

3404

3405

3406

3407

3408

3409

3410

3411

3413{

3418

3419

3420

3421

3422

3423

3424

3425

3426

3427

3428

3429

3430

3431

3432typedef struct

3433{

3434

3439

3440

3446

3447

3448

3449

3450

3451

3452

3453

3454

3455

3456

3457typedef struct

3458{

3464

3465

3466

3467

3468

3469

3470

3471

3472

3473

3474

3475

3476

3478{

3479

3483

3484

3486

3487

3490

3491

3496

3497

3502

3503

3504

3505

3506

3507

3509{

3511

3513

3514

3515

3516

3517

3518

3519

3521

3522

3524

3525

3526

3527

3528

3530

3531

3534

3535

3536

3537

3538

3539

3540

3541

3543{

3545

3547

3548

3551

3552

3554

3555

3557

3558

3560

3561

3563

3564

3566

3567

3571

3572

3574

3575

3579

3580

3581

3582

3583

3585{

3587

3589

3590

3591

3592

3593

3595

3596

3597

3598

3599

3601

3602

3603

3604

3605

3606

3607

3610

3611#endif

static int initValue(long lng_val)

struct AggTransInfo AggTransInfo

struct MergeScanSelCache MergeScanSelCache

struct IndexPath IndexPath

struct TidRangePath TidRangePath

struct JoinCostWorkspace JoinCostWorkspace

bool is_dummy_rel(RelOptInfo *rel)

PartitionwiseAggregateType

@ PARTITIONWISE_AGGREGATE_PARTIAL

@ PARTITIONWISE_AGGREGATE_FULL

@ PARTITIONWISE_AGGREGATE_NONE

struct ForeignPath ForeignPath

struct OuterJoinClauseInfo OuterJoinClauseInfo

struct StatisticExtInfo StatisticExtInfo

struct SetOpPath SetOpPath

struct RollupData RollupData

struct BitmapOrPath BitmapOrPath

struct PlannerGlobal PlannerGlobal

struct ParamPathInfo ParamPathInfo

struct SubqueryScanPath SubqueryScanPath

struct UniquePath UniquePath

struct AggClauseCosts AggClauseCosts

struct EquivalenceClass EquivalenceClass

struct RecursiveUnionPath RecursiveUnionPath

struct EquivalenceMember EquivalenceMember

struct MaterialPath MaterialPath

struct AppendRelInfo AppendRelInfo

struct PartitionSchemeData PartitionSchemeData

struct ProjectionPath ProjectionPath

struct CustomPath CustomPath

struct BitmapAndPath BitmapAndPath

struct PartitionSchemeData * PartitionScheme

struct WindowAggPath WindowAggPath

struct GroupByOrdering GroupByOrdering

struct MinMaxAggInfo MinMaxAggInfo

struct RelOptInfo RelOptInfo

struct GroupingSetsPath GroupingSetsPath

struct IncrementalSortPath IncrementalSortPath

struct ProjectSetPath ProjectSetPath

struct MergePath MergePath

struct LockRowsPath LockRowsPath

struct MergeAppendPath MergeAppendPath

struct UniqueRelInfo UniqueRelInfo

struct GroupPath GroupPath

struct GroupResultPath GroupResultPath

struct MemoizePath MemoizePath

@ UPPERREL_PARTIAL_GROUP_AGG

@ UPPERREL_PARTIAL_DISTINCT

struct PlaceHolderVar PlaceHolderVar

@ RELOPT_OTHER_MEMBER_REL

struct RestrictInfo RestrictInfo

struct JoinPathExtraData JoinPathExtraData

struct ModifyTablePath ModifyTablePath

struct LimitPath LimitPath

struct GroupingSetData GroupingSetData

struct UpperUniquePath UpperUniquePath

struct MinMaxAggPath MinMaxAggPath

struct PlannerParamItem PlannerParamItem

struct ForeignKeyOptInfo ForeignKeyOptInfo

struct PathTarget PathTarget

struct IndexClause IndexClause

struct PlaceHolderInfo PlaceHolderInfo

struct GatherPath GatherPath

struct SemiAntiJoinFactors SemiAntiJoinFactors

struct JoinDomain JoinDomain

struct RowIdentityVarInfo RowIdentityVarInfo

struct AppendPath AppendPath

struct GatherMergePath GatherMergePath

struct BitmapHeapPath BitmapHeapPath

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

Datum initValue pg_node_attr(read_write_ignore)

pg_node_attr(no_query_jumble) NodeTag type

AttrNumber *parent_colnos pg_node_attr(array_size(num_child_cols))

Selectivity bitmapselectivity

Selectivity bitmapselectivity

const struct CustomPathMethods * methods

List * custom_restrictinfo

pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble) NodeTag type

struct EquivalenceClass * ec_merged

struct derives_hash * ec_derives_hash

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

struct EquivalenceMember *em_parent pg_node_attr(read_write_ignore)

AttrNumber conkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys))

AttrNumber confkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys))

struct EquivalenceClass * eclass[INDEX_MAX_KEYS]

pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble) NodeTag type

Oid conpfeqop[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys))

List * rinfos[INDEX_MAX_KEYS]

struct EquivalenceMember * fk_eclass_member[INDEX_MAX_KEYS]

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

Cardinality inner_rows_total

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

struct RestrictInfo * rinfo

int *indexkeys pg_node_attr(array_size(ncolumns))

bytea **opclassoptions pg_node_attr(read_write_ignore)

Oid *sortopfamily pg_node_attr(array_size(nkeycolumns))

void(* amcostestimate)(struct PlannerInfo *, struct IndexPath *, double, Cost *, Cost *, Selectivity *, double *, double *) pg_node_attr(read_write_ignore)

List *indexprs pg_node_attr(read_write_ignore)

bool *nulls_first pg_node_attr(array_size(nkeycolumns))

Oid *opcintype pg_node_attr(array_size(nkeycolumns))

RelOptInfo *rel pg_node_attr(read_write_ignore)

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

Oid *indexcollations pg_node_attr(array_size(nkeycolumns))

bool *reverse_sort pg_node_attr(array_size(nkeycolumns))

Oid *opfamily pg_node_attr(array_size(nkeycolumns))

bool *canreturn pg_node_attr(array_size(ncolumns))

ScanDirection indexscandir

Selectivity indexselectivity

Cost inner_rescan_run_cost

Cardinality inner_skip_rows

Cardinality inner_rows_total

Cardinality outer_skip_rows

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

pg_node_attr(abstract) Path path

Selectivity rightstartsel

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

PlannerInfo *subroot pg_node_attr(read_write_ignore)

List * withCheckOptionLists

List * mergeJoinConditions

OnConflictExpr * onconflict

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

struct FmgrInfo * partsupfunc

EquivalenceClass *pk_eclass pg_node_attr(copy_as_scalar, equal_as_scalar)

pg_node_attr(no_read, no_query_jumble) NodeTag type

VolatileFunctionStatus has_volatile_expr

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

Index *sortgrouprefs pg_node_attr(array_size(exprs))

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

PathTarget *pathtarget pg_node_attr(write_only_nondefault_pathtarget)

ParamPathInfo *param_info pg_node_attr(write_only_req_outer)

RelOptInfo *parent pg_node_attr(write_only_relids)

pg_node_attr(no_read, no_query_jumble) NodeTag type

Relids phrels pg_node_attr(equal_ignore)

pg_node_attr(no_query_jumble) Expr xpr

Expr *phexpr pg_node_attr(equal_ignore)

Bitmapset * prunableRelids

PartitionDirectory partition_directory pg_node_attr(read_write_ignore)

List *subroots pg_node_attr(read_write_ignore)

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

Bitmapset * rewindPlanIDs

ParamListInfo boundParams pg_node_attr(read_write_ignore)

void *join_search_private pg_node_attr(read_write_ignore)

struct HTAB *join_rel_hash pg_node_attr(read_write_ignore)

struct RelOptInfo **simple_rel_array pg_node_attr(array_size(simple_rel_array_size))

AttrNumber *grouping_map pg_node_attr(read_write_ignore)

struct PathTarget *upper_targets[UPPERREL_FINAL+1] pg_node_attr(read_write_ignore)

int simple_rel_array_size

struct AppendRelInfo **append_rel_array pg_node_attr(read_write_ignore)

Index qual_security_level

struct PlaceHolderInfo **placeholder_array pg_node_attr(read_write_ignore, array_size(placeholder_array_size))

struct Path * non_recursive_path

List **join_rel_level pg_node_attr(read_write_ignore)

MemoryContext planner_cxt pg_node_attr(read_write_ignore)

RangeTblEntry **simple_rte_array pg_node_attr(read_write_ignore)

List * processed_groupClause

List *upper_rels[UPPERREL_FINAL+1] pg_node_attr(read_write_ignore)

bool hasAlternativeSubPlans

List * right_join_clauses

List *part_schemes pg_node_attr(read_write_ignore)

List * processed_distinctClause

Cardinality total_table_pages

bool *isUsedSubplan pg_node_attr(read_write_ignore)

Selectivity tuple_fraction

bool *isAltSubplan pg_node_attr(read_write_ignore)

int placeholder_array_size pg_node_attr(read_write_ignore)

bool hasPseudoConstantQuals

List *initial_rels pg_node_attr(read_write_ignore)

PlannerInfo *parent_root pg_node_attr(read_write_ignore)

Relids leaf_result_relids

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

struct FdwRoutine *fdwroutine pg_node_attr(read_write_ignore)

bool consider_param_startup

Bitmapset * notnullattnums

struct PathTarget * reltarget

struct PartitionBoundInfoData *boundinfo pg_node_attr(read_write_ignore)

struct RelOptInfo **part_rels pg_node_attr(read_write_ignore)

int32 *attr_widths pg_node_attr(read_write_ignore)

List **partexprs pg_node_attr(read_write_ignore)

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

PartitionScheme part_scheme pg_node_attr(read_write_ignore)

List * cheapest_parameterized_paths

struct RelOptInfo *parent pg_node_attr(read_write_ignore)

struct Path * cheapest_unique_path

Relids lateral_referencers

struct Path * cheapest_startup_path

QualCost baserestrictcost

Relids *attr_needed pg_node_attr(read_write_ignore)

struct Path * cheapest_total_path

struct RelOptInfo *top_parent pg_node_attr(read_write_ignore)

List * non_unique_for_rels

Bitmapset * eclass_indexes

Relids direct_lateral_relids

bool consider_partitionwise_join

Index baserestrict_min_security

List **nullable_partexprs pg_node_attr(read_write_ignore)

void *fdw_private pg_node_attr(read_write_ignore)

Selectivity norm_selec pg_node_attr(equal_ignore)

EquivalenceClass *parent_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore)

bool leakproof pg_node_attr(equal_ignore)

Oid hashjoinoperator pg_node_attr(equal_ignore)

Selectivity outer_selec pg_node_attr(equal_ignore)

EquivalenceClass *right_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore)

EquivalenceMember *left_em pg_node_attr(copy_as_scalar, equal_ignore)

Selectivity left_mcvfreq pg_node_attr(equal_ignore)

Relids left_relids pg_node_attr(equal_ignore)

VolatileFunctionStatus has_volatile pg_node_attr(equal_ignore)

bool can_join pg_node_attr(equal_ignore)

Selectivity right_bucketsize pg_node_attr(equal_ignore)

bool pseudoconstant pg_node_attr(equal_ignore)

Expr *orclause pg_node_attr(equal_ignore)

Relids incompatible_relids

int num_base_rels pg_node_attr(equal_ignore)

List *scansel_cache pg_node_attr(copy_as(NIL), equal_ignore, read_write_ignore)

Selectivity right_mcvfreq pg_node_attr(equal_ignore)

EquivalenceClass *left_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore)

EquivalenceMember *right_em pg_node_attr(copy_as_scalar, equal_ignore)

pg_node_attr(no_read, no_query_jumble) NodeTag type

bool outer_is_left pg_node_attr(equal_ignore)

QualCost eval_cost pg_node_attr(equal_ignore)

List *mergeopfamilies pg_node_attr(equal_ignore)

Selectivity left_bucketsize pg_node_attr(equal_ignore)

Oid right_hasheqoperator pg_node_attr(equal_ignore)

Oid left_hasheqoperator pg_node_attr(equal_ignore)

Relids clause_relids pg_node_attr(equal_ignore)

Relids right_relids pg_node_attr(equal_ignore)

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

Selectivity outer_match_frac

pg_node_attr(no_read, no_query_jumble) NodeTag type

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type

RelOptInfo *rel pg_node_attr(read_write_ignore)

pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type