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",