Skip to content

Commit 7553b3b

Browse files
authored
Rename BuiltInWindow* to StandardWindow* (#13536)
* Rename `BuiltInWindow` to `UDFWindow` * fmt * add * fix issues
1 parent 2e05648 commit 7553b3b

File tree

7 files changed

+49
-44
lines changed

7 files changed

+49
-44
lines changed

datafusion/physical-expr/src/window/mod.rs

+10-4
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,21 @@
1616
// under the License.
1717

1818
mod aggregate;
19-
mod built_in;
20-
mod built_in_window_function_expr;
2119
mod sliding_aggregate;
20+
mod standard;
21+
mod standard_window_function_expr;
2222
mod window_expr;
2323

24+
#[deprecated(since = "44.0.0", note = "use StandardWindowExpr")]
25+
pub type BuiltInWindowExpr = StandardWindowExpr;
26+
27+
#[deprecated(since = "44.0.0", note = "use StandardWindowFunctionExpr")]
28+
pub type BuiltInWindowFunctionExpr = dyn StandardWindowFunctionExpr;
29+
2430
pub use aggregate::PlainAggregateWindowExpr;
25-
pub use built_in::BuiltInWindowExpr;
26-
pub use built_in_window_function_expr::BuiltInWindowFunctionExpr;
2731
pub use sliding_aggregate::SlidingAggregateWindowExpr;
32+
pub use standard::StandardWindowExpr;
33+
pub use standard_window_function_expr::StandardWindowFunctionExpr;
2834
pub use window_expr::PartitionBatches;
2935
pub use window_expr::PartitionKey;
3036
pub use window_expr::PartitionWindowAggStates;

datafusion/physical-expr/src/window/built_in.rs renamed to datafusion/physical-expr/src/window/standard.rs

+13-13
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
//! Physical exec for built-in window function expressions.
18+
//! Physical exec for standard window function expressions.
1919
2020
use std::any::Any;
2121
use std::ops::Range;
2222
use std::sync::Arc;
2323

24-
use super::{BuiltInWindowFunctionExpr, WindowExpr};
24+
use super::{StandardWindowFunctionExpr, WindowExpr};
2525
use crate::window::window_expr::{get_orderby_values, WindowFn};
2626
use crate::window::{PartitionBatches, PartitionWindowAggStates, WindowState};
2727
use crate::{reverse_order_bys, EquivalenceProperties, PhysicalExpr};
@@ -35,19 +35,19 @@ use datafusion_expr::window_state::{WindowAggState, WindowFrameContext};
3535
use datafusion_expr::WindowFrame;
3636
use datafusion_physical_expr_common::sort_expr::LexOrdering;
3737

38-
/// A window expr that takes the form of a [`BuiltInWindowFunctionExpr`].
38+
/// A window expr that takes the form of a [`StandardWindowFunctionExpr`].
3939
#[derive(Debug)]
40-
pub struct BuiltInWindowExpr {
41-
expr: Arc<dyn BuiltInWindowFunctionExpr>,
40+
pub struct StandardWindowExpr {
41+
expr: Arc<dyn StandardWindowFunctionExpr>,
4242
partition_by: Vec<Arc<dyn PhysicalExpr>>,
4343
order_by: LexOrdering,
4444
window_frame: Arc<WindowFrame>,
4545
}
4646

47-
impl BuiltInWindowExpr {
48-
/// create a new built-in window function expression
47+
impl StandardWindowExpr {
48+
/// create a new standard window function expression
4949
pub fn new(
50-
expr: Arc<dyn BuiltInWindowFunctionExpr>,
50+
expr: Arc<dyn StandardWindowFunctionExpr>,
5151
partition_by: &[Arc<dyn PhysicalExpr>],
5252
order_by: &LexOrdering,
5353
window_frame: Arc<WindowFrame>,
@@ -60,8 +60,8 @@ impl BuiltInWindowExpr {
6060
}
6161
}
6262

63-
/// Get BuiltInWindowFunction expr of BuiltInWindowExpr
64-
pub fn get_built_in_func_expr(&self) -> &Arc<dyn BuiltInWindowFunctionExpr> {
63+
/// Get StandardWindowFunction expr of StandardWindowExpr
64+
pub fn get_standard_func_expr(&self) -> &Arc<dyn StandardWindowFunctionExpr> {
6565
&self.expr
6666
}
6767

@@ -79,7 +79,7 @@ impl BuiltInWindowExpr {
7979
eq_properties
8080
.add_new_orderings([LexOrdering::new(vec![fn_res_ordering])]);
8181
} else {
82-
// If we have a PARTITION BY, built-in functions can not introduce
82+
// If we have a PARTITION BY, standard functions can not introduce
8383
// a global ordering unless the existing ordering is compatible
8484
// with PARTITION BY expressions. To elaborate, when PARTITION BY
8585
// expressions and existing ordering expressions are equal (w.r.t.
@@ -96,7 +96,7 @@ impl BuiltInWindowExpr {
9696
}
9797
}
9898

99-
impl WindowExpr for BuiltInWindowExpr {
99+
impl WindowExpr for StandardWindowExpr {
100100
/// Return a reference to Any that can be used for downcasting
101101
fn as_any(&self) -> &dyn Any {
102102
self
@@ -264,7 +264,7 @@ impl WindowExpr for BuiltInWindowExpr {
264264

265265
fn get_reverse_expr(&self) -> Option<Arc<dyn WindowExpr>> {
266266
self.expr.reverse_expr().map(|reverse_expr| {
267-
Arc::new(BuiltInWindowExpr::new(
267+
Arc::new(StandardWindowExpr::new(
268268
reverse_expr,
269269
&self.partition_by.clone(),
270270
reverse_order_bys(self.order_by.as_ref()).as_ref(),

datafusion/physical-expr/src/window/built_in_window_function_expr.rs renamed to datafusion/physical-expr/src/window/standard_window_function_expr.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ use std::sync::Arc;
3636
/// but others such as `first_value`, `last_value`, and
3737
/// `nth_value` need the value.
3838
#[allow(rustdoc::private_intra_doc_links)]
39-
pub trait BuiltInWindowFunctionExpr: Send + Sync + std::fmt::Debug {
39+
pub trait StandardWindowFunctionExpr: Send + Sync + std::fmt::Debug {
4040
/// Returns the aggregate expression as [`Any`] so that it can be
4141
/// downcast to a specific implementation.
4242
fn as_any(&self) -> &dyn Any;
@@ -50,7 +50,7 @@ pub trait BuiltInWindowFunctionExpr: Send + Sync + std::fmt::Debug {
5050
/// Human readable name such as `"MIN(c2)"` or `"RANK()"`. The default
5151
/// implementation returns placeholder text.
5252
fn name(&self) -> &str {
53-
"BuiltInWindowFunctionExpr: default name"
53+
"StandardWindowFunctionExpr: default name"
5454
}
5555

5656
/// Evaluate window function's arguments against the input window
@@ -71,7 +71,7 @@ pub trait BuiltInWindowFunctionExpr: Send + Sync + std::fmt::Debug {
7171
/// a particular partition.
7272
fn create_evaluator(&self) -> Result<Box<dyn PartitionEvaluator>>;
7373

74-
/// Construct a new [`BuiltInWindowFunctionExpr`] that produces
74+
/// Construct a new [`StandardWindowFunctionExpr`] that produces
7575
/// the same result as this function on a window with reverse
7676
/// order. The return value of this function is used by the
7777
/// DataFusion optimizer to avoid re-sorting the data when
@@ -80,7 +80,7 @@ pub trait BuiltInWindowFunctionExpr: Send + Sync + std::fmt::Debug {
8080
/// Returns `None` (the default) if no reverse is known (or possible).
8181
///
8282
/// For example, the reverse of `lead(10)` is `lag(10)`.
83-
fn reverse_expr(&self) -> Option<Arc<dyn BuiltInWindowFunctionExpr>> {
83+
fn reverse_expr(&self) -> Option<Arc<dyn StandardWindowFunctionExpr>> {
8484
None
8585
}
8686

datafusion/physical-plan/src/windows/bounded_window_agg_exec.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1189,7 +1189,7 @@ mod tests {
11891189

11901190
use crate::common::collect;
11911191
use crate::memory::MemoryExec;
1192-
use datafusion_physical_expr::window::BuiltInWindowExpr;
1192+
use datafusion_physical_expr::window::StandardWindowExpr;
11931193
use futures::future::Shared;
11941194
use futures::{pin_mut, ready, FutureExt, Stream, StreamExt};
11951195
use itertools::Itertools;
@@ -1562,7 +1562,7 @@ mod tests {
15621562

15631563
let window_exprs = vec![
15641564
// LAST_VALUE(a)
1565-
Arc::new(BuiltInWindowExpr::new(
1565+
Arc::new(StandardWindowExpr::new(
15661566
last_value_func,
15671567
&[],
15681568
&LexOrdering::default(),
@@ -1573,7 +1573,7 @@ mod tests {
15731573
)),
15741574
)) as _,
15751575
// NTH_VALUE(a, -1)
1576-
Arc::new(BuiltInWindowExpr::new(
1576+
Arc::new(StandardWindowExpr::new(
15771577
nth_value_func1,
15781578
&[],
15791579
&LexOrdering::default(),
@@ -1584,7 +1584,7 @@ mod tests {
15841584
)),
15851585
)) as _,
15861586
// NTH_VALUE(a, -2)
1587-
Arc::new(BuiltInWindowExpr::new(
1587+
Arc::new(StandardWindowExpr::new(
15881588
nth_value_func2,
15891589
&[],
15901590
&LexOrdering::default(),

datafusion/physical-plan/src/windows/mod.rs

+10-11
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use datafusion_physical_expr::aggregate::{AggregateExprBuilder, AggregateFunctio
3535
use datafusion_physical_expr::equivalence::collapse_lex_req;
3636
use datafusion_physical_expr::{
3737
reverse_order_bys,
38-
window::{BuiltInWindowFunctionExpr, SlidingAggregateWindowExpr},
38+
window::{SlidingAggregateWindowExpr, StandardWindowFunctionExpr},
3939
ConstExpr, EquivalenceProperties, LexOrdering, PhysicalSortRequirement,
4040
};
4141
use itertools::Itertools;
@@ -50,7 +50,7 @@ use datafusion_functions_window_common::field::WindowUDFFieldArgs;
5050
use datafusion_functions_window_common::partition::PartitionEvaluatorArgs;
5151
use datafusion_physical_expr::expressions::Column;
5252
pub use datafusion_physical_expr::window::{
53-
BuiltInWindowExpr, PlainAggregateWindowExpr, WindowExpr,
53+
PlainAggregateWindowExpr, StandardWindowExpr, WindowExpr,
5454
};
5555
use datafusion_physical_expr_common::sort_expr::LexRequirement;
5656
pub use window_agg_exec::WindowAggExec;
@@ -117,7 +117,7 @@ pub fn create_window_expr(
117117
aggregate,
118118
)
119119
}
120-
WindowFunctionDefinition::WindowUDF(fun) => Arc::new(BuiltInWindowExpr::new(
120+
WindowFunctionDefinition::WindowUDF(fun) => Arc::new(StandardWindowExpr::new(
121121
create_udwf_window_expr(fun, args, input_schema, name, ignore_nulls)?,
122122
partition_by,
123123
order_by,
@@ -153,14 +153,14 @@ fn window_expr_from_aggregate_expr(
153153
}
154154
}
155155

156-
/// Creates a `BuiltInWindowFunctionExpr` suitable for a user defined window function
156+
/// Creates a `StandardWindowFunctionExpr` suitable for a user defined window function
157157
pub fn create_udwf_window_expr(
158158
fun: &Arc<WindowUDF>,
159159
args: &[Arc<dyn PhysicalExpr>],
160160
input_schema: &Schema,
161161
name: String,
162162
ignore_nulls: bool,
163-
) -> Result<Arc<dyn BuiltInWindowFunctionExpr>> {
163+
) -> Result<Arc<dyn StandardWindowFunctionExpr>> {
164164
// need to get the types into an owned vec for some reason
165165
let input_types: Vec<_> = args
166166
.iter()
@@ -192,7 +192,7 @@ pub fn create_udwf_window_expr(
192192
Ok(udwf_expr)
193193
}
194194

195-
/// Implements [`BuiltInWindowFunctionExpr`] for [`WindowUDF`]
195+
/// Implements [`StandardWindowFunctionExpr`] for [`WindowUDF`]
196196
#[derive(Clone, Debug)]
197197
pub struct WindowUDFExpr {
198198
fun: Arc<WindowUDF>,
@@ -215,7 +215,7 @@ impl WindowUDFExpr {
215215
}
216216
}
217217

218-
impl BuiltInWindowFunctionExpr for WindowUDFExpr {
218+
impl StandardWindowFunctionExpr for WindowUDFExpr {
219219
fn as_any(&self) -> &dyn std::any::Any {
220220
self
221221
}
@@ -244,7 +244,7 @@ impl BuiltInWindowFunctionExpr for WindowUDFExpr {
244244
&self.name
245245
}
246246

247-
fn reverse_expr(&self) -> Option<Arc<dyn BuiltInWindowFunctionExpr>> {
247+
fn reverse_expr(&self) -> Option<Arc<dyn StandardWindowFunctionExpr>> {
248248
match self.fun.reverse_expr() {
249249
ReversedUDWF::Identical => Some(Arc::new(self.clone())),
250250
ReversedUDWF::NotSupported => None,
@@ -345,10 +345,9 @@ pub(crate) fn window_equivalence_properties(
345345
.extend(input.equivalence_properties().clone());
346346

347347
for expr in window_expr {
348-
if let Some(builtin_window_expr) =
349-
expr.as_any().downcast_ref::<BuiltInWindowExpr>()
348+
if let Some(udf_window_expr) = expr.as_any().downcast_ref::<StandardWindowExpr>()
350349
{
351-
builtin_window_expr.add_equal_orderings(&mut window_eq_properties);
350+
udf_window_expr.add_equal_orderings(&mut window_eq_properties);
352351
}
353352
}
354353
window_eq_properties

datafusion/proto/src/physical_plan/to_proto.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use std::sync::Arc;
1919

2020
#[cfg(feature = "parquet")]
2121
use datafusion::datasource::file_format::parquet::ParquetSink;
22-
use datafusion::physical_expr::window::{BuiltInWindowExpr, SlidingAggregateWindowExpr};
22+
use datafusion::physical_expr::window::{SlidingAggregateWindowExpr, StandardWindowExpr};
2323
use datafusion::physical_expr::{LexOrdering, PhysicalSortExpr, ScalarFunctionExpr};
2424
use datafusion::physical_plan::expressions::{
2525
BinaryExpr, CaseExpr, CastExpr, Column, InListExpr, IsNotNullExpr, IsNullExpr,
@@ -120,9 +120,9 @@ pub fn serialize_physical_window_expr(
120120
window_frame,
121121
codec,
122122
)?
123-
} else if let Some(built_in_window_expr) = expr.downcast_ref::<BuiltInWindowExpr>() {
124-
if let Some(expr) = built_in_window_expr
125-
.get_built_in_func_expr()
123+
} else if let Some(udf_window_expr) = expr.downcast_ref::<StandardWindowExpr>() {
124+
if let Some(expr) = udf_window_expr
125+
.get_standard_func_expr()
126126
.as_any()
127127
.downcast_ref::<WindowUDFExpr>()
128128
{

datafusion/proto/tests/cases/roundtrip_physical_plan.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ use datafusion::functions_window::nth_value::nth_value_udwf;
5454
use datafusion::functions_window::row_number::row_number_udwf;
5555
use datafusion::logical_expr::{create_udf, JoinType, Operator, Volatility};
5656
use datafusion::physical_expr::expressions::Literal;
57-
use datafusion::physical_expr::window::{BuiltInWindowExpr, SlidingAggregateWindowExpr};
57+
use datafusion::physical_expr::window::{SlidingAggregateWindowExpr, StandardWindowExpr};
5858
use datafusion::physical_expr::{
5959
LexOrdering, LexRequirement, PhysicalSortRequirement, ScalarFunctionExpr,
6060
};
@@ -279,7 +279,7 @@ fn roundtrip_udwf() -> Result<()> {
279279
let field_b = Field::new("b", DataType::Int64, false);
280280
let schema = Arc::new(Schema::new(vec![field_a, field_b]));
281281

282-
let udwf_expr = Arc::new(BuiltInWindowExpr::new(
282+
let udwf_expr = Arc::new(StandardWindowExpr::new(
283283
create_udwf_window_expr(
284284
&row_number_udwf(),
285285
&[],
@@ -326,7 +326,7 @@ fn roundtrip_window() -> Result<()> {
326326
"NTH_VALUE(a, 2) PARTITION BY [b] ORDER BY [a ASC NULLS LAST] RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW".to_string(),
327327
false,
328328
)?;
329-
let udwf_expr = Arc::new(BuiltInWindowExpr::new(
329+
let udwf_expr = Arc::new(StandardWindowExpr::new(
330330
nth_value_window,
331331
&[col("b", &schema)?],
332332
&LexOrdering {
@@ -1125,7 +1125,7 @@ fn roundtrip_udwf_extension_codec() -> Result<()> {
11251125
WindowFrameBound::CurrentRow,
11261126
);
11271127

1128-
let udwf_expr = Arc::new(BuiltInWindowExpr::new(
1128+
let udwf_expr = Arc::new(StandardWindowExpr::new(
11291129
udwf,
11301130
&[col("b", &schema)?],
11311131
&LexOrdering {

0 commit comments

Comments
 (0)