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

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


The following commit(s) were added to refs/heads/master by this push:
     new aa6a34b4d CREATE VIEW should return empty dataframe (#3237)
aa6a34b4d is described below

commit aa6a34b4d1110b1a3b19276885d1b9e81277ce34
Author: kmitchener <[email protected]>
AuthorDate: Wed Aug 24 08:25:43 2022 -0400

    CREATE VIEW should return empty dataframe (#3237)
---
 datafusion/core/src/datasource/view.rs   | 15 +++++++++++++++
 datafusion/core/src/execution/context.rs |  6 ++++--
 2 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/datafusion/core/src/datasource/view.rs 
b/datafusion/core/src/datasource/view.rs
index c93d83f27..1809f2a08 100644
--- a/datafusion/core/src/datasource/view.rs
+++ b/datafusion/core/src/datasource/view.rs
@@ -99,6 +99,21 @@ mod tests {
 
     use super::*;
 
+    #[tokio::test]
+    async fn create_view_return_empty_dataframe() -> Result<()> {
+        let session_ctx = SessionContext::new();
+
+        let df = session_ctx
+            .sql("CREATE VIEW xyz AS SELECT 1")
+            .await?
+            .collect()
+            .await?;
+
+        assert!(df.is_empty());
+
+        Ok(())
+    }
+
     #[tokio::test]
     async fn query_view() -> Result<()> {
         let session_ctx = SessionContext::with_config(
diff --git a/datafusion/core/src/execution/context.rs 
b/datafusion/core/src/execution/context.rs
index 7299ca7ac..a00babfe4 100644
--- a/datafusion/core/src/execution/context.rs
+++ b/datafusion/core/src/execution/context.rs
@@ -370,14 +370,16 @@ impl SessionContext {
                             Arc::new(ViewTable::try_new((*input).clone(), 
definition)?);
 
                         self.register_table(name.as_str(), table)?;
-                        Ok(Arc::new(DataFrame::new(self.state.clone(), 
&input)))
+                        let plan = LogicalPlanBuilder::empty(false).build()?;
+                        Ok(Arc::new(DataFrame::new(self.state.clone(), &plan)))
                     }
                     (_, Err(_)) => {
                         let table =
                             Arc::new(ViewTable::try_new((*input).clone(), 
definition)?);
 
                         self.register_table(name.as_str(), table)?;
-                        Ok(Arc::new(DataFrame::new(self.state.clone(), 
&input)))
+                        let plan = LogicalPlanBuilder::empty(false).build()?;
+                        Ok(Arc::new(DataFrame::new(self.state.clone(), &plan)))
                     }
                     (false, Ok(_)) => Err(DataFusionError::Execution(format!(
                         "Table '{:?}' already exists",

Reply via email to