This is an automated email from the ASF dual-hosted git repository.
akurmustafa 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 4ac7de17ca Fix optimize projections bug (#8960)
4ac7de17ca is described below
commit 4ac7de17ca4a427872a1b0988a53444e30380222
Author: Mustafa Akur <[email protected]>
AuthorDate: Thu Jan 25 13:16:01 2024 +0300
Fix optimize projections bug (#8960)
* Fix optimize projections bug
* Add new dataframe test
---
datafusion/core/tests/dataframe/mod.rs | 63 +++++++++++++++--
datafusion/optimizer/src/optimize_projections.rs | 27 +++++++-
datafusion/sqllogictest/test_files/window.slt | 88 ++++++++++++++----------
3 files changed, 137 insertions(+), 41 deletions(-)
diff --git a/datafusion/core/tests/dataframe/mod.rs
b/datafusion/core/tests/dataframe/mod.rs
index 588b4647e5..89ab04dfee 100644
--- a/datafusion/core/tests/dataframe/mod.rs
+++ b/datafusion/core/tests/dataframe/mod.rs
@@ -34,18 +34,19 @@ use std::sync::Arc;
use datafusion::dataframe::DataFrame;
use datafusion::datasource::MemTable;
use datafusion::error::Result;
-use datafusion::execution::context::SessionContext;
+use datafusion::execution::context::{SessionContext, SessionState};
use datafusion::prelude::JoinType;
use datafusion::prelude::{CsvReadOptions, ParquetReadOptions};
use datafusion::test_util::parquet_test_data;
use datafusion::{assert_batches_eq, assert_batches_sorted_eq};
use datafusion_common::{assert_contains, DataFusionError, ScalarValue,
UnnestOptions};
use datafusion_execution::config::SessionConfig;
+use datafusion_execution::runtime_env::RuntimeEnv;
use datafusion_expr::expr::{GroupingSet, Sort};
use datafusion_expr::{
- array_agg, avg, col, count, exists, expr, in_subquery, lit, max,
out_ref_col,
- scalar_subquery, sum, wildcard, AggregateFunction, Expr, ExprSchemable,
WindowFrame,
- WindowFrameBound, WindowFrameUnits, WindowFunctionDefinition,
+ array_agg, avg, cast, col, count, exists, expr, in_subquery, lit, max,
out_ref_col,
+ scalar_subquery, sum, when, wildcard, AggregateFunction, Expr,
ExprSchemable,
+ WindowFrame, WindowFrameBound, WindowFrameUnits, WindowFunctionDefinition,
};
use datafusion_physical_expr::var_provider::{VarProvider, VarType};
@@ -1430,6 +1431,60 @@ async fn unnest_analyze_metrics() -> Result<()> {
Ok(())
}
+#[tokio::test]
+async fn consecutive_projection_same_schema() -> Result<()> {
+ let config = SessionConfig::new();
+ let runtime = Arc::new(RuntimeEnv::default());
+ let state = SessionState::new_with_config_rt(config, runtime);
+ let ctx = SessionContext::new_with_state(state);
+
+ let schema = Arc::new(Schema::new(vec![Field::new("id", DataType::Int32,
false)]));
+
+ let batch =
+ RecordBatch::try_new(schema, vec![Arc::new(Int32Array::from(vec![0,
1]))])
+ .unwrap();
+
+ let df = ctx.read_batch(batch).unwrap();
+ df.clone().show().await.unwrap();
+
+ // Add `t` column full of nulls
+ let df = df
+ .with_column("t", cast(Expr::Literal(ScalarValue::Null),
DataType::Int32))
+ .unwrap();
+ df.clone().show().await.unwrap();
+
+ let df = df
+ // (case when id = 1 then 10 else t) as t
+ .with_column(
+ "t",
+ when(col("id").eq(lit(1)), lit(10))
+ .otherwise(col("t"))
+ .unwrap(),
+ )
+ .unwrap()
+ // (case when id = 1 then 10 else t) as t2
+ .with_column(
+ "t2",
+ when(col("id").eq(lit(1)), lit(10))
+ .otherwise(col("t"))
+ .unwrap(),
+ )
+ .unwrap();
+
+ let results = df.collect().await?;
+ let expected = [
+ "+----+----+----+",
+ "| id | t | t2 |",
+ "+----+----+----+",
+ "| 0 | | |",
+ "| 1 | 10 | 10 |",
+ "+----+----+----+",
+ ];
+ assert_batches_sorted_eq!(expected, &results);
+
+ Ok(())
+}
+
async fn create_test_table(name: &str) -> Result<DataFrame> {
let schema = Arc::new(Schema::new(vec![
Field::new("a", DataType::Utf8, false),
diff --git a/datafusion/optimizer/src/optimize_projections.rs
b/datafusion/optimizer/src/optimize_projections.rs
index ab0cb0a265..f87f5fdea9 100644
--- a/datafusion/optimizer/src/optimize_projections.rs
+++ b/datafusion/optimizer/src/optimize_projections.rs
@@ -867,7 +867,9 @@ fn rewrite_projection_given_requirements(
return if let Some(input) =
optimize_projections(&proj.input, config, &required_indices)?
{
- if &projection_schema(&input, &exprs_used)? == input.schema() {
+ if &projection_schema(&input, &exprs_used)? == input.schema()
+ && exprs_used.iter().all(is_expr_trivial)
+ {
Ok(Some(input))
} else {
Projection::try_new(exprs_used, Arc::new(input))
@@ -899,7 +901,7 @@ mod tests {
use datafusion_common::{Result, TableReference};
use datafusion_expr::{
binary_expr, col, count, lit,
logical_plan::builder::LogicalPlanBuilder, not,
- table_scan, try_cast, Expr, Like, LogicalPlan, Operator,
+ table_scan, try_cast, when, Expr, Like, LogicalPlan, Operator,
};
fn assert_optimized_plan_equal(plan: &LogicalPlan, expected: &str) ->
Result<()> {
@@ -1163,4 +1165,25 @@ mod tests {
\n TableScan: test projection=[a]";
assert_optimized_plan_equal(&plan, expected)
}
+
+ // Test outer projection isn't discarded despite the same schema as inner
+ // https://github.com/apache/arrow-datafusion/issues/8942
+ #[test]
+ fn test_derived_column() -> Result<()> {
+ let table_scan = test_table_scan()?;
+ let plan = LogicalPlanBuilder::from(table_scan)
+ .project(vec![col("a"), lit(0).alias("d")])?
+ .project(vec![
+ col("a"),
+ when(col("a").eq(lit(1)), lit(10))
+ .otherwise(col("d"))?
+ .alias("d"),
+ ])?
+ .build()?;
+
+ let expected = "Projection: test.a, CASE WHEN test.a = Int32(1) THEN
Int32(10) ELSE d END AS d\
+ \n Projection: test.a, Int32(0) AS d\
+ \n TableScan: test projection=[a]";
+ assert_optimized_plan_equal(&plan, expected)
+ }
}
diff --git a/datafusion/sqllogictest/test_files/window.slt
b/datafusion/sqllogictest/test_files/window.slt
index f6d8a1ce8f..9b46dfb339 100644
--- a/datafusion/sqllogictest/test_files/window.slt
+++ b/datafusion/sqllogictest/test_files/window.slt
@@ -2947,25 +2947,34 @@ logical_plan
Projection: annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.c, SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.b ASC NULLS LAST, annotated_data_infinite2.c ASC
NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING AS sum1,
SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.b ASC NULLS [...]
--Limit: skip=0, fetch=5
----WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.a ASC NULLS
LAST, annotated_data_infinite2.b ASC NULLS LAST, annotated_data_infinite2.c ASC
NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c AS
annotated_data_infinite2.c) PARTITION BY [annotated_data_infin [...]
-------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c AS
annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.b,
annotated_data_infin [...]
---------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a] ORDER BY [annotate
[...]
-----------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.b ASC NULLS LAST, annotated_data_infinite2.c ASC
NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c AS
annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a, a [...]
-------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c AS
annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data [...]
---------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY [an [...]
-----------------Projection: CAST(annotated_data_infinite2.c AS Int64) AS
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c,
annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.c, annotated_data_infinite2.d
-------------------TableScan: annotated_data_infinite2 projection=[a, b, c, d]
+------Projection: CAST(annotated_data_infinite2.c AS Int64) AS
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c,
annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.c, annotated_data_infinite2.d,
SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING, SUM(annotated_data_infinite2.c)
PARTITION BY [annot [...]
+--------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c AS
annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.b,
annotated_data_inf [...]
+----------Projection: CAST(annotated_data_infinite2.c AS Int64) AS
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c,
annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.c, annotated_data_infinite2.d,
SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING, SUM(annotated_data_infinite2.c)
PARTITION BY [a [...]
+------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a] ORDER BY [anno [...]
+--------------Projection: CAST(annotated_data_infinite2.c AS Int64) AS
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c,
annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.c, annotated_data_infinite2.d,
SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING, SUM(annotated_data_infinite2.c)
PARTITION B [...]
+----------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_infinite2.c
AS Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.b ASC NULLS LAST, annotated_data_infinite2.c ASC
NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c AS
annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite [...]
+------------------Projection: CAST(annotated_data_infinite2.c AS Int64) AS
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c,
annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.c, annotated_data_infinite2.d,
SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING, SUM(annotated_data_infinite2.c)
PARTITI [...]
+--------------------WindowAggr:
windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c AS
annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a, annota
[...]
+----------------------Projection: CAST(annotated_data_infinite2.c AS Int64) AS
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c,
annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.c, annotated_data_infinite2.d,
SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING, SUM(annotated_data_infinite2.c)
PAR [...]
+------------------------WindowAggr:
windowExpr=[[SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(CAST(annotated_data_infinite2.c AS
Int64)annotated_data_infinite2.c AS annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] OR [...]
+--------------------------Projection: CAST(annotated_data_infinite2.c AS
Int64) AS CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c,
annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.c, annotated_data_infinite2.d
+----------------------------TableScan: annotated_data_infinite2 projection=[a,
b, c, d]
physical_plan
ProjectionExec: expr=[a@1 as a, b@2 as b, c@3 as c,
SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.b ASC NULLS
LAST, annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@9 as sum1, SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.b ASC NULLS LAST, annotated_data_infinite2.c ASC NULL
[...]
--GlobalLimitExec: skip=0, fetch=5
----BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.a ASC NULLS
LAST, annotated_data_infinite2.b ASC NULLS LAST, annotated_data_infinite2.c ASC
NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.d]
ORDER BY [annotated_data_infinite2.a ASC NULLS LAST, annotated_data_infinite2.b
ASC NULLS LAST, annotated_data_inf [...]
-------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.b,
annotated_data_infinite2.a, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FO
[...]
---------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c) PARTITION
BY [annotated_data_infinite2.b, annotated_data_infinite2.a] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING: Ok(Field { name: "SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING", data_type: Int64, nullable: true, dict_id: 0 [...]
-----------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c) PARTITION
BY [annotated_data_infinite2.a, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.b ASC NULLS LAST, annotated_data_infinite2.c ASC
NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.b ASC NULLS
LAST, annotated_data_infinite2.c ASC NULLS LAST] [...]
-------------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c)
PARTITION BY [annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AN [...]
---------------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c)
PARTITION BY [annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING: Ok(Field { name: "SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING", data_type: Int64, nullable: true, dict [...]
-----------------ProjectionExec: expr=[CAST(c@2 AS Int64) as
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c, a@0 as a,
b@1 as b, c@2 as c, d@3 as d]
-------------------StreamingTableExec: partition_sizes=1, projection=[a, b, c,
d], infinite_source=true, output_ordering=[a@0 ASC NULLS LAST, b@1 ASC NULLS
LAST, c@2 ASC NULLS LAST]
-
+------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c, a@1 as a,
b@2 as b, c@3 as c, d@4 as d, SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infin [...]
+--------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c) PARTITION
BY [annotated_data_infinite2.b, annotated_data_infinite2.a,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.b,
annotated_data_infinite2.a, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
[...]
+----------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c, a@1 as a,
b@2 as b, c@3 as c, d@4 as d, SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_i [...]
+------------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c)
PARTITION BY [annotated_data_infinite2.b, annotated_data_infinite2.a] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING: Ok(Field { name: "SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.b, annotated_data_infinite2.a] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING", data_type: Int64, nullable: true, dict_i [...]
+--------------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c, a@1 as a,
b@2 as b, c@3 as c, d@4 as d, SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY [annotated_da
[...]
+----------------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c)
PARTITION BY [annotated_data_infinite2.a, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.b ASC NULLS LAST, annotated_data_infinite2.c ASC
NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.b ASC NULLS
LAST, annotated_data_infinite2.c ASC NULLS [...]
+------------------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c, a@1 as a,
b@2 as b, c@3 as c, d@4 as d, SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY [annotate
[...]
+--------------------BoundedWindowAggExec: wdw=[SUM(annotated_data_infinite2.c)
PARTITION BY [annotated_data_infinite2.a, annotated_data_infinite2.b,
annotated_data_infinite2.d] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b, annotated_data_infinite2.d] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PREC [...]
+----------------------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c, a@1 as a,
b@2 as b, c@3 as c, d@4 as d, SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY
[annotated_data_infinite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_infinite2.c) PARTITION BY
[annotated_data_infinite2.a, annotated_data_infinite2.b] ORDER BY [anno [...]
+------------------------BoundedWindowAggExec:
wdw=[SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_infinite2.c) PARTITION BY [annotated_data_infinite2.a,
annotated_data_infinite2.b] ORDER BY [annotated_data_infinite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING", data_type: Int64, nullable:
[...]
+--------------------------ProjectionExec: expr=[CAST(c@2 AS Int64) as
CAST(annotated_data_infinite2.c AS Int64)annotated_data_infinite2.c, a@0 as a,
b@1 as b, c@2 as c, d@3 as d]
+----------------------------StreamingTableExec: partition_sizes=1,
projection=[a, b, c, d], infinite_source=true, output_ordering=[a@0 ASC NULLS
LAST, b@1 ASC NULLS LAST, c@2 ASC NULLS LAST]
query IIIIIIIIIIIIIII
SELECT a, b, c,
@@ -3017,31 +3026,40 @@ Limit: skip=0, fetch=5
--Sort: annotated_data_finite2.c ASC NULLS LAST, fetch=5
----Projection: annotated_data_finite2.a, annotated_data_finite2.b,
annotated_data_finite2.c, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.b ASC NULLS LAST, annotated_data_finite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING AS sum1,
SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.d] ORDER BY [annotated_data_finite2.b ASC NULLS LAST,
annotated_dat [...]
------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.d] ORDER BY [annotated_data_finite2.a ASC NULLS LAST,
annotated_data_finite2.b ASC NULLS LAST, annotated_data_finite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c AS
annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.d] ORDER BY [an
[...]
---------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.b, annotated_data_finite2.a, annotated_data_finite2.d]
ORDER BY [annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND
1 FOLLOWING, SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.b, annotated_data_finite2.a, annotated_data [...]
-----------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.b, annotated_data_finite2.a] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c
AS annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.b,
annotated_data_finite2.a] ORDER BY [annotated_data_finite2.c ASC [...]
-------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.b ASC NULLS LAST, annotated_data_finite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c AS
annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite [...]
---------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.d]
ORDER BY [annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND
1 FOLLOWING, SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b, annotate [...]
-----------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c
AS annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.b] ORDER BY [annotated_data_finite2 [...]
-------------------Projection: CAST(annotated_data_finite2.c AS Int64) AS
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c,
annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.c,
annotated_data_finite2.d
---------------------TableScan: annotated_data_finite2 projection=[a, b, c, d]
+--------Projection: CAST(annotated_data_finite2.c AS Int64) AS
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c,
annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.c,
annotated_data_finite2.d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, a [...]
+----------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.b, annotated_data_finite2.a, annotated_data_finite2.d]
ORDER BY [annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND
1 FOLLOWING, SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.b, annotated_data_finite2.a, annotated_da [...]
+------------Projection: CAST(annotated_data_finite2.c AS Int64) AS
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c,
annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.c,
annotated_data_finite2.d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.
[...]
+--------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.b, annotated_data_finite2.a] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c
AS annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.b,
annotated_data_finite2.a] ORDER BY [annotated_data_finite2.c [...]
+----------------Projection: CAST(annotated_data_finite2.c AS Int64) AS
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c,
annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.c,
annotated_data_finite2.d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_fini [...]
+------------------WindowAggr: windowExpr=[[SUM(CAST(annotated_data_finite2.c
AS Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.b ASC NULLS LAST, annotated_data_finite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING,
SUM(CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c AS
annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_ [...]
+--------------------Projection: CAST(annotated_data_finite2.c AS Int64) AS
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c,
annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.c,
annotated_data_finite2.d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_ [...]
+----------------------WindowAggr:
windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.d]
ORDER BY [annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND
1 FOLLOWING, SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b, [...]
+------------------------Projection: CAST(annotated_data_finite2.c AS Int64) AS
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c,
annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.c,
annotated_data_finite2.d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(annotated_data_finite2.c) PARTITION BY [annotated_d [...]
+--------------------------WindowAggr:
windowExpr=[[SUM(CAST(annotated_data_finite2.c AS
Int64)annotated_data_finite2.c AS annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING, SUM(CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c
AS annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.b] ORDER BY [annotated_da [...]
+----------------------------Projection: CAST(annotated_data_finite2.c AS
Int64) AS CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c,
annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.c,
annotated_data_finite2.d
+------------------------------TableScan: annotated_data_finite2 projection=[a,
b, c, d]
physical_plan
GlobalLimitExec: skip=0, fetch=5
--SortExec: TopK(fetch=5), expr=[c@2 ASC NULLS LAST]
----ProjectionExec: expr=[a@1 as a, b@2 as b, c@3 as c,
SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.d] ORDER BY [annotated_data_finite2.b ASC NULLS LAST,
annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@9 as sum1, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.b ASC NULLS LAST, annotated_data_finite2.c ASC NULLS
LAST] ROWS BET [...]
------BoundedWindowAggExec: wdw=[SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.d] ORDER BY [annotated_data_finite2.a ASC NULLS LAST,
annotated_data_finite2.b ASC NULLS LAST, annotated_data_finite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.a ASC NULLS LAST, annotated_data_finite2.b ASC NULLS
LAST, annotated_data_finite2.c ASC NULLS [...]
--------SortExec: expr=[d@4 ASC NULLS LAST,a@1 ASC NULLS LAST,b@2 ASC NULLS
LAST,c@3 ASC NULLS LAST]
-----------BoundedWindowAggExec: wdw=[SUM(annotated_data_finite2.c) PARTITION
BY [annotated_data_finite2.b, annotated_data_finite2.a,
annotated_data_finite2.d] ORDER BY [annotated_data_finite2.c ASC NULLS LAST]
ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.b,
annotated_data_finite2.a, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING", data_t [...]
-------------SortExec: expr=[b@2 ASC NULLS LAST,a@1 ASC NULLS LAST,d@4 ASC
NULLS LAST,c@3 ASC NULLS LAST]
---------------BoundedWindowAggExec: wdw=[SUM(annotated_data_finite2.c)
PARTITION BY [annotated_data_finite2.b, annotated_data_finite2.a] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING: Ok(Field { name: "SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.b, annotated_data_finite2.a] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING", data_type: Int64, nullable: true, dict_id: 0, dict_is_ [...]
-----------------SortExec: expr=[b@2 ASC NULLS LAST,a@1 ASC NULLS LAST,c@3 ASC
NULLS LAST]
-------------------BoundedWindowAggExec: wdw=[SUM(annotated_data_finite2.c)
PARTITION BY [annotated_data_finite2.a, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.b ASC NULLS LAST, annotated_data_finite2.c ASC NULLS
LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.d] ORDER BY [annotated_data_finite2.b ASC NULLS LAST,
annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEE [...]
---------------------SortExec: expr=[a@1 ASC NULLS LAST,d@4 ASC NULLS LAST,b@2
ASC NULLS LAST,c@3 ASC NULLS LAST]
-----------------------BoundedWindowAggExec: wdw=[SUM(annotated_data_finite2.c)
PARTITION BY [annotated_data_finite2.a, annotated_data_finite2.b,
annotated_data_finite2.d] ORDER BY [annotated_data_finite2.c ASC NULLS LAST]
ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.b, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1 FOLLOW
[...]
-------------------------SortExec: expr=[a@1 ASC NULLS LAST,b@2 ASC NULLS
LAST,d@4 ASC NULLS LAST,c@3 ASC NULLS LAST]
---------------------------BoundedWindowAggExec:
wdw=[SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.b] ORDER BY [annotated_data_finite2.c ASC NULLS LAST]
ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.b] ORDER BY [annotated_data_finite2.c ASC NULLS LAST]
ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING", data_type: Int64, nullable: true,
dict_id: [...]
-----------------------------ProjectionExec: expr=[CAST(c@2 AS Int64) as
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c, a@0 as a, b@1
as b, c@2 as c, d@3 as d]
-------------------------------CsvExec: file_groups={1 group:
[[WORKSPACE_ROOT/datafusion/core/tests/data/window_2.csv]]}, projection=[a, b,
c, d], output_ordering=[a@0 ASC NULLS LAST, b@1 ASC NULLS LAST, c@2 ASC NULLS
LAST], has_header=true
-
+----------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c, a@1 as a, b@2
as b, c@3 as c, d@4 as d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS [...]
+------------BoundedWindowAggExec: wdw=[SUM(annotated_data_finite2.c) PARTITION
BY [annotated_data_finite2.b, annotated_data_finite2.a,
annotated_data_finite2.d] ORDER BY [annotated_data_finite2.c ASC NULLS LAST]
ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.b,
annotated_data_finite2.a, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING", data [...]
+--------------SortExec: expr=[b@2 ASC NULLS LAST,a@1 ASC NULLS LAST,d@4 ASC
NULLS LAST,c@3 ASC NULLS LAST]
+----------------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c, a@1 as a, b@2
as b, c@3 as c, d@4 as d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC [...]
+------------------BoundedWindowAggExec: wdw=[SUM(annotated_data_finite2.c)
PARTITION BY [annotated_data_finite2.b, annotated_data_finite2.a] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING: Ok(Field { name: "SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.b, annotated_data_finite2.a] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING", data_type: Int64, nullable: true, dict_id: 0, dict [...]
+--------------------SortExec: expr=[b@2 ASC NULLS LAST,a@1 ASC NULLS LAST,c@3
ASC NULLS LAST]
+----------------------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c, a@1 as a, b@2
as b, c@3 as c, d@4 as d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2 [...]
+------------------------BoundedWindowAggExec:
wdw=[SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.d] ORDER BY [annotated_data_finite2.b ASC NULLS LAST,
annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING: Ok(Field { name: "SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.b ASC NULLS LAST, annotated_data_finite2.c ASC NULLS
LAST] ROWS [...]
+--------------------------SortExec: expr=[a@1 ASC NULLS LAST,d@4 ASC NULLS
LAST,b@2 ASC NULLS LAST,c@3 ASC NULLS LAST]
+----------------------------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c, a@1 as a, b@2
as b, c@3 as c, d@4 as d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY [annotated_data_f
[...]
+------------------------------BoundedWindowAggExec:
wdw=[SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.b, annotated_data_finite2.d] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING: Ok(Field { name: "SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b, annotated_data_finite2.d]
ORDER BY [annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND
[...]
+--------------------------------SortExec: expr=[a@1 ASC NULLS LAST,b@2 ASC
NULLS LAST,d@4 ASC NULLS LAST,c@3 ASC NULLS LAST]
+----------------------------------ProjectionExec: expr=[CAST(c@3 AS Int64) as
CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c, a@1 as a, b@2
as b, c@3 as c, d@4 as d, SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY
[annotated_data_finite2.c ASC NULLS LAST] ROWS BETWEEN 2 PRECEDING AND 1
FOLLOWING@5 as SUM(annotated_data_finite2.c) PARTITION BY
[annotated_data_finite2.a, annotated_data_finite2.b] ORDER BY [annotated_ [...]
+------------------------------------BoundedWindowAggExec:
wdw=[SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.b] ORDER BY [annotated_data_finite2.c ASC NULLS LAST]
ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING: Ok(Field { name:
"SUM(annotated_data_finite2.c) PARTITION BY [annotated_data_finite2.a,
annotated_data_finite2.b] ORDER BY [annotated_data_finite2.c ASC NULLS LAST]
ROWS BETWEEN 2 PRECEDING AND 1 FOLLOWING", data_type: Int64, nullable: true
[...]
+--------------------------------------ProjectionExec: expr=[CAST(c@2 AS Int64)
as CAST(annotated_data_finite2.c AS Int64)annotated_data_finite2.c, a@0 as a,
b@1 as b, c@2 as c, d@3 as d]
+----------------------------------------CsvExec: file_groups={1 group:
[[WORKSPACE_ROOT/datafusion/core/tests/data/window_2.csv]]}, projection=[a, b,
c, d], output_ordering=[a@0 ASC NULLS LAST, b@1 ASC NULLS LAST, c@2 ASC NULLS
LAST], has_header=true
query IIIIIIIIIIIIIII
SELECT a, b, c,
@@ -3971,4 +3989,4 @@ Int64
query T
select arrow_typeof(nth_value(a, 1) over ()) from (select 1 a)
----
-Int64
\ No newline at end of file
+Int64