diff --git a/pkg/executor/internal/vecgroupchecker/vec_group_checker.go b/pkg/executor/internal/vecgroupchecker/vec_group_checker.go index afa0c11a35b46..e50e35415e951 100644 --- a/pkg/executor/internal/vecgroupchecker/vec_group_checker.go +++ b/pkg/executor/internal/vecgroupchecker/vec_group_checker.go @@ -93,13 +93,13 @@ func (e *VecGroupChecker) SplitIntoGroups(chk *chunk.Chunk) (isFirstGroupSameAsP return false, err } } - e.firstGroupKey, err = codec.EncodeValue(e.ctx.GetSessionVars().StmtCtx.TimeZone(), e.firstGroupKey, e.firstRowDatums...) + e.firstGroupKey, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx.TimeZone(), e.firstGroupKey, e.firstRowDatums...) err = e.ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return false, err } - e.lastGroupKey, err = codec.EncodeValue(e.ctx.GetSessionVars().StmtCtx.TimeZone(), e.lastGroupKey, e.lastRowDatums...) + e.lastGroupKey, err = codec.EncodeKey(e.ctx.GetSessionVars().StmtCtx.TimeZone(), e.lastGroupKey, e.lastRowDatums...) err = e.ctx.GetSessionVars().StmtCtx.HandleError(err) if err != nil { return false, err diff --git a/tests/integrationtest/r/executor/issues.result b/tests/integrationtest/r/executor/issues.result index 7a564b0b06692..ae6bcdb9888bb 100644 --- a/tests/integrationtest/r/executor/issues.result +++ b/tests/integrationtest/r/executor/issues.result @@ -850,3 +850,18 @@ c 2 2147483647 set @@sql_mode = default; +set @@tidb_max_chunk_size = 32; +drop table if exists t, s; +CREATE TABLE `t` (`c` char(1)) COLLATE=utf8_general_ci ; +insert into t values("V"),("v"); +insert into t values("V"),("v"),("v"); +CREATE TABLE `s` (`col_61` int); +insert into s values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1); +insert into s values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1); +SELECT /*+ stream_agg()*/ count(`t`.`c`) FROM (`s`) JOIN `t` GROUP BY `t`.`c`; +count(`t`.`c`) +170 +SELECT count(`t`.`c`) FROM (`s`) JOIN `t` GROUP BY `t`.`c`; +count(`t`.`c`) +170 +set @@tidb_max_chunk_size = default; diff --git a/tests/integrationtest/t/executor/issues.test b/tests/integrationtest/t/executor/issues.test index 52f2a7e279d2c..736464d7a2892 100644 --- a/tests/integrationtest/t/executor/issues.test +++ b/tests/integrationtest/t/executor/issues.test @@ -646,4 +646,17 @@ set @@sql_mode = ''; insert into t select round(cast('88888899999999999888888888888888888888888888888888888.11111111111111111111' as decimal(18,12)) * cast('88888899999999999888888888888888888888888888888888888.11111111111111111111' as decimal(42,18)) ); show warnings; select * from t; -set @@sql_mode = default; \ No newline at end of file +set @@sql_mode = default; + +# TestIssue49902 +set @@tidb_max_chunk_size = 32; +drop table if exists t, s; +CREATE TABLE `t` (`c` char(1)) COLLATE=utf8_general_ci ; +insert into t values("V"),("v"); +insert into t values("V"),("v"),("v"); +CREATE TABLE `s` (`col_61` int); +insert into s values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1); +insert into s values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1),(1); +SELECT /*+ stream_agg()*/ count(`t`.`c`) FROM (`s`) JOIN `t` GROUP BY `t`.`c`; +SELECT count(`t`.`c`) FROM (`s`) JOIN `t` GROUP BY `t`.`c`; +set @@tidb_max_chunk_size = default; \ No newline at end of file