Skip to content

ContextProvider is impossible to implement for real use because it is sync while CatalogProvider::table is async #8805

@tv42

Description

@tv42

Describe the bug

I'm trying to pass already-parsed sqlparser ASTs to Datafusion (I need more power than datafusion::sql::parser exposes). I found SqlToRel to do this.

SqlToRel needs a ContextProvider, and this seems to be the only place where a ContextProvider is used anywhere. Okay, I'll write one, and wrap everything in DefaultTableSource.

But now I can't make my ContextProvider::get_table_source ask for things from my CatalogProvider because SchemaProvider::table is async (see: #4607, #3777 (comment)).

If this was just about accessing my own tables, I could write some alternate API bypassing the SchemaProvider trait. But how am I supposed to support SELECT * FROM information_schema.tables with ContextProvider?

Note that all the examples and tests for SqlToRel just hard-code a trivial schema. This is not realistic.

To Reproduce

No response

Expected behavior

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions