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

Method fetchAndSetEnumCases

client/schema.go:257–307  ·  view source on GitHub ↗
(table *metaCom.Table)

Source from the content-addressed store, hash-verified

255}
256
257func (cf *CachedSchemaHandler) fetchAndSetEnumCases(table *metaCom.Table) error {
258 enumMappings := make(map[int]enumDict)
259 enumDefaultValueMappings := make(map[int]int)
260 for columnID, column := range table.Columns {
261 if column.Deleted {
262 continue
263 }
264 enumMappings[columnID] = make(enumDict)
265 caseInsensitive := column.CaseInsensitive
266 var defValuePtr *string
267
268 if column.DefaultValue != nil {
269 var defValue = *column.DefaultValue
270 if caseInsensitive {
271 defValue = strings.ToLower(defValue)
272 }
273 defValuePtr = &defValue
274 }
275
276 if column.IsEnumColumn() {
277 enumCases, err := cf.schemaFetcher.FetchAllEnums(table.Name, column.Name)
278 if err == nil {
279 for enumID, enumCase := range enumCases {
280 // Convert to lower case for comparison during ingestion.
281 if caseInsensitive {
282 enumCase = strings.ToLower(enumCase)
283 }
284 // all mapping should be pre created
285 enumMappings[columnID][enumCase] = enumID
286
287 if defValuePtr != nil {
288 if *defValuePtr == enumCase {
289 enumDefaultValueMappings[columnID] = enumID
290 }
291 }
292 }
293 } else {
294 cf.metricScope.Tagged(map[string]string{
295 "table": table.Name,
296 "columnID": strconv.Itoa(columnID),
297 }).Counter("err_fetch_enum_dict").Inc(1)
298 return utils.StackError(err, "Failed to fetch enum cases for table: %s, column: %d", table.Name, columnID)
299 }
300 }
301 }
302 cf.Lock()
303 cf.enumMappings[table.Name] = enumMappings
304 cf.enumDefaultValueMappings[table.Name] = enumDefaultValueMappings
305 cf.Unlock()
306 return nil
307}
308
309func (cf *CachedSchemaHandler) setTable(table *metaCom.Table) *TableSchema {
310 columnDict := make(map[string]int)

Callers 2

FetchAllSchemaMethod · 0.95
FetchSchemaMethod · 0.95

Calls 5

StackErrorFunction · 0.92
IsEnumColumnMethod · 0.80
FetchAllEnumsMethod · 0.65
LockMethod · 0.45
UnlockMethod · 0.45

Tested by

no test coverage detected