Replace fixed-size registry with dshash for unlimited indexes#85
Merged
Replace fixed-size registry with dshash for unlimited indexes#85
Conversation
Fixes #83 The registry previously used a fixed-size array (TP_MAX_INDEXES=64) to track index OIDs to shared state mappings. This caused "registry full" errors when creating many indexes, especially with partitioned tables. This change replaces the fixed array with a dshash (dynamic shared hash table) that: - Has no fixed limit on number of indexes (bounded only by memory) - Provides O(1) lookup performance - Uses the same DSA infrastructure already used elsewhere Also fixes the object access hook to properly clean up on cascade drops (e.g., DROP TABLE dropping its indexes). The previous check for PERFORM_DELETION_INTERNAL skipped cleanup for these cases, causing registry entries to leak.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Details
The registry previously used
TP_MAX_INDEXES=64fixed array. This caused "registry full" errors with many indexes, especially partitioned tables.The new dshash implementation:
Also fixes the object access hook which was skipping cleanup for
PERFORM_DELETION_INTERNALdrops, causing registry entries to leak on cascade operations.Testing