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

Method prepareTimezoneTable

query/aql_processor.go:452–500  ·  view source on GitHub ↗

prepareTimezoneTable

(store memstore.MemStore)

Source from the content-addressed store, hash-verified

450
451// prepareTimezoneTable
452func (qc *AQLQueryContext) prepareTimezoneTable(store memstore.MemStore) {
453 if qc.timezoneTable.tableColumn == "" {
454 return
455 }
456
457 // Timezone table
458 timezoneTableName := utils.GetConfig().Query.TimezoneTable.TableName
459 schema, err := store.GetSchema(timezoneTableName)
460 if err != nil {
461 qc.Error = err
462 return
463 }
464 if schema == nil {
465 qc.Error = utils.StackError(nil, "unknown timezone table %s", timezoneTableName)
466 return
467 }
468
469 timer := utils.GetRootReporter().GetTimer(utils.TimezoneLookupTableCreationTime)
470 start := utils.Now()
471 defer func() {
472 duration := utils.Now().Sub(start)
473 timer.Record(duration)
474 }()
475
476 schema.RLock()
477 defer schema.RUnlock()
478
479 if tzDict, found := schema.EnumDicts[qc.timezoneTable.tableColumn]; found {
480 lookUp := make([]int16, len(tzDict.ReverseDict))
481 for i := range lookUp {
482 if loc, err := time.LoadLocation(tzDict.ReverseDict[i]); err == nil {
483 _, offset := time.Now().In(loc).Zone()
484 lookUp[i] = int16(offset)
485 } else {
486 qc.Error = utils.StackError(err, "error parsing timezone")
487 return
488 }
489 }
490 sizeInBytes := binary.Size(lookUp)
491 lookupPtr := deviceAllocate(sizeInBytes, qc.Device)
492 cgoutils.AsyncCopyHostToDevice(lookupPtr.getPointer(), unsafe.Pointer(&lookUp[0]), sizeInBytes, qc.cudaStreams[0], qc.Device)
493 qc.OOPK.currentBatch.timezoneLookupD = lookupPtr
494 qc.OOPK.currentBatch.timezoneLookupDSize = len(lookUp)
495 } else {
496 qc.Error = utils.StackError(nil, "unknown timezone column %s", qc.timezoneTable.tableColumn)
497 return
498 }
499
500}
501
502// transferLiveBatch returns a functor to transfer a live batch to device memory. The size parameter will be either the
503// size of the batch or num records in last batch. hostColumns will always be empty since we should not release a vector

Callers 2

ProcessQueryMethod · 0.95

Calls 13

GetConfigFunction · 0.92
StackErrorFunction · 0.92
GetRootReporterFunction · 0.92
NowFunction · 0.92
AsyncCopyHostToDeviceFunction · 0.92
deviceAllocateFunction · 0.85
GetTimerMethod · 0.80
NowMethod · 0.80
getPointerMethod · 0.80
GetSchemaMethod · 0.65
RLockMethod · 0.65
RUnlockMethod · 0.65

Tested by

no test coverage detected