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