Alexander Kuzmenkov 6e7b6e9a6e
vectorized aggregation as separate plan node (#6784)
This PR is a little too big, but it proved difficult to split into parts
because they are all dependent.

* Move the vectorized aggregation into a separate plan node, which
simplifies working with targetlist in DecompressChunk node.

* Add a post-planning hook that replaces the normal partial aggregation
node with the vectorized aggregation node. The advantage of this
compared to planning on Path stage is that we know which columns support
bulk decompression and which filters are vectorized.

* Use the compressed batch API in vectorized aggregation. This
simplifies the code.

* Support vectorized aggregation after vectorized filters.

* Add a simple generic interface for vectorized aggregate functions. For
now the only function is still `sum(int4)`.

* The parallel plans are now used more often, maybe because the old code
didn't add costs for aggregation and just used the costs from
DecompressChunk, so the costs of parallel plans were less different. The
current code does the cost-based planning for normal aggregates, and
then after planning replaces them with vectorized, so now we basically
follow the plan choice that Postgres makes for the usual aggregation.
2024-04-11 17:15:26 +00:00
..
2024-04-04 10:39:28 -03:00
2024-02-20 15:00:34 +01:00
2023-12-18 10:53:27 +01:00
2023-12-15 19:13:08 +01:00
2024-03-03 22:30:52 +01:00
2021-06-01 20:21:06 +02:00
2024-02-22 08:29:48 +01:00
2023-08-09 13:02:13 +05:30
2024-01-15 13:57:36 +01:00
2024-02-20 15:00:34 +01:00
2023-12-18 10:53:27 +01:00
2023-12-18 10:53:27 +01:00
2024-03-03 22:30:52 +01:00
2024-04-10 15:13:29 +02:00
2024-04-10 15:13:29 +02:00
2024-02-20 15:00:34 +01:00
2023-09-23 08:36:26 -04:00
2022-10-27 16:06:58 +04:00
2022-01-28 20:16:28 +03:00
2022-03-03 12:21:07 +01:00
2024-01-15 13:57:36 +01:00