@@ -42,13 +42,13 @@ use datafusion::{
4242 catalog:: { CatalogProviderList , TableFunctionImpl } ,
4343 config:: { CatalogOptions , ConfigOptions } ,
4444 datasource:: { provider_as_source, TableProvider , ViewTable } ,
45- prelude:: { flatten, get_field , make_array} ,
45+ prelude:: { flatten, make_array} ,
4646} ;
4747use datafusion_common:: {
4848 alias:: AliasGenerator ,
4949 internal_err,
5050 tree_node:: { Transformed , TreeNode } ,
51- DFSchema , DataFusionError , Result , ScalarValue ,
51+ Column as DFColumn , DFSchema , DataFusionError , Result , ScalarValue ,
5252} ;
5353use datafusion_expr:: {
5454 col, lit, utils:: split_conjunction, Expr , LogicalPlan , LogicalPlanBuilder , TableScan ,
@@ -400,17 +400,25 @@ pub fn mv_dependencies_plan(
400400 . into_iter ( )
401401 . find ( |c| c. name . starts_with ( META_COLUMN ) )
402402 . ok_or_else ( || DataFusionError :: Plan ( format ! ( "Plan contains no {META_COLUMN} column" ) ) ) ?;
403- let files_col = Expr :: Column ( files. clone ( ) ) ;
403+ let meta_table_catalog =
404+ Expr :: Column ( DFColumn :: from_name ( format ! ( "{}.table_catalog" , files. name) ) ) ;
405+ let meta_table_schema =
406+ Expr :: Column ( DFColumn :: from_name ( format ! ( "{}.table_schema" , files. name) ) ) ;
407+ let meta_table_name = Expr :: Column ( DFColumn :: from_name ( format ! ( "{}.table_name" , files. name) ) ) ;
408+ let meta_source_uri = Expr :: Column ( DFColumn :: from_name ( format ! ( "{}.source_uri" , files. name) ) ) ;
409+ let meta_last_modified =
410+ Expr :: Column ( DFColumn :: from_name ( format ! ( "{}.last_modified" , files. name) ) ) ;
404411
405412 LogicalPlanBuilder :: from ( pruned_plan_with_source_files)
413+ . unnest_column ( files. clone ( ) ) ?
406414 . unnest_column ( files) ?
407415 . project ( vec ! [
408416 construct_target_path_from_static_partition_columns( materialized_view) . alias( "target" ) ,
409- get_field ( files_col . clone ( ) , "table_catalog" ) . alias( "source_table_catalog" ) ,
410- get_field ( files_col . clone ( ) , "table_schema" ) . alias( "source_table_schema" ) ,
411- get_field ( files_col . clone ( ) , "table_name" ) . alias( "source_table_name" ) ,
412- get_field ( files_col . clone ( ) , "source_uri" ) . alias( "source_uri" ) ,
413- get_field ( files_col . clone ( ) , "last_modified" ) . alias( "source_last_modified" ) ,
417+ meta_table_catalog . alias( "source_table_catalog" ) ,
418+ meta_table_schema . alias( "source_table_schema" ) ,
419+ meta_table_name . alias( "source_table_name" ) ,
420+ meta_source_uri . alias( "source_uri" ) ,
421+ meta_last_modified . alias( "source_last_modified" ) ,
414422 ] ) ?
415423 . distinct ( ) ?
416424 . build ( )
0 commit comments