Re: [PATCH] Incremental sort (was: PoC: Partial sort)
Robert Haas <robertmhaas@gmail.com>
On Sat, Feb 18, 2017 at 4:01 PM, Alexander Korotkov <a.korotkov@postgrespro.ru> wrote: > I decided to start new thread for this patch for following two reasons. > * It's renamed from "Partial sort" to "Incremental sort" per suggestion by > Robert Haas [1]. New name much better characterizes the essence of > algorithm. > * I think it's not PoC anymore. Patch received several rounds of review > and now it's in the pretty good shape. > > Attached revision of patch has following changes. > * According to review [1], two new path and plan nodes are responsible for > incremental sort: IncSortPath and IncSort which are inherited from SortPath > and Sort correspondingly. That allowed to get rid of set of hacks with > minimal code changes. > * According to review [1] and comment [2], previous tuple is stored in > standalone tuple slot of SortState rather than just HeapTuple. > * New GUC parameter enable_incsort is introduced to control planner ability > to choose incremental sort. > * Test of postgres_fdw with not pushed down cross join is corrected. It > appeared that with incremental sort such query is profitable to push down. > I changed ORDER BY columns so that index couldn't be used. I think this > solution is more elegant than setting enable_incsort = off. I usually advocate for spelling things out instead of abbreviating, so I guess I'll stay true to form here and suggest that abbreviating incremental to inc doesn't seem like a great idea. Is that sort incrementing, incremental, incredible, incautious, or incorporated? The first hunk in the patch, a change in the postgres_fdw regression test output, looks an awful lot like a bug: now the query that formerly returned various different numbers is returning all zeroes. It might not actually be a bug, because you've also changed the test query (not sure why), but anyway the new regression test output that is all zeroes seems less useful for catching bugs in, say, the ordering of the results than the old output where the different rows were different. I don't know of any existing cases where the same executor file is responsible for executing more than 1 different type of executor node. I was imagining a more-complete separation of the new executor node. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
Further adjustments to Hashagg EXPLAIN ANALYZE output
- 40efbf8706cd 14.0 cited
-
Rework EXPLAIN format for incremental sort
- 6a918c3ac8a6 13.0 landed
-
Fix typos and improve incremental sort comments
- 1a40d37a9faf 13.0 landed
-
Stabilize incremental_sort tests
- cea09246e578 13.0 landed
-
Minor improvements in Incremental Sort explain
- d22782a5392f 13.0 landed
-
Consider Incremental Sort paths at additional places
- ba3e76cc571e 13.0 landed
-
Fix representation of SORT_TYPE_STILL_IN_PROGRESS.
- c7654f6a3779 13.0 landed
-
Fix failures in incremental_sort due to number of workers
- 23ba3b5ee278 13.0 landed
-
Fix show_incremental_sort_info with force_parallel_mode
- 7d6d82a52493 13.0 landed
-
Implement Incremental Sort
- d2d8a229bc58 13.0 landed
-
Fix handling of "Subplans Removed" field in EXPLAIN output.
- 7d91b604d9b5 13.0 cited
-
Fix EXPLAIN (SETTINGS) to follow policy about when to print empty fields.
- 3ec20c7091e9 13.0 cited
-
Ensure plpgsql result tuples have the right composite type marking.
- 5683b34956b4 13.0 cited
-
Propagate sort instrumentation from workers back to leader.
- bf11e7ee2e36 11.0 cited
-
Make new regression test case parallel-safe, and improve its output.
- 1177ab1dabf7 11.0 cited
-
Push limit through subqueries to underlying sort, where possible.
- 1f6d515a67ec 11.0 cited
-
Fix inappropriate printing of never-measured times in EXPLAIN.
- 4b234fd8bf21 9.6.0 cited
-
Fix some infelicities in EXPLAIN output for parallel query plans.
- 8ebb69f85445 9.6.0 cited