computeHLLValue populate hyperloglog value
(dataType memCom.DataType, value interface{})
| 197 | |
| 198 | // computeHLLValue populate hyperloglog value |
| 199 | func 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. |
no test coverage detected