diff --git a/pkg/s3select/select.go b/pkg/s3select/select.go index 48e130bd3..5294a963e 100644 --- a/pkg/s3select/select.go +++ b/pkg/s3select/select.go @@ -370,8 +370,9 @@ func aggregationFunctions(counter int, filtrCount int, myAggVals []float64, colu // If column names are provided as an index it'll use this if statement instead of the else/ var convAggFloat float64 if representsInt(storeReqCols[i]) { - myIndex, _ := strconv.Atoi(storeReqCols[i]) - convAggFloat, _ = strconv.ParseFloat(record[myIndex], 64) + colIndex, _ := strconv.Atoi(storeReqCols[i]) + // colIndex is 1-based + convAggFloat, _ = strconv.ParseFloat(record[colIndex-1], 64) } else { // case that the columns are in the form of named columns rather than indices. diff --git a/pkg/s3select/select_test.go b/pkg/s3select/select_test.go index 52adb066b..441aee5f0 100644 --- a/pkg/s3select/select_test.go +++ b/pkg/s3select/select_test.go @@ -331,7 +331,7 @@ func TestMyAggregationFunc(t *testing.T) { {1, 1, []float64{10}, columnsMap, []string{"Col1"}, []string{"avg"}, []string{"1", "2"}, nil, 5.500}, {10, 5, []float64{0.000}, columnsMap, []string{"Col1"}, []string{"random"}, []string{"1", "2"}, ErrParseNonUnaryAgregateFunctionCall, 0}, {0, 5, []float64{0}, columnsMap, []string{"0"}, []string{"count"}, []string{"1", "2"}, nil, 1}, - {10, 5, []float64{10}, columnsMap, []string{"1"}, []string{"min"}, []string{"1", "12"}, nil, 10}, + {10, 5, []float64{10}, columnsMap, []string{"1"}, []string{"min"}, []string{"1", "12"}, nil, 1}, } for _, table := range tables { err := aggregationFunctions(table.counter, table.filtrCount, table.myAggVals, table.columnsMap, table.storeReqCols, table.storeFunctions, table.record)