@@ -33,21 +33,19 @@ use crate::coordinator::statement::{
3333} ;
3434use crate :: coordinator:: tool:: ConnectorOptions ;
3535use crate :: sql:: logical_node:: logical:: { LogicalProgram , ProgramConfig } ;
36- use crate :: sql:: logical_planner:: optimizers:: ChainingOptimizer ;
36+ use crate :: sql:: logical_planner:: optimizers:: { ChainingOptimizer , produce_optimized_plan } ;
3737use crate :: sql:: schema:: Table ;
38- use crate :: sql:: schema:: connector:: ConnectionType ;
39- use crate :: sql:: schema:: connector_table:: ConnectorTable ;
40- use crate :: sql:: schema:: field_spec:: FieldSpec ;
41- use crate :: sql:: schema:: optimizer:: produce_optimized_plan;
38+ use crate :: sql:: schema:: ConnectionType ;
39+ use crate :: sql:: schema:: source_table:: SourceTable ;
40+ use crate :: sql:: schema:: ColumnDescriptor ;
4241use crate :: sql:: functions:: { is_json_union, serialize_outgoing_json} ;
43- use crate :: sql:: extensions:: sink:: SinkExtension ;
42+ use crate :: sql:: extensions:: sink:: StreamEgressNode ;
4443use crate :: sql:: logical_planner:: planner;
4544use crate :: sql:: analysis:: { StreamSchemaProvider , maybe_add_key_extension_to_sink, rewrite_sinks} ;
4645use crate :: sql:: rewrite_plan;
4746
4847const CONNECTOR : & str = "connector" ;
4948const PARTITION_BY : & str = "partition_by" ;
50- const IDLE_MICROS : & str = "idle_time" ;
5149
5250fn with_options_to_map ( options : & [ SqlOption ] ) -> std:: collections:: HashMap < String , String > {
5351 options
@@ -108,6 +106,8 @@ impl LogicalPlanVisitor {
108106 )
109107 } ) ?;
110108
109+ let partition_exprs = self . resolve_partition_expressions ( & mut opts) ?;
110+
111111 let base_plan =
112112 produce_optimized_plan ( & Statement :: Query ( query. clone ( ) ) , & self . schema_provider ) ?;
113113 let mut plan = rewrite_plan ( base_plan, & self . schema_provider ) ?;
@@ -121,38 +121,33 @@ impl LogicalPlanVisitor {
121121 plan = serialize_outgoing_json ( & self . schema_provider , Arc :: new ( plan) ) ;
122122 }
123123
124- let partition_exprs = self . resolve_partition_expressions ( & mut opts) ?;
125-
126- let fields: Vec < FieldSpec > = plan
124+ let fields: Vec < ColumnDescriptor > = plan
127125 . schema ( )
128126 . fields ( )
129127 . iter ( )
130- . map ( |f| FieldSpec :: Struct ( ( * * f) . clone ( ) ) )
128+ . map ( |f| ColumnDescriptor :: from ( ( * * f) . clone ( ) ) )
131129 . collect ( ) ;
132130
133- let connector_table = ConnectorTable {
134- id : None ,
135- connector,
136- name : table_name. clone ( ) ,
137- connection_type : ConnectionType :: Sink ,
131+ let mut source_table = SourceTable :: from_options (
132+ & table_name,
133+ & connector,
134+ false ,
138135 fields,
139- config : "" . to_string ( ) ,
140- description : comment. clone ( ) . unwrap_or_default ( ) ,
141- event_time_field : None ,
142- watermark_field : None ,
143- idle_time : opts. pull_opt_duration ( IDLE_MICROS ) ?,
144- primary_keys : Arc :: new ( vec ! [ ] ) ,
145- inferred_fields : None ,
146- partition_exprs : Arc :: new ( partition_exprs) ,
147- lookup_cache_ttl : None ,
148- lookup_cache_max_bytes : None ,
149- } ;
136+ vec ! [ ] ,
137+ None ,
138+ & mut opts,
139+ None ,
140+ & self . schema_provider ,
141+ Some ( ConnectionType :: Sink ) ,
142+ comment. clone ( ) . unwrap_or_default ( ) ,
143+ ) ?;
144+ source_table. partition_exprs = Arc :: new ( partition_exprs) ;
150145
151- let sink_extension = SinkExtension :: new (
146+ let sink_extension = StreamEgressNode :: try_new (
152147 TableReference :: bare ( table_name. clone ( ) ) ,
153- Table :: ConnectorTable ( connector_table . clone ( ) ) ,
148+ Table :: ConnectorTable ( source_table . clone ( ) ) ,
154149 plan. schema ( ) . clone ( ) ,
155- Arc :: new ( plan) ,
150+ plan,
156151 ) ?;
157152
158153 let plan_with_keys = maybe_add_key_extension_to_sink ( LogicalPlan :: Extension ( Extension {
@@ -196,7 +191,7 @@ impl LogicalPlanVisitor {
196191 Ok ( Box :: new ( StreamingTable {
197192 name : table_name,
198193 comment : comment. clone ( ) ,
199- connector_table ,
194+ source_table ,
200195 logical_plan : final_plan,
201196 } ) )
202197 }
@@ -322,7 +317,7 @@ mod create_streaming_table_tests {
322317
323318 use crate :: sql:: common:: TIMESTAMP_FIELD ;
324319 use crate :: sql:: rewrite_plan;
325- use crate :: sql:: schema :: optimizer :: produce_optimized_plan;
320+ use crate :: sql:: logical_planner :: optimizers :: produce_optimized_plan;
326321 use crate :: sql:: schema:: StreamSchemaProvider ;
327322
328323 fn schema_provider_with_src ( ) -> StreamSchemaProvider {
0 commit comments