Konstantin Orlov created IGNITE-15832:
-----------------------------------------

             Summary: Calcite. SQL Extension API
                 Key: IGNITE-15832
                 URL: https://issues.apache.org/jira/browse/IGNITE-15832
             Project: Ignite
          Issue Type: Task
            Reporter: Konstantin Orlov
            Assignee: Konstantin Orlov


h3. Motivation
The current SQL engine is powerful enough to handle distributed queries of 
arbitrary complexity. But to unleash its full potential, we need to provide 
users with ability to run SQL queries against custom storages (like queries 
against CSV file).

h3. Proposal
In order to achieve the goal we need to provide API classes and do a number of 
integration points in current codebase. The suggested API interface should look 
like this:

{code:java}
public interface SqlExtensionPlugin {
    String name();

    void init(
        SchemaUpdateListener schemaUpdateListener
    );

    Set<? extends RelOptRule> getOptimizerRules(PlannerPhase phase);

    <Row> NodeImplementor<Row> implementor();

    ColocationGroup colocationGroup(RelNode node);

    interface NodeImplementor<Row> {
        <T extends RelNode> Node<Row> implement(ExecutionContext<Row> ctx, T 
node);
    }

    interface SchemaUpdateListener {
        void onSchemaUpdated(Schema schema);
    }
}
{code}

Details of integration point are covered in subtask.

There is a 
[POC|https://github.com/apache/ignite-3/compare/main...gridgain:sql-ext-wip] 
that could be referenced during implementation of current task



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to