=== Applying patches on top of PostgreSQL commit ID 43493cceda2fb75e07a63cec46000407661d505d === /etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables is obsolete. Please consider migrating to /etc/jail.conf. Sat Feb 1 18:02:26 UTC 2025 On branch cf/4918 nothing to commit, working tree clean === applying patch ./v5-0001-Improve-standardization-of-syntax-in-internal-doc.patch /work/patches/./v5-0001-Improve-standardization-of-syntax-in-internal-doc.patch:106: trailing whitespace. items contain this key. This is called the "posting list". Applied patch to 'contrib/start-scripts/macos/README' cleanly. Applied patch to 'src/backend/access/gin/README' cleanly. Applied patch to 'src/backend/access/gist/README' cleanly. Applied patch to 'src/backend/access/hash/README' cleanly. Applied patch to 'src/backend/access/heap/README.tuplock' cleanly. Applied patch to 'src/backend/access/spgist/README' cleanly. Applied patch to 'src/backend/access/transam/README' cleanly. Applied patch to 'src/backend/lib/README' cleanly. Applied patch to 'src/backend/libpq/README.SSL' cleanly. Applied patch to 'src/backend/optimizer/README' with conflicts. Applied patch to 'src/backend/optimizer/plan/README' cleanly. Applied patch to 'src/backend/parser/README' cleanly. Applied patch to 'src/backend/regex/README' cleanly. Applied patch to 'src/backend/snowball/README' cleanly. Applied patch to 'src/backend/storage/freespace/README' cleanly. Applied patch to 'src/backend/storage/lmgr/README-SSI' cleanly. Applied patch to 'src/backend/utils/fmgr/README' cleanly. Applied patch to 'src/backend/utils/mb/README' cleanly. Applied patch to 'src/backend/utils/misc/README' cleanly. Applied patch to 'src/backend/utils/mmgr/README' cleanly. Applied patch to 'src/backend/utils/resowner/README' cleanly. Applied patch to 'src/interfaces/ecpg/preproc/README.parser' cleanly. Applied patch to 'src/port/README' cleanly. Applied patch to 'src/test/isolation/README' cleanly. Applied patch to 'src/test/kerberos/README' cleanly. Applied patch to 'src/test/locale/README' cleanly. Applied patch to 'src/test/modules/dummy_seclabel/README' cleanly. Applied patch to 'src/test/modules/test_parser/README' cleanly. Applied patch to 'src/test/modules/test_regex/README' cleanly. Applied patch to 'src/test/modules/test_rls_hooks/README' cleanly. Applied patch to 'src/test/modules/test_shm_mq/README' cleanly. Applied patch to 'src/test/recovery/README' cleanly. Applied patch to 'src/test/ssl/README' cleanly. Applied patch to 'src/timezone/tznames/README' cleanly. Applied patch to 'src/tools/ci/README' cleanly. Applied patch to 'src/tools/pgindent/README' cleanly. U src/backend/optimizer/README warning: 1 line adds whitespace errors. diff --cc src/backend/optimizer/README index f341d9f303,5805b61a23..0000000000 --- a/src/backend/optimizer/README +++ b/src/backend/optimizer/README @@@ -602,65 -614,65 +614,127 @@@ The primary entry point is planner() Optimizer Data Structures ------------------------- ++<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ours +PlannerGlobal - global information for a single planner invocation + +PlannerInfo - information for planning a particular Query (we make + a separate PlannerInfo node for each sub-Query) + +RelOptInfo - a relation or joined relations + + RestrictInfo - WHERE clauses, like "x = 3" or "y = z" + (note the same structure is used for restriction and + join clauses) + + Path - every way to generate a RelOptInfo(sequential,index,joins) + A plain Path node can represent several simple plans, per its pathtype: + T_SeqScan - sequential scan + T_SampleScan - tablesample scan + T_FunctionScan - function-in-FROM scan + T_TableFuncScan - table function scan + T_ValuesScan - VALUES scan + T_CteScan - CTE (WITH) scan + T_NamedTuplestoreScan - ENR scan + T_WorkTableScan - scan worktable of a recursive CTE + T_Result - childless Result plan node (used for FROM-less SELECT) + IndexPath - index scan + BitmapHeapPath - top of a bitmapped index scan + TidPath - scan by CTID + TidRangePath - scan a contiguous range of CTIDs + SubqueryScanPath - scan a subquery-in-FROM + ForeignPath - scan a foreign table, foreign join or foreign upper-relation + CustomPath - for custom scan providers + AppendPath - append multiple subpaths together + MergeAppendPath - merge multiple subpaths, preserving their common sort order + GroupResultPath - childless Result plan node (used for degenerate grouping) + MaterialPath - a Material plan node + MemoizePath - a Memoize plan node for caching tuples from sub-paths + UniquePath - remove duplicate rows (either by hashing or sorting) + GatherPath - collect the results of parallel workers + GatherMergePath - collect parallel results, preserving their common sort order + ProjectionPath - a Result plan node with child (used for projection) + ProjectSetPath - a ProjectSet plan node applied to some sub-path + SortPath - a Sort plan node applied to some sub-path + IncrementalSortPath - an IncrementalSort plan node applied to some sub-path + GroupPath - a Group plan node applied to some sub-path + UpperUniquePath - a Unique plan node applied to some sub-path + AggPath - an Agg plan node applied to some sub-path + GroupingSetsPath - an Agg plan node used to implement GROUPING SETS + MinMaxAggPath - a Result plan node with subplans performing MIN/MAX + WindowAggPath - a WindowAgg plan node applied to some sub-path + SetOpPath - a SetOp plan node applied to two sub-paths + RecursiveUnionPath - a RecursiveUnion plan node applied to two sub-paths + LockRowsPath - a LockRows plan node applied to some sub-path + ModifyTablePath - a ModifyTable plan node applied to some sub-path(s) + LimitPath - a Limit plan node applied to some sub-path + NestPath - nested-loop joins + MergePath - merge joins + HashPath - hash joins + + EquivalenceClass - a data structure representing a set of values known equal + + PathKey - a data structure representing the sort ordering of a path ++================================ + PlannerGlobal - global information for a single planner invocation + + PlannerInfo - information for planning a particular Query (we make + a separate PlannerInfo node for each sub-Query) + + RelOptInfo - a relation or joined relations + + RestrictInfo - WHERE clauses, like "x = 3" or "y = z" + (note the same structure is used for restriction and + join clauses) + + Path - every way to generate a RelOptInfo(sequential,index,joins) + A plain Path node can represent several simple plans, per its pathtype: + T_SeqScan - sequential scan + T_SampleScan - tablesample scan + T_FunctionScan - function-in-FROM scan + T_TableFuncScan - table function scan + T_ValuesScan - VALUES scan + T_CteScan - CTE (WITH) scan + T_NamedTuplestoreScan - ENR scan + T_WorkTableScan - scan worktable of a recursive CTE + T_Result - childless Result plan node (used for FROM-less SELECT) + IndexPath - index scan + BitmapHeapPath - top of a bitmapped index scan + TidPath - scan by CTID + TidRangePath - scan a contiguous range of CTIDs + SubqueryScanPath - scan a subquery-in-FROM + ForeignPath - scan a foreign table, foreign join or foreign upper-relation + CustomPath - for custom scan providers + AppendPath - append multiple subpaths together + MergeAppendPath - merge multiple subpaths, preserving their common sort order + GroupResultPath - childless Result plan node (used for degenerate grouping) + MaterialPath - a Material plan node + MemoizePath - a Memoize plan node for caching tuples from sub-paths + UniquePath - remove duplicate rows (either by hashing or sorting) + GatherPath - collect the results of parallel workers + GatherMergePath - collect parallel results, preserving their common sort order + ProjectionPath - a Result plan node with child (used for projection) + ProjectSetPath - a ProjectSet plan node applied to some sub-path + SortPath - a Sort plan node applied to some sub-path + IncrementalSortPath - an IncrementalSort plan node applied to some sub-path + GroupPath - a Group plan node applied to some sub-path + UpperUniquePath - a Unique plan node applied to some sub-path + AggPath - an Agg plan node applied to some sub-path + GroupingSetsPath - an Agg plan node used to implement GROUPING SETS + MinMaxAggPath - a Result plan node with subplans performing MIN/MAX + WindowAggPath - a WindowAgg plan node applied to some sub-path + SetOpPath - a SetOp plan node applied to some sub-path + RecursiveUnionPath - a RecursiveUnion plan node applied to two sub-paths + LockRowsPath - a LockRows plan node applied to some sub-path + ModifyTablePath - a ModifyTable plan node applied to some sub-path(s) + LimitPath - a Limit plan node applied to some sub-path + NestPath - nested-loop joins + MergePath - merge joins + HashPath - hash joins + + EquivalenceClass - a data structure representing a set of values known equal + + PathKey - a data structure representing the sort ordering of a path ++>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> theirs The optimizer spends a good deal of its time worrying about the ordering of the tuples returned by a path. The reason this is useful is that by