-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
Describe the bug
There is an unreachable!() line in PushDownFilter rule, where LogicalPlan::Window is being handled.
| unreachable!() |
The following query enters there:
pub(crate) const QUERY2: &str = "
-- Define the subquery
WITH SubQuery AS (
SELECT
a.column1,
a.column2 AS ts_column,
a.column3,
SUM(a.column3) OVER (
PARTITION BY a.column1
ORDER BY a.column2 RANGE BETWEEN INTERVAL '10 minutes' PRECEDING AND CURRENT ROW
) AS moving_sum
FROM source_table a
)
SELECT
column1,
ts_column,
moving_sum
FROM SubQuery
WHERE moving_sum > 100
";To Reproduce
#[tokio::test]
async fn test_window_alias_in_subquery() -> Result<()> {
let schema = Arc::new(Schema::new(vec![
Field::new("column1", DataType::Utf8, false),
Field::new(
"column2",
DataType::Timestamp(TimeUnit::Nanosecond, None),
false,
),
Field::new("column3", DataType::Float64, false),
]));
let column1 = Arc::new(StringArray::from(vec!["item1", "item2", "item1"]));
let column2 = Arc::new(TimestampNanosecondArray::from(vec![
1_000_000_000,
2_000_000_000,
3_000_000_000,
]));
let column3 = Arc::new(Float64Array::from(vec![50.0, 30.0, 25.0]));
let source_table =
RecordBatch::try_new(schema.clone(), vec![column1, column2, column3])?;
let mut ctx = SessionContext::new();
ctx.register_batch("source_table", source_table)?;
let df = ctx.sql(QUERY2).await?;
let results = df.collect().await?;
for batch in results {
println!("{:?}", batch);
}
Ok(())
}Expected behavior
It should run without error.
Additional context
This query works successfully:
SELECT
a.column1,
a.column2 AS ts_column,
a.column3,
SUM(a.column3) OVER (
PARTITION BY a.column1
ORDER BY a.column2 RANGE BETWEEN INTERVAL '10 minutes' PRECEDING AND CURRENT ROW
) AS moving_sum
FROM source_table aHowever, if it becomes a subquery, then it starts to fail.
Handling the alias expr in the if let part solves the problem, but I am not sure it is the correct way.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working