Skip to content

Commit 59aa8ae

Browse files
committed
fix(query): fix align state bug for aggregation
1 parent b2e9608 commit 59aa8ae

8 files changed

+8
-6
lines changed

src/query/functions-v2/src/aggregates/adaptors/aggregate_null_unary_adaptor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ impl<const NULLABLE_RESULT: bool> AggregateFunction for AggregateNullUnaryAdapto
9797
#[inline]
9898
fn state_layout(&self) -> Layout {
9999
let layout = self.nested.state_layout();
100-
let add = usize::from(NULLABLE_RESULT);
100+
let add = if NULLABLE_RESULT { layout.align() } else { 0 };
101101
Layout::from_size_align(layout.size() + add, layout.align()).unwrap()
102102
}
103103

src/query/functions-v2/src/aggregates/adaptors/aggregate_null_variadic_adaptor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ impl<const NULLABLE_RESULT: bool> AggregateFunction
9898
#[inline]
9999
fn state_layout(&self) -> Layout {
100100
let layout = self.nested.state_layout();
101-
let add = usize::from(NULLABLE_RESULT);
101+
let add = if NULLABLE_RESULT { layout.align() } else { 0 };
102102
Layout::from_size_align(layout.size() + add, layout.align()).unwrap()
103103
}
104104

src/query/functions-v2/src/aggregates/adaptors/aggregate_ornull_adaptor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ impl AggregateFunction for AggregateFunctionOrNullAdaptor {
9090
#[inline]
9191
fn state_layout(&self) -> std::alloc::Layout {
9292
let layout = self.inner.state_layout();
93-
Layout::from_size_align(layout.size() + 1, layout.align()).unwrap()
93+
Layout::from_size_align(layout.size() + layout.align(), layout.align()).unwrap()
9494
}
9595

9696
#[inline]

src/query/functions-v2/src/aggregates/aggregate_combinator_distinct.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ where State: DistinctStateFunc
7070

7171
fn state_layout(&self) -> Layout {
7272
let layout = Layout::new::<State>();
73+
7374
let netesed = self.nested.state_layout();
7475
Layout::from_size_align(layout.size() + netesed.size(), layout.align()).unwrap()
7576
}

src/query/functions/src/aggregates/adaptors/aggregate_null_unary_adaptor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ impl<const NULLABLE_RESULT: bool> AggregateFunction for AggregateNullUnaryAdapto
9494
#[inline]
9595
fn state_layout(&self) -> Layout {
9696
let layout = self.nested.state_layout();
97-
let add = usize::from(NULLABLE_RESULT);
97+
let add = if NULLABLE_RESULT { layout.align() } else { 0 };
9898
Layout::from_size_align(layout.size() + add, layout.align()).unwrap()
9999
}
100100

src/query/functions/src/aggregates/adaptors/aggregate_null_variadic_adaptor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ impl<const NULLABLE_RESULT: bool> AggregateFunction
9595
#[inline]
9696
fn state_layout(&self) -> Layout {
9797
let layout = self.nested.state_layout();
98-
let add = usize::from(NULLABLE_RESULT);
98+
let add = if NULLABLE_RESULT { layout.align() } else { 0 };
9999
Layout::from_size_align(layout.size() + add, layout.align()).unwrap()
100100
}
101101

src/query/functions/src/aggregates/adaptors/aggregate_ornull_adaptor.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ impl AggregateFunction for AggregateFunctionOrNullAdaptor {
9292
#[inline]
9393
fn state_layout(&self) -> std::alloc::Layout {
9494
let layout = self.inner.state_layout();
95-
Layout::from_size_align(layout.size() + 1, layout.align()).unwrap()
95+
Layout::from_size_align(layout.size() + layout.align(), layout.align()).unwrap()
9696
}
9797

9898
#[inline]

src/query/functions/src/aggregates/aggregate_combinator_distinct.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ where State: DistinctStateFunc
6666

6767
fn state_layout(&self) -> Layout {
6868
let layout = Layout::new::<State>();
69+
6970
let netesed = self.nested.state_layout();
7071
Layout::from_size_align(layout.size() + netesed.size(), layout.align()).unwrap()
7172
}

0 commit comments

Comments
 (0)