diff --git a/src/query/expression/src/aggregate/payload.rs b/src/query/expression/src/aggregate/payload.rs index 51cc3b579870e..562b2a899f9bf 100644 --- a/src/query/expression/src/aggregate/payload.rs +++ b/src/query/expression/src/aggregate/payload.rs @@ -350,6 +350,7 @@ impl Payload { ) } page.rows += 1; + page.state_rows += 1; if page.rows == page.capacity { (page, _) = self.writable_page(); diff --git a/tests/suites/0_stateless/20+_others/20_0022_agg_memory.result b/tests/suites/0_stateless/20+_others/20_0022_agg_memory.result new file mode 100755 index 0000000000000..f32baf89a114b --- /dev/null +++ b/tests/suites/0_stateless/20+_others/20_0022_agg_memory.result @@ -0,0 +1,6 @@ +executing 1 +executing 2 +executing 3 +executing 4 +executing 5 +Memory usage difference is less than 5% diff --git a/tests/suites/0_stateless/20+_others/20_0022_agg_memory.sh b/tests/suites/0_stateless/20+_others/20_0022_agg_memory.sh new file mode 100755 index 0000000000000..e8602a4ae66a0 --- /dev/null +++ b/tests/suites/0_stateless/20+_others/20_0022_agg_memory.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +CURDIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) +. "$CURDIR"/../../../shell_env.sh + + +## warmup +for i in `seq 1 2`;do + $BENDSQL_CLIENT_CONNECT --query=""" + select number::string , max(number::string), min(number::string), count(distinct number) from numbers(10000000) group by 1 ignore_result; + """ +done + + +PIDS=($(pgrep databend-query)) +BEFORE_MEM=0 +for PID in "${PIDS[@]}"; do + MEM=$(ps -o rss= -p $PID | tail -n 1) + BEFORE_MEM=$((BEFORE_MEM + MEM)) +done + + +for i in `seq 1 5`;do + echo "executing $i" + $BENDSQL_CLIENT_CONNECT --query=""" + select number::string , max(number::string), min(number::string), count(distinct number) from numbers(10000000) group by 1 ignore_result; + """ +done + +sleep 15 + + +AFTER_MEM=0 +for PID in "${PIDS[@]}"; do + MEM=$(ps -o rss= -p $PID | tail -n 1) + AFTER_MEM=$((AFTER_MEM + MEM)) +done + +# Calculate the difference in percentage +DIFF=$(awk -v before=$BEFORE_MEM -v after=$AFTER_MEM 'BEGIN {print (after-before)/before * 100}') + +# Check if the difference is less than 5% +if (( $(awk -v diff=$DIFF 'BEGIN {print (diff < 5)}') )); then + echo "Memory usage difference is less than 5%" +else + echo "Memory usage difference is greater than 5%, before ${BEFORE_MEM} ${AFTER_MEM}" +fi \ No newline at end of file