Skip to content

Commit d1bf747

Browse files
committed
in work
1 parent 552e54c commit d1bf747

File tree

3 files changed

+29
-38
lines changed

3 files changed

+29
-38
lines changed

rust/cubesqlplanner/cubesqlplanner/src/logical_plan/dimension_subquery.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,19 @@ pub struct DimensionSubQuery {
1212
}
1313

1414
impl LogicalNode for DimensionSubQuery {
15-
type InputsType = SingleNodeInput;
16-
1715
fn as_plan_node(self: &Rc<Self>) -> PlanNode {
1816
PlanNode::DimensionSubQuery(self.clone())
1917
}
2018

21-
fn inputs(&self) -> Self::InputsType {
22-
SingleNodeInput::new(self.query.as_plan_node())
19+
fn inputs(&self) -> Vec<PlanNode> {
20+
vec![self.query.as_plan_node()]
2321
}
2422

25-
fn with_inputs(self: Rc<Self>, inputs: Self::InputsType) -> Result<Rc<Self>, CubeError> {
26-
let query = inputs.unpack();
23+
fn with_inputs(self: Rc<Self>, inputs: Vec<PlanNode>) -> Result<Rc<Self>, CubeError> {
24+
check_inputs_len(&inputs, 1, self.node_name())?;
25+
let query = &inputs[0];
2726
Ok(Rc::new(Self {
28-
query: query.into_logical_node()?,
27+
query: query.clone().into_logical_node()?,
2928
primary_keys_dimensions: self.primary_keys_dimensions.clone(),
3029
subquery_dimension: self.subquery_dimension.clone(),
3130
measure_for_subquery_dimension: self.measure_for_subquery_dimension.clone(),

rust/cubesqlplanner/cubesqlplanner/src/logical_plan/full_key_aggregate.rs

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -58,46 +58,39 @@ pub struct FullKeyAggregate {
5858
}
5959

6060
impl 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 {

rust/cubesqlplanner/cubesqlplanner/src/logical_plan/measure_subquery.rs

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,20 @@ pub struct MeasureSubquery {
88
}
99

1010
impl LogicalNode for MeasureSubquery {
11-
type InputsType = SingleNodeInput;
12-
1311
fn as_plan_node(self: &Rc<Self>) -> PlanNode {
1412
PlanNode::MeasureSubquery(self.clone())
1513
}
1614

17-
fn inputs(&self) -> Self::InputsType {
18-
SingleNodeInput::new(self.source.as_plan_node())
15+
fn inputs(&self) -> Vec<PlanNode> {
16+
vec![self.source.as_plan_node()]
1917
}
2018

21-
fn with_inputs(self: Rc<Self>, inputs: Self::InputsType) -> Result<Rc<Self>, CubeError> {
22-
let source = inputs.unpack();
19+
fn with_inputs(self: Rc<Self>, inputs: Vec<PlanNode>) -> Result<Rc<Self>, CubeError> {
20+
check_inputs_len(&inputs, 1, self.node_name())?;
21+
let source = &inputs[0];
2322
Ok(Rc::new(Self {
2423
schema: self.schema.clone(),
25-
source: source.into_logical_node()?,
24+
source: source.clone().into_logical_node()?,
2625
}))
2726
}
2827

0 commit comments

Comments
 (0)