@@ -1884,9 +1884,10 @@ protected Value[] fetchNextRow() {
18841884 setCurrentRowNumber (rowNumber + 1 );
18851885 if (isConditionMet ()) {
18861886 rowNumber ++;
1887- Value [] keyValues = new Value [groupIndex .length ];
1887+ int groupSize = groupIndex .length ;
1888+ Value [] keyValues = new Value [groupSize ];
18881889 // update group
1889- for (int i = 0 ; i < groupIndex . length ; i ++) {
1890+ for (int i = 0 ; i < groupSize ; i ++) {
18901891 int idx = groupIndex [i ];
18911892 Expression expr = expressions .get (idx );
18921893 keyValues [i ] = expr .getValue (getSession ());
@@ -1896,10 +1897,16 @@ protected Value[] fetchNextRow() {
18961897 if (previousKeyValues == null ) {
18971898 previousKeyValues = keyValues ;
18981899 groupData .nextLazyGroup ();
1899- } else if (!Arrays .equals (previousKeyValues , keyValues )) {
1900- row = createGroupSortedRow (previousKeyValues , columnCount );
1901- previousKeyValues = keyValues ;
1902- groupData .nextLazyGroup ();
1900+ } else {
1901+ SessionLocal session = getSession ();
1902+ for (int i = 0 ; i < groupSize ; i ++) {
1903+ if (session .compare (previousKeyValues [i ], keyValues [i ]) != 0 ) {
1904+ row = createGroupSortedRow (previousKeyValues , columnCount );
1905+ previousKeyValues = keyValues ;
1906+ groupData .nextLazyGroup ();
1907+ break ;
1908+ }
1909+ }
19031910 }
19041911 groupData .nextLazyRow ();
19051912 updateAgg (columnCount , DataAnalysisOperation .STAGE_GROUP );
0 commit comments