diff options
Diffstat (limited to 'src/backend/optimizer/path')
-rw-r--r-- | src/backend/optimizer/path/costsize.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/backend/optimizer/path/costsize.c b/src/backend/optimizer/path/costsize.c index 82dfc77f065..55c7648b9e7 100644 --- a/src/backend/optimizer/path/costsize.c +++ b/src/backend/optimizer/path/costsize.c @@ -54,7 +54,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.182 2007/05/04 01:13:44 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/optimizer/path/costsize.c,v 1.183 2007/05/21 17:57:33 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -1039,6 +1039,23 @@ cost_sort(Path *path, PlannerInfo *root, } /* + * sort_exceeds_work_mem + * Given a finished Sort plan node, detect whether it is expected to + * spill to disk (ie, will need more than work_mem workspace) + * + * This assumes there will be no available LIMIT. + */ +bool +sort_exceeds_work_mem(Sort *sort) +{ + double input_bytes = relation_byte_size(sort->plan.plan_rows, + sort->plan.plan_width); + long work_mem_bytes = work_mem * 1024L; + + return (input_bytes > work_mem_bytes); +} + +/* * cost_material * Determines and returns the cost of materializing a relation, including * the cost of reading the input data. |