@@ -1101,7 +1101,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
11011101 where
11021102 Self : Sized ,
11031103 {
1104- let plan_clone = plan . clone ( ) ;
1104+ let plan_clone = Arc :: clone ( & plan ) ;
11051105 let plan = plan. as_any ( ) ;
11061106
11071107 if let Some ( exec) = plan. downcast_ref :: < ExplainExec > ( ) {
@@ -1128,7 +1128,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
11281128 let expr = exec
11291129 . expr ( )
11301130 . iter ( )
1131- . map ( |expr| serialize_physical_expr ( expr. 0 . clone ( ) , extension_codec) )
1131+ . map ( |expr| serialize_physical_expr ( Arc :: clone ( & expr. 0 ) , extension_codec) )
11321132 . collect :: < Result < Vec < _ > > > ( ) ?;
11331133 let expr_name = exec. expr ( ) . iter ( ) . map ( |expr| expr. 1 . clone ( ) ) . collect ( ) ;
11341134 return Ok ( protobuf:: PhysicalPlanNode {
@@ -1169,7 +1169,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
11691169 protobuf:: FilterExecNode {
11701170 input : Some ( Box :: new ( input) ) ,
11711171 expr : Some ( serialize_physical_expr (
1172- exec. predicate ( ) . clone ( ) ,
1172+ Arc :: clone ( exec. predicate ( ) ) ,
11731173 extension_codec,
11741174 ) ?) ,
11751175 default_filter_selectivity : exec. default_selectivity ( ) as u32 ,
@@ -1585,7 +1585,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
15851585 if let Some ( exec) = plan. downcast_ref :: < ParquetExec > ( ) {
15861586 let predicate = exec
15871587 . predicate ( )
1588- . map ( |pred| serialize_physical_expr ( pred . clone ( ) , extension_codec) )
1588+ . map ( |pred| serialize_physical_expr ( Arc :: clone ( pred ) , extension_codec) )
15891589 . transpose ( ) ?;
15901590 return Ok ( protobuf:: PhysicalPlanNode {
15911591 physical_plan_type : Some ( PhysicalPlanType :: ParquetScan (
@@ -1810,13 +1810,13 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
18101810 let window_expr = exec
18111811 . window_expr ( )
18121812 . iter ( )
1813- . map ( |e| serialize_physical_window_expr ( e . clone ( ) , extension_codec) )
1813+ . map ( |e| serialize_physical_window_expr ( Arc :: clone ( e ) , extension_codec) )
18141814 . collect :: < Result < Vec < protobuf:: PhysicalWindowExprNode > > > ( ) ?;
18151815
18161816 let partition_keys = exec
18171817 . partition_keys
18181818 . iter ( )
1819- . map ( |e| serialize_physical_expr ( e . clone ( ) , extension_codec) )
1819+ . map ( |e| serialize_physical_expr ( Arc :: clone ( e ) , extension_codec) )
18201820 . collect :: < Result < Vec < protobuf:: PhysicalExprNode > > > ( ) ?;
18211821
18221822 return Ok ( protobuf:: PhysicalPlanNode {
@@ -1840,13 +1840,13 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
18401840 let window_expr = exec
18411841 . window_expr ( )
18421842 . iter ( )
1843- . map ( |e| serialize_physical_window_expr ( e . clone ( ) , extension_codec) )
1843+ . map ( |e| serialize_physical_window_expr ( Arc :: clone ( e ) , extension_codec) )
18441844 . collect :: < Result < Vec < protobuf:: PhysicalWindowExprNode > > > ( ) ?;
18451845
18461846 let partition_keys = exec
18471847 . partition_keys
18481848 . iter ( )
1849- . map ( |e| serialize_physical_expr ( e . clone ( ) , extension_codec) )
1849+ . map ( |e| serialize_physical_expr ( Arc :: clone ( e ) , extension_codec) )
18501850 . collect :: < Result < Vec < protobuf:: PhysicalExprNode > > > ( ) ?;
18511851
18521852 let input_order_mode = match & exec. input_order_mode {
@@ -1949,7 +1949,7 @@ impl AsExecutionPlan for protobuf::PhysicalPlanNode {
19491949 }
19501950
19511951 let mut buf: Vec < u8 > = vec ! [ ] ;
1952- match extension_codec. try_encode ( plan_clone . clone ( ) , & mut buf) {
1952+ match extension_codec. try_encode ( Arc :: clone ( & plan_clone ) , & mut buf) {
19531953 Ok ( _) => {
19541954 let inputs: Vec < protobuf:: PhysicalPlanNode > = plan_clone
19551955 . children ( )
0 commit comments