This is an automated email from the ASF dual-hosted git repository.

xudong963 pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/datafusion.git


The following commit(s) were added to refs/heads/main by this push:
     new 081e95cc70 doc: add diagram to describe how DataSource, FileSource, 
and DataSourceExec are related (#16181)
081e95cc70 is described below

commit 081e95cc707e9949900ee254552f104e1b9d05ee
Author: Andy Yen <38731840+onlyjackfr...@users.noreply.github.com>
AuthorDate: Thu May 29 00:11:43 2025 +0800

    doc: add diagram to describe how DataSource, FileSource, and DataSourceExec 
are related (#16181)
    
    * doc: add diagram to describe how DataSource, FileSource, and 
DataSourceExec are related
    
    * update link
    
    * format doc
    
    * fix ci doc test
    
    * update doc
    
    * update diagram
    
    ---------
    
    Co-authored-by: Andrew Lamb <and...@nerdnetworks.org>
---
 datafusion/datasource/src/source.rs | 54 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 53 insertions(+), 1 deletion(-)

diff --git a/datafusion/datasource/src/source.rs 
b/datafusion/datasource/src/source.rs
index 1afe3b3edb..30ecc38709 100644
--- a/datafusion/datasource/src/source.rs
+++ b/datafusion/datasource/src/source.rs
@@ -58,8 +58,60 @@ use datafusion_physical_plan::filter_pushdown::{
 /// Requires `Debug` to assist debugging
 ///
 /// [`FileScanConfig`]: 
https://docs.rs/datafusion/latest/datafusion/datasource/physical_plan/struct.FileScanConfig.html
-/// [`MemorySourceConfig`]: 
https://docs.rs/datafusion/latest//datafusion/datasource/memory/struct.MemorySourceConfig.html
+/// [`MemorySourceConfig`]: 
https://docs.rs/datafusion/latest/datafusion/datasource/memory/struct.MemorySourceConfig.html
 /// [`FileSource`]: crate::file::FileSource
+/// [`FileFormat``]: 
https://docs.rs/datafusion/latest/datafusion/datasource/file_format/index.html
+/// [`TableProvider`]: 
https://docs.rs/datafusion/latest/datafusion/catalog/trait.TableProvider.html
+///
+/// The following diagram shows how DataSource, FileSource, and DataSourceExec 
are related
+/// ```text
+///                       ┌─────────────────────┐                              
-----► execute path
+///                       │                     │                              
┄┄┄┄┄► init path
+///                       │   DataSourceExec    │  
+///                       │                     │    
+///                       └───────▲─────────────┘
+///                               ┊  │
+///                               ┊  │
+///                       ┌──────────▼──────────┐                            
┌──────────-──────────┐
+///                       │                     │                            | 
                    |
+///                       │  DataSource(trait)  │                            | 
TableProvider(trait)|
+///                       │                     │                            | 
                    |
+///                       └───────▲─────────────┘                            
└─────────────────────┘
+///                               ┊  │                                         
         ┊
+///               ┌───────────────┿──┴────────────────┐                        
         ┊
+///               |   ┌┄┄┄┄┄┄┄┄┄┄┄┘                   |                        
         ┊
+///               |   ┊                               |                        
         ┊
+///    ┌──────────▼──────────┐             ┌──────────▼──────────┐             
         ┊
+///    │                     │             │                     │           
┌──────────▼──────────┐
+///    │   FileScanConfig    │             │ MemorySourceConfig  │           | 
                    |
+///    │                     │             │                     │           | 
 FileFormat(trait)  |
+///    └──────────────▲──────┘             └─────────────────────┘           | 
                    |
+///               │   ┊                                                      
└─────────────────────┘
+///               │   ┊                                                        
         ┊
+///               │   ┊                                                        
         ┊
+///    ┌──────────▼──────────┐                                               
┌──────────▼──────────┐
+///    │                     │                                               │ 
    ArrowSource     │
+///    │ FileSource(trait)   ◄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄│ 
         ...        │
+///    │                     │                                               │ 
   ParquetSource    │
+///    └─────────────────────┘                                               
└─────────────────────┘
+///               │
+///               │
+///               │
+///               │
+///    ┌──────────▼──────────┐
+///    │     ArrowSource     │
+///    │          ...        │
+///    │    ParquetSource    │
+///    └─────────────────────┘
+///               |
+/// FileOpener (called by FileStream)
+///               │
+///    ┌──────────▼──────────┐
+///    │                     │
+///    │     RecordBatch     │
+///    │                     │
+///    └─────────────────────┘
+/// ```
 pub trait DataSource: Send + Sync + Debug {
     fn open(
         &self,


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@datafusion.apache.org
For additional commands, e-mail: commits-h...@datafusion.apache.org

Reply via email to