Re: WIP: BRIN multi-range indexes
Tomas Vondra <tomas.vondra@enterprisedb.com>
From: Tomas Vondra <tomas.vondra@enterprisedb.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: John Naylor <john.naylor@enterprisedb.com>,
PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-03-02T23:53:22Z
Lists: pgsql-hackers
On 3/3/21 12:44 AM, Alvaro Herrera wrote: > On 2021-Mar-03, Tomas Vondra wrote: > >> 1) The 0001 patch allows passing of all scan keys to BRIN opclasses, >> which is needed for the minmax-multi to work. But it also modifies the >> existing opclasses (minmax and inclusion) to do this - but for those >> opclasses it does not make much difference, I think. Initially this was >> done because the patch did this for all opclasses, but then we added the >> detection based on number of parameters. So I wonder if we should just >> remove this, to make the patch a bit smaller. It'll also test the other >> code path (for opclasses without the last parameter). > > I think it makes sense to just do them all in one pass. I think trying > to keep the old way working just because it's how it was working > previously does not have much benefit. I don't think we care about the > *patch* being small as much as the resulting *code* being as simple as > possible (but no simpler). > That's kinda my point - I agree the size of the patch is not the primary concern, but it makes the minmax/inclusion code a bit more complicated (because they now have to loop over the keys), with very little benefit (there might be some speedup, but IMO it's rather negligible). Alternatively we could simply remove the code supporting the old API with "consistent" functions without the additional parameter. But the idea was to seamlessly support existing opclasses / not breaking them unnecessarily (I know we don't guarantee that in major upgrades, but as they may not benefit from this, why break them?). It'd simplify the code in brin.c a little bit, but the opclasses a bit more complex. > >> 2) This needs bsearch_arg, but we only have that defined/used in >> extended_statistics_internal.h - it seems silly to include that here, as >> this has nothing to do with extended stats, so I simply added another >> prototype (which gets linked correctly). But, I suppose a better way >> would be to define our "portable" variant pg_bsearch_arg, next to >> pg_qsort etc. > > Yeah, I think it makes sense to move bsearch_arg to a place where it's > more generally accesible (src/port/bsearch_arg.c I suppose), and make > both places use that. > OK, will do. regards -- Tomas Vondra EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
Commits
-
BRIN minmax-multi indexes
- ab596105b55f 14.0 landed
-
BRIN bloom indexes
- 77b88cd1bb90 14.0 landed
-
Support the old signature of BRIN consistent function
- a681e3c107aa 14.0 landed
-
Remove unnecessary pg_amproc BRIN minmax entries
- a68dfa27d42f 14.0 landed
-
Optimize allocations in bringetbitmap
- 8e4b332e88b8 14.0 landed
-
Move IS [NOT] NULL handling from BRIN support functions
- 72ccf55cb99c 14.0 landed
-
Pass all scan keys to BRIN consistent function at once
- a1c649d889bd 14.0 landed
-
Properly detoast data in brin_form_tuple
- d2d3a4bd33d2 9.5.24 landed
- bae31e75f777 9.6.20 landed
- 0b96fc977c5b 10.15 landed
- 895d0f0e8218 11.10 landed
- 8149e9f9a0d6 12.5 landed
- 6a7b55f3716f 13.1 landed
- 7577dd84807a 14.0 landed