pgsql: Use quicksort, not replacement selection, for external sorting.

Started by Robert Haasabout 10 years ago4 messagescomitters
Jump to latest
#1Robert Haas
robertmhaas@gmail.com

Use quicksort, not replacement selection, for external sorting.

We still use replacement selection for the first run of the sort only
and only when the number of tuples is relatively small. Otherwise,
the first run, and subsequent runs in all cases, are produced using
quicksort. This tends to be faster except perhaps for very small
amounts of working memory.

Peter Geoghegan, reviewed by Tomas Vondra, Jeff Janes, Mithun Cy,
Greg Stark, and me.

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/0711803775a37e0bf39d7efdd1e34d9d7e640ea1

Modified Files
--------------
doc/src/sgml/config.sgml | 39 +++
src/backend/optimizer/path/costsize.c | 6 +-
src/backend/utils/init/globals.c | 1 +
src/backend/utils/misc/guc.c | 10 +
src/backend/utils/misc/postgresql.conf.sample | 1 +
src/backend/utils/sort/tuplesort.c | 463 +++++++++++++++++++++-----
src/include/miscadmin.h | 1 +
7 files changed, 430 insertions(+), 91 deletions(-)

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Robert Haas (#1)
Re: pgsql: Use quicksort, not replacement selection, for external sorting.

Robert Haas <rhaas@postgresql.org> writes:

Use quicksort, not replacement selection, for external sorting.

This patch evidently broke several of the Windows buildfarm critters,
eg on mastodon:

Build FAILED.
.\src\backend\utils\sort\tuplesort.c(2373): error C2143: syntax error : missing ';' before 'type'
.\src\backend\utils\sort\tuplesort.c(2377): error C2065: 'ntuples' : undeclared identifier
0 Warning(s)
2 Error(s)

regards, tom lane

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: Tom Lane (#2)
Re: pgsql: Use quicksort, not replacement selection, for external sorting.

I wrote:

Robert Haas <rhaas@postgresql.org> writes:

Use quicksort, not replacement selection, for external sorting.

This patch evidently broke several of the Windows buildfarm critters,

On inspection, the problem is obviously "declaration in the middle of
a code block".

regards, tom lane

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

#4Robert Haas
robertmhaas@gmail.com
In reply to: Tom Lane (#3)
Re: pgsql: Use quicksort, not replacement selection, for external sorting.

On Fri, Apr 8, 2016 at 10:47 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:

I wrote:

Robert Haas <rhaas@postgresql.org> writes:

Use quicksort, not replacement selection, for external sorting.

This patch evidently broke several of the Windows buildfarm critters,

On inspection, the problem is obviously "declaration in the middle of
a code block".

Woops. Attempted a fix.

--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

--
Sent via pgsql-committers mailing list (pgsql-committers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers