diff --git a/pkg/common/hashmap/strhashmap.go b/pkg/common/hashmap/strhashmap.go index fd1e9f7e562456b193fafe97a0ae6bb2fd2a6469..59bd020c02ee0aa8034a3f85590f8f421857f6f5 100644 --- a/pkg/common/hashmap/strhashmap.go +++ b/pkg/common/hashmap/strhashmap.go @@ -61,6 +61,9 @@ func (m *StrHashMap) AddGroup() { // never handle null func (m *StrHashMap) InsertValue(val any) bool { defer func() { m.keys[0] = m.keys[0][:0] }() + if m.hasNull { + m.keys[0] = append(m.keys[0], byte(0)) + } switch v := val.(type) { case uint8: m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) @@ -70,12 +73,24 @@ func (m *StrHashMap) InsertValue(val any) bool { m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) case uint64: m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) + case int8: + m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) + case int16: + m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) + case int32: + m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) + case int64: + m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) + case float32: + m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) + case float64: + m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) case []byte: m.keys[0] = append(m.keys[0], v...) - case types.Decimal128: - m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) case types.Decimal64: m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) + case types.Decimal128: + m.keys[0] = append(m.keys[0], encoding.EncodeFixed(v)...) } if l := len(m.keys[0]); l < 16 { m.keys[0] = append(m.keys[0], hashtable.StrKeyPadding[l:]...)