Skip to content

Support Substrait ExtensionTable reads #23927

Description

@kadinrabo

DataFusion's Substrait consumer doesn't handle ReadRel.ExtensionTable today. That means custom table reads need to go through ExtensionLeaf, even when the Substrait plan is modeling a read.

I think ExtensionTable should have a resolver hook that returns a DataFusion LogicalPlan, with the normal ReadRel filter/projection handling applied around the resolved plan. Substrait evaluates ReadRel.filter before ReadRel.projection, so that ordering matters here: https://substrait.io/relations/logical_relations/#read-filtering

There may be room to reuse more of the named-table path, but I think this should preserve the existing named-table lowering for compatibility and only generalize the parts needed for non-named reads.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions