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

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


The following commit(s) were added to refs/heads/main by this push:
     new 8438d2b1ea add schema to SQL ast builder (#9624)
8438d2b1ea is described below

commit 8438d2b1ea67fda64955839fb4bd4ed88b861ade
Author: Suriya Kandaswamy <[email protected]>
AuthorDate: Tue Mar 19 10:14:42 2024 -0400

    add schema to SQL ast builder (#9624)
    
    * add schema to ast builder
    
    * add schema test
---
 datafusion/sql/src/unparser/plan.rs     | 9 ++++++---
 datafusion/sql/tests/sql_integration.rs | 9 +++++++++
 2 files changed, 15 insertions(+), 3 deletions(-)

diff --git a/datafusion/sql/src/unparser/plan.rs 
b/datafusion/sql/src/unparser/plan.rs
index e1f5135efd..c9b0a8a04c 100644
--- a/datafusion/sql/src/unparser/plan.rs
+++ b/datafusion/sql/src/unparser/plan.rs
@@ -124,9 +124,12 @@ impl Unparser<'_> {
         match plan {
             LogicalPlan::TableScan(scan) => {
                 let mut builder = TableRelationBuilder::default();
-                builder.name(ast::ObjectName(vec![
-                    self.new_ident(scan.table_name.table().to_string())
-                ]));
+                let mut table_parts = vec![];
+                if let Some(schema_name) = scan.table_name.schema() {
+                    table_parts.push(self.new_ident(schema_name.to_string()));
+                }
+                
table_parts.push(self.new_ident(scan.table_name.table().to_string()));
+                builder.name(ast::ObjectName(table_parts));
                 relation.table(builder);
 
                 Ok(())
diff --git a/datafusion/sql/tests/sql_integration.rs 
b/datafusion/sql/tests/sql_integration.rs
index 6d335f1f8f..47638e58ff 100644
--- a/datafusion/sql/tests/sql_integration.rs
+++ b/datafusion/sql/tests/sql_integration.rs
@@ -41,6 +41,15 @@ use rstest::rstest;
 use sqlparser::dialect::{Dialect, GenericDialect, HiveDialect, MySqlDialect};
 use sqlparser::parser::Parser;
 
+#[test]
+fn test_schema_support() {
+    quick_test(
+        "SELECT * FROM s1.test",
+        "Projection: s1.test.t_date32, s1.test.t_date64\
+             \n  TableScan: s1.test",
+    );
+}
+
 #[test]
 fn parse_decimals() {
     let test_data = [

Reply via email to