Implement a "SQL Row" type descriptor #8109
Merged
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.
Couple of notes:
A dedicated descriptor is needed to reduce complexity in client libraries, as the "record" type has a different API from the "free object" type. Adding multiple cases to the codecs pipeline to track what language was used -- EdgeQL or SQL -- is more error prone and time consuming than adding a dedicated descriptor.
This commit uses a hack to call the compiler process to build the actual descriptor. The IO<->compiler RPC code is incredibly complex and brittle, so adding two new remote methods would require copy/pasting (as well as careful testing) of a lot of code that manages compiler state and related optimizations.
It's easier to leave all of that code alone and multiplex the new method into the existing
compile()
andcompile_in_tx()
.An alternative would be quite an invasive refactoring of the entire compiler_pool package, something that I'd like to avoid, especially that close to the release.