@@ -347,7 +347,7 @@ impl Memoize for MemoryMemo {
347
347
. transform_dependency
348
348
. get ( & logical_expr_id)
349
349
. and_then ( |status_map| status_map. get ( rule) )
350
- . map ( |dep| dep. status . clone ( ) )
350
+ . map ( |dep| dep. status )
351
351
. unwrap_or ( Status :: Dirty ) ;
352
352
Ok ( status)
353
353
}
@@ -386,7 +386,7 @@ impl Memoize for MemoryMemo {
386
386
. implement_dependency
387
387
. get ( & logical_expr_id)
388
388
. and_then ( |status_map| status_map. get ( & ( goal_id, rule. clone ( ) ) ) )
389
- . map ( |dep| dep. status . clone ( ) )
389
+ . map ( |dep| dep. status )
390
390
. unwrap_or ( Status :: Dirty ) ;
391
391
Ok ( status)
392
392
}
@@ -422,7 +422,7 @@ impl Memoize for MemoryMemo {
422
422
let status = self
423
423
. cost_dependency
424
424
. get ( & physical_expr_id)
425
- . map ( |dep| dep. status . clone ( ) )
425
+ . map ( |dep| dep. status )
426
426
. unwrap_or ( Status :: Dirty ) ;
427
427
Ok ( status)
428
428
}
@@ -573,14 +573,14 @@ impl Memoize for MemoryMemo {
573
573
match child {
574
574
Child :: Singleton ( group_id) => {
575
575
self . group_dependent_logical_exprs
576
- . entry ( group_id. clone ( ) )
576
+ . entry ( * group_id)
577
577
. or_default ( )
578
578
. insert ( logical_expr_id) ;
579
579
}
580
580
Child :: VarLength ( group_ids) => {
581
581
for group_id in group_ids. iter ( ) {
582
582
self . group_dependent_logical_exprs
583
- . entry ( group_id. clone ( ) )
583
+ . entry ( * group_id)
584
584
. or_default ( )
585
585
. insert ( logical_expr_id) ;
586
586
}
@@ -624,7 +624,7 @@ impl Memoize for MemoryMemo {
624
624
Child :: Singleton ( goal_member_id) => {
625
625
if let GoalMemberId :: GoalId ( goal_id) = goal_member_id {
626
626
self . goal_dependent_physical_exprs
627
- . entry ( goal_id. clone ( ) )
627
+ . entry ( * goal_id)
628
628
. or_default ( )
629
629
. insert ( physical_expr_id) ;
630
630
}
@@ -634,13 +634,13 @@ impl Memoize for MemoryMemo {
634
634
match goal_member_id {
635
635
GoalMemberId :: GoalId ( goal_id) => {
636
636
self . goal_dependent_physical_exprs
637
- . entry ( goal_id. clone ( ) )
637
+ . entry ( * goal_id)
638
638
. or_default ( )
639
639
. insert ( physical_expr_id) ;
640
640
}
641
641
GoalMemberId :: PhysicalExpressionId ( child_physical_expr_id) => {
642
642
self . physical_expr_dependent_physical_exprs
643
- . entry ( child_physical_expr_id. clone ( ) )
643
+ . entry ( * child_physical_expr_id)
644
644
. or_default ( )
645
645
. insert ( physical_expr_id) ;
646
646
}
@@ -703,17 +703,16 @@ impl MemoryMemo {
703
703
for child in repr_logical_expr. children . iter ( ) {
704
704
match child {
705
705
Child :: Singleton ( group_id) => {
706
- let repr_group_id = self . find_repr_group ( group_id. clone ( ) ) . await ?;
706
+ let repr_group_id = self . find_repr_group ( * group_id) . await ?;
707
707
new_children. push ( Child :: Singleton ( repr_group_id) ) ;
708
708
}
709
709
Child :: VarLength ( group_ids) => {
710
710
let new_group_ids = group_ids
711
711
. iter ( )
712
712
. map ( |group_id| {
713
- let group_id = group_id. clone ( ) ;
714
713
let self_ref = & self ;
715
714
// TODO(Sarvesh): this is a hack to get the repr group id, i'm sure there's a better way to do this.
716
- async move { self_ref. find_repr_group ( group_id) . await }
715
+ async move { self_ref. find_repr_group ( * group_id) . await }
717
716
} )
718
717
. collect :: < Vec < _ > > ( ) ;
719
718
@@ -742,24 +741,23 @@ impl MemoryMemo {
742
741
match child {
743
742
Child :: Singleton ( goal_member_id) => {
744
743
if let GoalMemberId :: GoalId ( goal_id) = goal_member_id {
745
- let repr_goal_id = self . find_repr_goal ( goal_id. clone ( ) ) . await ?;
744
+ let repr_goal_id = self . find_repr_goal ( * goal_id) . await ?;
746
745
new_children. push ( Child :: Singleton ( GoalMemberId :: GoalId ( repr_goal_id) ) ) ;
747
746
} else {
748
- new_children. push ( Child :: Singleton ( goal_member_id. clone ( ) ) ) ;
747
+ new_children. push ( Child :: Singleton ( * goal_member_id) ) ;
749
748
}
750
749
}
751
750
Child :: VarLength ( goal_member_ids) => {
752
751
let mut new_goal_member_ids = Vec :: new ( ) ;
753
752
for goal_member_id in goal_member_ids. iter ( ) {
754
753
match goal_member_id {
755
754
GoalMemberId :: GoalId ( goal_id) => {
756
- let repr_goal_id = self . find_repr_goal ( goal_id. clone ( ) ) . await ?;
755
+ let repr_goal_id = self . find_repr_goal ( * goal_id) . await ?;
757
756
new_goal_member_ids. push ( GoalMemberId :: GoalId ( repr_goal_id) ) ;
758
757
}
759
758
GoalMemberId :: PhysicalExpressionId ( physical_expr_id) => {
760
- let repr_physical_expr_id = self
761
- . find_repr_physical_expr ( physical_expr_id. clone ( ) )
762
- . await ?;
759
+ let repr_physical_expr_id =
760
+ self . find_repr_physical_expr ( * physical_expr_id) . await ?;
763
761
new_goal_member_ids. push ( GoalMemberId :: PhysicalExpressionId (
764
762
repr_physical_expr_id,
765
763
) ) ;
@@ -780,7 +778,7 @@ impl MemoryMemo {
780
778
& mut self ,
781
779
physical_expr_id : PhysicalExpressionId ,
782
780
) -> MemoizeResult < Vec < PhysicalMergeProduct > > {
783
- let ( physical_expr, cost ) = self . physical_exprs . get ( & physical_expr_id) . unwrap ( ) ;
781
+ let ( physical_expr, _cost ) = self . physical_exprs . get ( & physical_expr_id) . unwrap ( ) ;
784
782
let repr_physical_expr = self
785
783
. create_repr_physical_expr ( physical_expr. clone ( ) )
786
784
. await ?;
@@ -816,7 +814,7 @@ impl MemoryMemo {
816
814
for dependent_physical_expr_id in dependent_physical_exprs {
817
815
// TODO(Sarvesh): handle async recursion
818
816
let merge_physical_expr_result = self
819
- . merge_physical_exprs ( dependent_physical_expr_id. clone ( ) )
817
+ . merge_physical_exprs ( dependent_physical_expr_id)
820
818
. await ?;
821
819
results. extend ( merge_physical_expr_result) ;
822
820
}
@@ -833,8 +831,7 @@ impl MemoryMemo {
833
831
) -> MemoizeResult < ( GoalMergeProduct , Vec < PhysicalMergeProduct > ) > {
834
832
let goal_2 = self . goals . remove ( & goal_id2) . unwrap ( ) ;
835
833
let goal_1 = self . goals . get ( & goal_id1) . unwrap ( ) ;
836
- let goal_1_props = & goal_1. goal . 1 ;
837
- let goal_2_props = & goal_2. goal . 1 ;
834
+
838
835
self . repr_goal . merge ( & goal_id2, & goal_id1) ;
839
836
840
837
let mut merged_goal_result = GoalMergeProduct {
@@ -995,14 +992,13 @@ impl MemoryMemo {
995
992
996
993
for goal_id1 in group_1_goals. iter ( ) {
997
994
for goal_id2 in group_2_goals. iter ( ) {
998
- let goal_1 = self . goals . get ( & goal_id1) . unwrap ( ) ;
999
- let goal_2 = self . goals . get ( & goal_id2) . unwrap ( ) ;
995
+ let goal_1 = self . goals . get ( goal_id1) . unwrap ( ) ;
996
+ let goal_2 = self . goals . get ( goal_id2) . unwrap ( ) ;
1000
997
let goal_1_props = & goal_1. goal . 1 ;
1001
998
let goal_2_props = & goal_2. goal . 1 ;
1002
999
if goal_1_props == goal_2_props {
1003
- let ( merged_goal_result, merge_physical_expr_results) = self
1004
- . merge_goals_helper ( goal_id1. clone ( ) , goal_id2. clone ( ) )
1005
- . await ?;
1000
+ let ( merged_goal_result, merge_physical_expr_results) =
1001
+ self . merge_goals_helper ( * goal_id1, * goal_id2) . await ?;
1006
1002
result. goal_merges . push ( merged_goal_result) ;
1007
1003
result
1008
1004
. physical_expr_merges
@@ -1024,7 +1020,7 @@ impl MemoryMemo {
1024
1020
let repr_logical_expr_id = self . get_logical_expr_id ( & repr_logical_expr) . await ?;
1025
1021
// merge the logical exprs
1026
1022
self . repr_logical_expr
1027
- . merge ( & logical_expr_id, & repr_logical_expr_id) ;
1023
+ . merge ( logical_expr_id, & repr_logical_expr_id) ;
1028
1024
1029
1025
let parent_group_id = self . logical_expr_group_index . get ( logical_expr_id) . unwrap ( ) ;
1030
1026
let parent_group_state = self . groups . get_mut ( parent_group_id) . unwrap ( ) ;
@@ -1041,7 +1037,7 @@ impl MemoryMemo {
1041
1037
// we have another merge to do
1042
1038
// do a cascading merge between repr_parent_group_id and parent_group_id
1043
1039
let merge_result = self
1044
- . merge_groups_helper ( repr_parent_group_id. clone ( ) , parent_group_id. clone ( ) )
1040
+ . merge_groups_helper ( * repr_parent_group_id, * parent_group_id)
1045
1041
. await ?;
1046
1042
// merge the cascading merge result with the current result.
1047
1043
if let Some ( merge_result) = merge_result {
@@ -1060,7 +1056,7 @@ impl MemoryMemo {
1060
1056
. insert ( repr_logical_expr_id) ;
1061
1057
// we update the index
1062
1058
self . logical_expr_group_index
1063
- . insert ( repr_logical_expr_id, parent_group_id. clone ( ) ) ;
1059
+ . insert ( repr_logical_expr_id, * parent_group_id) ;
1064
1060
}
1065
1061
}
1066
1062
0 commit comments