On Thu, 22 Aug 2024 at 00:25, Mark Dilger <mark.dil...@enterprisedb.com> wrote:
>
> Hackers,
>
> The index access method API mostly encapsulates the functionality of in-core 
> index types, with some lingering oversights and layering violations.  There 
> has been an ongoing discussion for several release cycles concerning how the 
> API might be improved to allow interesting additional functionality.  That 
> discussion has frequently included patch proposals to support peculiar needs 
> of esoteric bespoke access methods, which have little interest for the rest 
> of the community.
>
> For your consideration, here is a patch series that takes a different 
> approach.  It addresses many of the limitations and layering violations, 
> along with introducing test infrastructure to validate the changes.  Nothing 
> in this series is intended to introduce new functionality to the API.  Any 
> such, "wouldn't it be great if..." type suggestions for the API are out of 
> scope for this work.  On the other hand, this patch set does not purport to 
> fix all such problems; it merely moves the project in that direction.
>
> For validation purposes, the first patch creates shallow copies of hash and 
> btree named "xash" and "xtree" and introduces some infrastructure to run the 
> src/test/regress and src/test/isolation tests against them without needing to 
> duplicate those tests.  Numerous failures like "unexpected non-btree AM" can 
> be observed in the test results.
>
> Also for validation purposes, the second patch creates a deep copy of btree 
> named "treeb" which uses modified copies of the btree implementation rather 
> than using the btree implementation by reference.  This allows for more 
> experimentation, but might be more code than the community wants.  Since this 
> is broken into its own patch, it can be excluded from what eventually gets 
> committed.  Even if we knew a priori that this "treeb" test would surely 
> never be committed, it still serves to help anybody reviewing the patch 
> series to experiment with those other changes without having to construct 
> such a test index AM individually.
>
> The next twenty patches are a mix of fixes of various layering violations, 
> such as not allowing non-core index AMs from use in replica identity full, or 
> for speculative insertion, or for foreign key constraints, or as part of 
> merge join; with updates to the "treeb" code as needed.  The changes to 
> "treeb" are broken out so that they can also easily be excluded from whatever 
> gets committed.
>
> The final commit changes the ordering of the strategy numbers in treeb.  The 
> name "treeb" is a rotation of "btree", and indeed the strategy numbers 
> 1,2,3,4,5 are rotated to 5,1,2,3,4.  The fact that treeb indexes work 
> properly after this change is meant to demonstrate that the core changes have 
> been sufficient to address the prior dependency on btree strategy number 
> ordering.  Again, this doesn't need to be committed; it might only serve to 
> help reviewers in determining if the functional changes are correct.
>
> Not to harp on this too heavily, but please note that running the core 
> regression and isolation tests against xash, xtree, and treeb are known not 
> to pass.  That's the point.  But by the end of the patch series, the failures 
> are limited to EXPLAIN output changes; the query results themselves are 
> intended to be consistent with the expected test output.  To avoid breaking 
> `make check-world`, these test modules are not added to the test schedule.  
> They are also, at least for now, only useable from make, not from meson.
>
> Internal development versions 1..16 not included.  Andrew, Peter, and Alex 
> have all provided reviews internally and are cc'd here.  Patch by me.  Here 
> is v17 for the community:
>
>
>
> —
> Mark Dilger
> EnterpriseDB: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company


Hi! Why is the patch attached as .tar.bz2? Usually raw patches are sent here...

-- 
Best regards,
Kirill Reshke


Reply via email to