@@ -58,46 +58,39 @@ pub struct FullKeyAggregate {
5858}
5959
6060impl LogicalNode for FullKeyAggregate {
61- type InputsType = OptionNodeInput ;
62-
6361 fn as_plan_node ( self : & Rc < Self > ) -> PlanNode {
6462 PlanNode :: FullKeyAggregate ( self . clone ( ) )
6563 }
6664
67- fn inputs ( & self ) -> Self :: InputsType {
68- let plan_node = self
69- . multiplied_measures_resolver
70- . as_ref ( )
71- . map ( |resolver| match resolver {
65+ fn inputs ( & self ) -> Vec < PlanNode > {
66+ if let Some ( resolver) = & self . multiplied_measures_resolver {
67+ vec ! [ match resolver {
7268 ResolvedMultipliedMeasures :: ResolveMultipliedMeasures ( item) => item. as_plan_node( ) ,
7369 ResolvedMultipliedMeasures :: PreAggregation ( item) => item. as_plan_node( ) ,
74- } ) ;
75- OptionNodeInput :: new ( plan_node)
70+ } ]
71+ } else {
72+ vec ! [ ]
73+ }
7674 }
7775
78- fn with_inputs ( self : Rc < Self > , inputs : Self :: InputsType ) -> Result < Rc < Self > , CubeError > {
79- let input = inputs. unpack ( ) ;
80- let multiplied_measures_resolver = if self . multiplied_measures_resolver . is_none ( )
81- && input. is_none ( )
82- {
76+ fn with_inputs ( self : Rc < Self > , inputs : Vec < PlanNode > ) -> Result < Rc < Self > , CubeError > {
77+ let multiplied_measures_resolver = if self . multiplied_measures_resolver . is_none ( ) {
78+ check_inputs_len ( & inputs, 0 , self . node_name ( ) ) ?;
8379 None
84- } else if let ( Some ( self_source) , Some ( input_source) ) =
85- ( & self . multiplied_measures_resolver , input)
86- {
87- Some ( match self_source {
80+ } else {
81+ check_inputs_len ( & inputs, 1 , self . node_name ( ) ) ?;
82+ let input_source = & inputs[ 0 ] ;
83+
84+ Some ( match self . multiplied_measures_resolver . as_ref ( ) . unwrap ( ) {
8885 ResolvedMultipliedMeasures :: ResolveMultipliedMeasures ( _) => {
8986 ResolvedMultipliedMeasures :: ResolveMultipliedMeasures (
90- input_source. into_logical_node ( ) ?,
87+ input_source. clone ( ) . into_logical_node ( ) ?,
9188 )
9289 }
9390 ResolvedMultipliedMeasures :: PreAggregation ( _) => {
94- ResolvedMultipliedMeasures :: PreAggregation ( input_source. into_logical_node ( ) ?)
91+ ResolvedMultipliedMeasures :: PreAggregation ( input_source. clone ( ) . into_logical_node ( ) ?)
9592 }
9693 } )
97- } else {
98- return Err ( CubeError :: internal ( format ! (
99- "Wrong inputs for FullKeyAggregate node"
100- ) ) ) ;
10194 } ;
10295
10396 Ok ( Rc :: new ( Self {
0 commit comments