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/datafusion.git
The following commit(s) were added to refs/heads/main by this push:
new 0bd84e1178 Add Window::try_new_from_schema (#10850)
0bd84e1178 is described below
commit 0bd84e1178d4d94a4eebda5a0b4aa06ad348ac30
Author: Bo Lin <[email protected]>
AuthorDate: Mon Jun 10 11:30:03 2024 -0400
Add Window::try_new_from_schema (#10850)
---
datafusion/expr/src/logical_plan/plan.rs | 26 +++++++++++++++++++++++---
1 file changed, 23 insertions(+), 3 deletions(-)
diff --git a/datafusion/expr/src/logical_plan/plan.rs
b/datafusion/expr/src/logical_plan/plan.rs
index 7abe6b70b6..9ea2abe64e 100644
--- a/datafusion/expr/src/logical_plan/plan.rs
+++ b/datafusion/expr/src/logical_plan/plan.rs
@@ -2302,13 +2302,33 @@ impl Window {
window_func_dependencies.extend(new_deps);
}
- Ok(Window {
- input,
+ Self::try_new_with_schema(
window_expr,
- schema: Arc::new(
+ input,
+ Arc::new(
DFSchema::new_with_metadata(window_fields, metadata)?
.with_functional_dependencies(window_func_dependencies)?,
),
+ )
+ }
+
+ pub fn try_new_with_schema(
+ window_expr: Vec<Expr>,
+ input: Arc<LogicalPlan>,
+ schema: DFSchemaRef,
+ ) -> Result<Self> {
+ if window_expr.len() != schema.fields().len() -
input.schema().fields().len() {
+ return plan_err!(
+ "Window has mismatch between number of expressions ({}) and
number of fields in schema ({})",
+ window_expr.len(),
+ schema.fields().len() - input.schema().fields().len()
+ );
+ }
+
+ Ok(Window {
+ input,
+ window_expr,
+ schema,
})
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]