Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -4224,7 +4224,7 @@ impl FilterRules {
{
swap_left_and_right = false;
} else if valid_left_filters.contains(date_range_end_op)
|| valid_right_filters.contains(date_range_start_op)
&& valid_right_filters.contains(date_range_start_op)
{
swap_left_and_right = true;
} else {
Expand Down
2 changes: 2 additions & 0 deletions rust/cubesql/cubesql/src/compile/test/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,8 @@ pub mod test_cube_join_grouped;
#[cfg(test)]
pub mod test_df_execution;
#[cfg(test)]
pub mod test_filters;
#[cfg(test)]
pub mod test_introspection;
#[cfg(test)]
pub mod test_udfs;
Expand Down
62 changes: 62 additions & 0 deletions rust/cubesql/cubesql/src/compile/test/test_filters.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
use cubeclient::models::{V1LoadRequestQuery, V1LoadRequestQueryFilterItem};
use pretty_assertions::assert_eq;

use crate::compile::{
rewrite::rewriter::Rewriter,
test::{convert_select_to_query_plan, init_testing_logger, utils::LogicalPlanTestUtils},
DatabaseProtocol,
};

#[tokio::test]
async fn test_filter_date_greated_and_not_null() {
if !Rewriter::sql_push_down_enabled() {
return;
}
init_testing_logger();

let query_plan = convert_select_to_query_plan(
// language=PostgreSQL
r#"
SELECT
dim_str0
FROM MultiTypeCube
WHERE
(dim_date0 IS NOT NULL)
AND (dim_date0 > '2019-01-01 00:00:00')
GROUP BY
dim_str0
;
"#
.to_string(),
DatabaseProtocol::PostgreSQL,
)
.await;

let logical_plan = query_plan.as_logical_plan();
assert_eq!(
logical_plan.find_cube_scan().request,
V1LoadRequestQuery {
measures: Some(vec![]),
dimensions: Some(vec!["MultiTypeCube.dim_str0".to_string()]),
segments: Some(vec![]),
order: Some(vec![]),
filters: Some(vec![
V1LoadRequestQueryFilterItem {
member: Some("MultiTypeCube.dim_date0".to_string()),
operator: Some("set".to_string()),
values: None,
or: None,
and: None,
},
V1LoadRequestQueryFilterItem {
member: Some("MultiTypeCube.dim_date0".to_string()),
operator: Some("afterDate".to_string()),
values: Some(vec!["2019-01-01 00:00:00".to_string()]),
or: None,
and: None,
},
],),
..Default::default()
}
);
}
Loading