Re: [PATCH] Use optimized single-datum tuplesort in ExecSort
Ronan Dunklau <ronan.dunklau@aiven.io>
From: Ronan Dunklau <ronan.dunklau@aiven.io>
To: James Coleman <jtc331@gmail.com>
Cc: PostgreSQL Developers <pgsql-hackers@lists.postgresql.org>,
Ranier Vilela <ranier.vf@gmail.com>, David Rowley <dgrowleyml@gmail.com>,
Dilip Kumar <dilipbalaut@gmail.com>
Date: 2021-07-07T09:32:03Z
Lists: pgsql-hackers
Attachments
- v4-0001-Allow-Sort-nodes-to-use-the-fast-single-datum-tuples.patch (text/x-patch) patch v4-0001
Le mardi 6 juillet 2021, 17:37:53 CEST James Coleman a écrit : > Yes and no. When incremental sort has to do a full sort there will > always be at least 2 attributes. But in prefix sort mode (see > prefixsort_state) only non-presorted columns are sorted (i.e., if > given a,b already sorted by a, then only b is sorted). So the > prefixsort_state could use this optimization. The optimization is not when we actually sort on a single key, but when we get a single attribute in / out of the tuplesort. Since sorting always add resjunk entries for the keys being sorted on, I don't think we can ever end up in a situation where the optimization would kick in, since the entries for the already-performed-sort keys will need to be present in the output. Maybe if instead of adding resjunk entries to the whole query's targetlist, sort and incrementalsort nodes were able to do a projection from the input (needed tle + resjunk sorting tle) to a tuple containing only the needed tle on output before actually sorting it, it would be possible, but that would be quite a big design change. In the meantime I fixed some formatting issues, please find attached a new patch. -- Ronan Dunklau
Commits
-
Make nodeSort.c use Datum sorts for single column sorts
- 91e9e89dccdf 15.0 landed