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

Method flushResultBuffer

query/aql_postprocessor.go:66–161  ·  view source on GitHub ↗

flushResultBuffer reads dimension and measure data from current OOPK buffer to Results

()

Source from the content-addressed store, hash-verified

64
65// flushResultBuffer reads dimension and measure data from current OOPK buffer to Results
66func (qc *AQLQueryContext) flushResultBuffer() {
67 start := utils.Now()
68 defer func() { qc.reportTiming(qc.cudaStreams[0], &start, resultFlushTiming) }()
69
70 if qc.Results == nil {
71 qc.Results = make(queryCom.AQLQueryResult)
72 }
73
74 oopkContext := qc.OOPK
75 dpc := qc.resultFlushContext
76 dimValues := make([]*string, len(oopkContext.Dimensions))
77
78 var fromOffset, toOffset int
79 if qc.fromTime != nil && qc.toTime != nil {
80 _, fromOffset = qc.fromTime.Time.Zone()
81 _, toOffset = qc.toTime.Time.Zone()
82 }
83
84 dimOffsets := make(map[int][2]int)
85 for dimIndex := range oopkContext.Dimensions {
86 dimVectorIndex := oopkContext.DimensionVectorIndex[dimIndex]
87 valueOffset, nullOffset := queryCom.GetDimensionStartOffsets(oopkContext.NumDimsPerDimWidth, dimVectorIndex, oopkContext.ResultSize)
88 dimOffsets[dimIndex] = [2]int{valueOffset, nullOffset}
89 }
90
91 for i := 0; i < oopkContext.ResultSize; i++ {
92 dimReadingStart := utils.Now()
93 for dimIndex := range oopkContext.Dimensions {
94 offsets := dimOffsets[dimIndex]
95 valueOffset, nullOffset := offsets[0], offsets[1]
96 valuePtr, nullPtr := utils.MemAccess(oopkContext.dimensionVectorH, valueOffset), utils.MemAccess(oopkContext.dimensionVectorH, nullOffset)
97
98 if qc.Query.Dimensions[dimIndex].IsTimeDimension() && dpc.dimensionValueCache[dimIndex] == nil {
99 dpc.dimensionValueCache[dimIndex] = make(map[queryCom.TimeDimensionMeta]map[int64]string)
100 }
101
102 var timeDimensionMeta *queryCom.TimeDimensionMeta
103
104 if qc.Query.Dimensions[dimIndex].IsTimeDimension() {
105 timeDimensionMeta = &queryCom.TimeDimensionMeta{
106 TimeBucketizer: qc.Query.Dimensions[dimIndex].TimeBucketizer,
107 TimeUnit: qc.Query.Dimensions[dimIndex].TimeUnit,
108 IsTimezoneTable: qc.timezoneTable.tableColumn != "",
109 TimeZone: qc.fixedTimezone,
110 DSTSwitchTs: qc.dstswitch,
111 FromOffset: fromOffset,
112 ToOffset: toOffset,
113 }
114 }
115
116 // don't translate enum if it's for distributed mode (DataOnly == true)
117 var enumDict []string
118 if !qc.DataOnly {
119 enumDict = dpc.reverseDicts[dimIndex]
120 }
121
122 dimValues[dimIndex] = queryCom.ReadDimension(
123 valuePtr, nullPtr, i, dpc.dimensionDataTypes[dimIndex], enumDict,

Callers 3

PostprocessMethod · 0.95
postExecMethod · 0.80

Calls 10

reportTimingMethod · 0.95
NowFunction · 0.92
MemAccessFunction · 0.92
GetRootReporterFunction · 0.92
readMeasureFunction · 0.85
IsTimeDimensionMethod · 0.80
GetTimerMethod · 0.80
WriteMethod · 0.65
AppendMethod · 0.45
SetMethod · 0.45

Tested by

no test coverage detected