feat - implement RFC 002 Substrait boundary#15
Merged
dannymeijer merged 1 commit intoApr 4, 2026
Conversation
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
This PR implements the current RFC 002 Substrait boundary in
InQLand reorganizes the package around that boundary. The package now exposes proto-backed Substrait plan/schema/conformance modules, explicit join/set operation helpers, registered extension URI metadata, and real conformance/testing coverage, while also tightening the RFC/docs language so it stops overstating what is already implemented. It also adds RFC 006 and RFC 007 draft/spec work needed to position unnest and Prism relative to the new Substrait boundary.Type of change
docs/rfcs/*)Area(s)
Select the primary areas touched (labels sync from checked lines when the triage workflow runs):
Key details
InQLnow exposes a real proto-backed Substrait package surface undersubstrait.*, including schema helpers, plan builders, conformance scenarios, explicit join/set operation enums, reference ordinal preservation, and registered extension URI helpers. Dataset carriers and tests now lower through that boundary successfully.dataset.*andsubstrait.*modules. RFC 002 was tightened to treat Substrait as a thin emitted boundary, while Prism is documented separately as the future internal planning substrate. Conformance coverage now runs against real proto emission instead of doc-only claims.ProjectRel/AggregateRelsemantics remain deferred. There is also a temporary workaround in the package forincanempty-list lowering, tracked separately inincan#229.Testing / verification
make ci(ormake fmt-check,make build,make test)Manual verification notes:
incan build --libin theInQLrepo: passed.incan testin theInQLrepo: passed (20 passed).incan --check src/substrait/plan.incn: passed.incan#229.Docs impact
If docs updated:
docs/rfcs/002_apache_substrait_integration.mddocs/rfcs/006_unnest_core_substrait.mddocs/rfcs/007_prism_planning_engine.mddocs/language/reference/substrait/conformance.mddocs/language/reference/substrait/operator_catalog.mddocs/language/reference/substrait/read_root_binding_contract.mddocs/language/reference/substrait/revision_and_extension_policy.mddocs/architecture.mddocs/release_notes/v0_1.mdChecklist
Closes #3