[WIP] Progressive introspection#3082
Draft
benjie wants to merge 1 commit into
Draft
Conversation
|
benjie
marked this pull request as draft
July 1, 2026 08:35
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.
Progressive introspection limits introspection to just the chosen schemas and then spiders outwards to referenced types/classes/attributes/functions/etc. This aids memory efficiency, especially for folks with lots of (repeated) schemas that aren't to be exposed, but it also helps with permissions issues - if you have one schema for one API, and one for another, and permissions differ, then enum table values in one might not need to be read by the other. We can't simply not load enum table values if they're not in the schema list because they might be referenced, for example
create table public.foo(enum text references hidden.enum_table);needs to reference thehidden.enum_tablevalues even though it's not in thepublicschema.Ultimately we aim to build the same introspection object as before, but we'll do so in waves by first introspecting the main schema, then expanding outward from there based on what is actually referenced: