MCPcopy
hub / github.com/uber/aresdb / computeHLLValue

Function computeHLLValue

client/connector.go:199–226  ·  view source on GitHub ↗

computeHLLValue populate hyperloglog value

(dataType memCom.DataType, value interface{})

Source from the content-addressed store, hash-verified

197
198// computeHLLValue populate hyperloglog value
199func computeHLLValue(dataType memCom.DataType, value interface{}) (uint32, error) {
200 var ok bool
201 var hashed uint64
202 switch dataType {
203 case memCom.UUID:
204 var v [2]uint64
205 v, ok = memCom.ConvertToUUID(value)
206 hashed = v[0] ^ v[1]
207 case memCom.Uint32:
208 var v uint32
209 v, ok = memCom.ConvertToUint32(value)
210 hashed = utils.Murmur3Sum64(unsafe.Pointer(&v), memCom.DataTypeBytes(dataType), 0)
211 case memCom.Int32:
212 var v int32
213 v, ok = memCom.ConvertToInt32(value)
214 hashed = utils.Murmur3Sum64(unsafe.Pointer(&v), memCom.DataTypeBytes(dataType), 0)
215 case memCom.Int64:
216 var v int64
217 v, ok = memCom.ConvertToInt64(value)
218 hashed = utils.Murmur3Sum64(unsafe.Pointer(&v), memCom.DataTypeBytes(dataType), 0)
219 default:
220 return 0, utils.StackError(nil, "invalid type %s for fast hll value", memCom.DataTypeName[dataType])
221 }
222 if !ok {
223 return 0, utils.StackError(nil, "invalid data value %v for data type %s", value, memCom.DataTypeName[dataType])
224 }
225 return utils.ComputeHLLValue(hashed), nil
226}
227
228// prepareUpsertBatch prepares the upsert batch for upsert,
229// returns upsertBatch byte array, number of rows in upsert batch and error.

Callers 2

PrepareUpsertBatchMethod · 0.85
connector_test.goFile · 0.85

Calls 3

Murmur3Sum64Function · 0.92
StackErrorFunction · 0.92
ComputeHLLValueFunction · 0.92

Tested by

no test coverage detected