From 329bcb2a371cf791e5102b607922f545452b8b40 Mon Sep 17 00:00:00 2001 From: Jason Fulghum Date: Mon, 19 May 2025 15:41:24 -0700 Subject: [PATCH] Bug fix: use ExtendedType serialization if present --- sql/rowexec/agg.go | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sql/rowexec/agg.go b/sql/rowexec/agg.go index d777ab18a4..e43911065b 100644 --- a/sql/rowexec/agg.go +++ b/sql/rowexec/agg.go @@ -257,11 +257,18 @@ func groupingKey( } } - t, isStringType := expr.Type().(sql.StringType) - if isStringType && v != nil { - v, err = types.ConvertToString(ctx, v, t, nil) + extendedType, isExtendedType := expr.Type().(types.ExtendedType) + stringType, isStringType := expr.Type().(sql.StringType) + + if isExtendedType && v != nil { + bytes, err := extendedType.SerializeValue(ctx, v) + if err == nil { + _, err = fmt.Fprint(hash, string(bytes)) + } + } else if isStringType && v != nil { + v, err = types.ConvertToString(ctx, v, stringType, nil) if err == nil { - err = t.Collation().WriteWeightString(hash, v.(string)) + err = stringType.Collation().WriteWeightString(hash, v.(string)) } } else { _, err = fmt.Fprintf(hash, "%v", v)