mirror of
https://github.com/postgres/postgres.git
synced 2025-07-11 10:01:57 +03:00
Further fallout from the MergeAppend patch.
Fix things so that top-N sorting can be used in child Sort nodes of a MergeAppend node, when there is a LIMIT and no intervening joins or grouping. Actually doing this on the executor side isn't too bad, but it's a bit messier to get the planner to cost it properly. Per gripe from Robert Haas. In passing, fix an oversight in the original top-N-sorting patch: query_planner should not assume that a LIMIT can be used to make an explicit sort cheaper when there will be grouping or aggregation in between. Possibly this should be back-patched, but I'm not sure the mistake is serious enough to be a real problem in practice.
This commit is contained in:
@ -1493,6 +1493,7 @@ _outMergeAppendPath(StringInfo str, MergeAppendPath *node)
|
||||
_outPathInfo(str, (Path *) node);
|
||||
|
||||
WRITE_NODE_FIELD(subpaths);
|
||||
WRITE_FLOAT_FIELD(limit_tuples, "%.0f");
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1611,6 +1612,7 @@ _outPlannerInfo(StringInfo str, PlannerInfo *node)
|
||||
WRITE_NODE_FIELD(minmax_aggs);
|
||||
WRITE_FLOAT_FIELD(total_table_pages, "%.0f");
|
||||
WRITE_FLOAT_FIELD(tuple_fraction, "%.4f");
|
||||
WRITE_FLOAT_FIELD(limit_tuples, "%.0f");
|
||||
WRITE_BOOL_FIELD(hasInheritedTarget);
|
||||
WRITE_BOOL_FIELD(hasJoinRTEs);
|
||||
WRITE_BOOL_FIELD(hasHavingQual);
|
||||
|
Reference in New Issue
Block a user