Skip to content

Commit f3bf6ca

Browse files
committed
chore: update tests to use Column::new and other expr_fn functions
Signed-off-by: Andrew Lamb <[email protected]>
1 parent bc09ff3 commit f3bf6ca

File tree

1 file changed

+61
-175
lines changed

1 file changed

+61
-175
lines changed

crates/core/src/operations/merge/filter.rs

Lines changed: 61 additions & 175 deletions
Original file line numberDiff line numberDiff line change
@@ -453,14 +453,7 @@ mod tests {
453453
.build()
454454
.unwrap();
455455

456-
let join_predicate = col(Column {
457-
relation: Some(source_name.clone()),
458-
name: "id".to_owned(),
459-
})
460-
.eq(col(Column {
461-
relation: Some(target_name.clone()),
462-
name: "id".to_owned(),
463-
}));
456+
let join_predicate = make_join_predicate(&source_name, &target_name);
464457

465458
let pred = try_construct_early_filter(
466459
join_predicate,
@@ -551,14 +544,7 @@ mod tests {
551544
.build()
552545
.unwrap();
553546

554-
let join_predicate = col(Column {
555-
relation: Some(source_name.clone()),
556-
name: "id".to_owned(),
557-
})
558-
.eq(col(Column {
559-
relation: Some(target_name.clone()),
560-
name: "id".to_owned(),
561-
}));
547+
let join_predicate = make_join_predicate(&source_name, &target_name);
562548

563549
let pred = try_construct_early_filter(
564550
join_predicate,
@@ -574,14 +560,7 @@ mod tests {
574560

575561
assert!(pred.is_some());
576562

577-
let filter = col(Column {
578-
relation: Some(target_name.clone()),
579-
name: "id".to_owned(),
580-
})
581-
.between(
582-
Expr::Literal(ScalarValue::Utf8(Some("B".to_string()))),
583-
Expr::Literal(ScalarValue::Utf8(Some("C".to_string()))),
584-
);
563+
let filter = col(Column::new(Some(target_name.clone()), "id")).between(lit("B"), lit("C"));
585564
assert_eq!(pred.unwrap(), filter);
586565
}
587566

@@ -620,23 +599,9 @@ mod tests {
620599
.build()
621600
.unwrap();
622601

623-
let join_predicate = col(Column {
624-
relation: Some(source_name.clone()),
625-
name: "id".to_owned(),
626-
})
627-
.eq(col(Column {
628-
relation: Some(target_name.clone()),
629-
name: "id".to_owned(),
630-
}))
631-
.and(
632-
col(Column {
633-
relation: Some(source_name.clone()),
634-
name: "modified".to_owned(),
635-
})
636-
.eq(col(Column {
637-
relation: Some(target_name.clone()),
638-
name: "modified".to_owned(),
639-
})),
602+
let join_predicate = make_join_predicate(&source_name, &target_name).and(
603+
col(Column::new(Some(source_name.clone()), "modified"))
604+
.eq(col(Column::new(Some(target_name.clone()), "modified"))),
640605
);
641606

642607
let pred = try_construct_early_filter(
@@ -653,20 +618,9 @@ mod tests {
653618

654619
assert!(pred.is_some());
655620

656-
let filter = col(Column {
657-
relation: Some(target_name.clone()),
658-
name: "id".to_owned(),
659-
})
660-
.between(
661-
Expr::Literal(ScalarValue::Utf8(Some("B".to_string()))),
662-
Expr::Literal(ScalarValue::Utf8(Some("C".to_string()))),
663-
)
664-
.and(
665-
Expr::Literal(ScalarValue::Utf8(Some("2023-07-04".to_string()))).eq(col(Column {
666-
relation: Some(target_name.clone()),
667-
name: "modified".to_owned(),
668-
})),
669-
);
621+
let filter = col(Column::new(Some(target_name.clone()), "id"))
622+
.between(lit("B"), lit("C"))
623+
.and(lit("2023-07-04").eq(col(Column::new(Some(target_name.clone()), "modified"))));
670624
assert_eq!(pred.unwrap(), filter);
671625
}
672626

@@ -706,18 +660,12 @@ mod tests {
706660
.build()
707661
.unwrap();
708662

709-
let join_predicate = col(Column {
710-
relation: Some(source_name.clone()),
711-
name: "id".to_owned(),
712-
})
713-
.eq(col(Column {
714-
relation: Some(target_name.clone()),
715-
name: "id".to_owned(),
716-
}))
717-
.and(col("modified".to_owned()).in_list(
718-
vec![lit("2023-07-05"), lit("2023-07-06"), lit("2023-07-07")],
719-
false,
720-
));
663+
let join_predicate = make_join_predicate(&source_name, &target_name).and(
664+
col("modified".to_owned()).in_list(
665+
vec![lit("2023-07-05"), lit("2023-07-06"), lit("2023-07-07")],
666+
false,
667+
),
668+
);
721669

722670
let pred = try_construct_early_filter(
723671
join_predicate,
@@ -733,28 +681,12 @@ mod tests {
733681

734682
assert!(pred.is_some());
735683

736-
let filter = col(Column {
737-
relation: Some(target_name.clone()),
738-
name: "id".to_owned(),
739-
})
740-
.between(
741-
Expr::Literal(ScalarValue::Utf8(Some("A".to_string()))),
742-
Expr::Literal(ScalarValue::Utf8(Some("C".to_string()))),
743-
)
744-
.and(
745-
col(Column {
746-
relation: None,
747-
name: "modified".to_owned(),
748-
})
749-
.in_list(
750-
vec![
751-
Expr::Literal(ScalarValue::Utf8(Some("2023-07-05".to_string()))),
752-
Expr::Literal(ScalarValue::Utf8(Some("2023-07-06".to_string()))),
753-
Expr::Literal(ScalarValue::Utf8(Some("2023-07-07".to_string()))),
754-
],
684+
let filter = col(Column::new(Some(target_name.clone()), "id"))
685+
.between(lit("A"), lit("C"))
686+
.and(col(Column::new_unqualified("modified")).in_list(
687+
vec![lit("2023-07-05"), lit("2023-07-06"), lit("2023-07-07")],
755688
false,
756-
),
757-
);
689+
));
758690
assert_eq!(pred.unwrap(), filter);
759691
}
760692

@@ -794,27 +726,15 @@ mod tests {
794726
.build()
795727
.unwrap();
796728

797-
let join_predicate = col(Column {
798-
relation: Some(source_name.clone()),
799-
name: "id".to_owned(),
800-
})
801-
.eq(col(Column {
802-
relation: Some(target_name.clone()),
803-
name: "id".to_owned(),
804-
}))
805-
.and(col("modified".to_owned()).in_list(
806-
vec![
807-
col(Column {
808-
relation: Some(target_name.clone()),
809-
name: "id".to_owned(),
810-
}),
811-
col(Column {
812-
relation: Some(target_name.clone()),
813-
name: "modified".to_owned(),
814-
}),
815-
],
816-
false,
817-
));
729+
let join_predicate = make_join_predicate(&source_name, &target_name).and(
730+
col("modified".to_owned()).in_list(
731+
vec![
732+
col(Column::new(Some(target_name.clone()), "id")),
733+
col(Column::new(Some(target_name.clone()), "modified")),
734+
],
735+
false,
736+
),
737+
);
818738

819739
let pred = try_construct_early_filter(
820740
join_predicate,
@@ -830,33 +750,15 @@ mod tests {
830750

831751
assert!(pred.is_some());
832752

833-
let filter = col(Column {
834-
relation: Some(target_name.clone()),
835-
name: "id".to_owned(),
836-
})
837-
.between(
838-
Expr::Literal(ScalarValue::Utf8(Some("A".to_string()))),
839-
Expr::Literal(ScalarValue::Utf8(Some("C".to_string()))),
840-
)
841-
.and(
842-
col(Column {
843-
relation: None,
844-
name: "modified".to_owned(),
845-
})
846-
.in_list(
753+
let filter = col(Column::new(Some(target_name.clone()), "id"))
754+
.between(lit("A"), lit("C"))
755+
.and(col(Column::new_unqualified("modified")).in_list(
847756
vec![
848-
col(Column {
849-
relation: Some(target_name.clone()),
850-
name: "id".to_owned(),
851-
}),
852-
col(Column {
853-
relation: Some(target_name.clone()),
854-
name: "modified".to_owned(),
855-
}),
757+
col(Column::new(Some(target_name.clone()), "id")),
758+
col(Column::new(Some(target_name.clone()), "modified")),
856759
],
857760
false,
858-
),
859-
);
761+
));
860762
assert_eq!(pred.unwrap(), filter);
861763
}
862764

@@ -896,27 +798,15 @@ mod tests {
896798
.build()
897799
.unwrap();
898800

899-
let join_predicate = col(Column {
900-
relation: Some(source_name.clone()),
901-
name: "id".to_owned(),
902-
})
903-
.eq(col(Column {
904-
relation: Some(target_name.clone()),
905-
name: "id".to_owned(),
906-
}))
907-
.and(ident("source.id").in_list(
908-
vec![
909-
col(Column {
910-
relation: Some(target_name.clone()),
911-
name: "id".to_owned(),
912-
}),
913-
col(Column {
914-
relation: Some(target_name.clone()),
915-
name: "modified".to_owned(),
916-
}),
917-
],
918-
false,
919-
));
801+
let join_predicate = col(Column::new(Some(source_name.clone()), "id"))
802+
.eq(col(Column::new(Some(target_name.clone()), "id")))
803+
.and(ident("source.id").in_list(
804+
vec![
805+
col(Column::new(Some(target_name.clone()), "id")),
806+
col(Column::new(Some(target_name.clone()), "modified")),
807+
],
808+
false,
809+
));
920810

921811
let pred = try_construct_early_filter(
922812
join_predicate,
@@ -932,27 +822,23 @@ mod tests {
932822

933823
assert!(pred.is_some());
934824

935-
let filter = col(Column {
936-
relation: Some(target_name.clone()),
937-
name: "id".to_owned(),
938-
})
939-
.between(
940-
Expr::Literal(ScalarValue::Utf8(Some("A".to_string()))),
941-
Expr::Literal(ScalarValue::Utf8(Some("C".to_string()))),
942-
)
943-
.and(ident("source.id").in_list(
944-
vec![
945-
col(Column {
946-
relation: Some(target_name.clone()),
947-
name: "id".to_owned(),
948-
}),
949-
col(Column {
950-
relation: Some(target_name.clone()),
951-
name: "modified".to_owned(),
952-
}),
953-
],
954-
false,
955-
));
825+
let filter = col(Column::new(Some(target_name.clone()), "id"))
826+
.between(lit("A"), lit("C"))
827+
.and(ident("source.id").in_list(
828+
vec![
829+
col(Column::new(Some(target_name.clone()), "id")),
830+
col(Column::new(Some(target_name.clone()), "modified")),
831+
],
832+
false,
833+
));
956834
assert_eq!(pred.unwrap(), filter);
957835
}
836+
837+
/// return a join predicate for the source and target tables
838+
///
839+
/// `source.id = target.id`
840+
fn make_join_predicate(source_name: &TableReference, target_name: &TableReference) -> Expr {
841+
col(Column::new(Some(source_name.clone()), "id"))
842+
.eq(col(Column::new(Some(target_name.clone()), "id")))
843+
}
958844
}

0 commit comments

Comments
 (0)