@@ -110,6 +110,35 @@ func UpdateHashFloatMinFast(dstChunk, srcChunk Chunk, dstCol, srcCol, dstRow, sr
110
110
dstColumn .UpdateFloatValueFast (minV , dstRow )
111
111
}
112
112
113
+ func UpdateHashBooleanMinSlow (dstChunk , srcChunk Chunk , dstCol , srcCol , dstRow , srcRow int ) {
114
+ srcColumn , dstColumn := srcChunk .Column (srcCol ), dstChunk .Column (dstCol )
115
+ isNil := srcColumn .IsNilV2 (srcRow )
116
+ if isNil {
117
+ return
118
+ }
119
+ srcRow = srcColumn .GetValueIndexV2 (srcRow )
120
+ sv := srcColumn .BooleanValue (srcRow )
121
+ dv := dstColumn .BooleanValue (dstRow )
122
+ if ! dv {
123
+ return
124
+ }
125
+ if ! sv {
126
+ dstColumn .UpdateBooleanValueFast (sv , dstRow )
127
+ }
128
+ }
129
+
130
+ func UpdateHashBooleanMinFast (dstChunk , srcChunk Chunk , dstCol , srcCol , dstRow , srcRow int ) {
131
+ dstColumn := dstChunk .Column (dstCol )
132
+ sv := srcChunk .Column (srcCol ).BooleanValue (srcRow )
133
+ dv := dstColumn .BooleanValue (dstRow )
134
+ if ! dv {
135
+ return
136
+ }
137
+ if ! sv {
138
+ dstColumn .UpdateBooleanValueFast (sv , dstRow )
139
+ }
140
+ }
141
+
113
142
func rewriteInterMinColumnFunc (chunk Chunk , srcCol , lastNum int ) {
114
143
column := chunk .Column (srcCol )
115
144
lastIndex := len (column .IntegerValues ()) - 1
@@ -134,6 +163,18 @@ func rewriteFloatMinColumnFunc(chunk Chunk, srcCol, lastNum int) {
134
163
}
135
164
}
136
165
166
+ func rewriteBooleanMinColumnFunc (chunk Chunk , srcCol , lastNum int ) {
167
+ column := chunk .Column (srcCol )
168
+ lastIndex := len (column .BooleanValues ()) - 1
169
+ firstIndex := lastIndex - lastNum + 1
170
+ if firstIndex < 0 {
171
+ return
172
+ }
173
+ for i := lastIndex ; i >= firstIndex ; i -- {
174
+ column .UpdateBooleanValueFast (true , i )
175
+ }
176
+ }
177
+
137
178
func UpdateHashInterMaxSlow (dstChunk , srcChunk Chunk , dstCol , srcCol , dstRow , srcRow int ) {
138
179
srcColumn , dstColumn := srcChunk .Column (srcCol ), dstChunk .Column (dstCol )
139
180
isNil := srcColumn .IsNilV2 (srcRow )
@@ -188,6 +229,35 @@ func UpdateHashFloatMaxFast(dstChunk, srcChunk Chunk, dstCol, srcCol, dstRow, sr
188
229
dstColumn .UpdateFloatValueFast (maxV , dstRow )
189
230
}
190
231
232
+ func UpdateHashBooleanMaxSlow (dstChunk , srcChunk Chunk , dstCol , srcCol , dstRow , srcRow int ) {
233
+ srcColumn , dstColumn := srcChunk .Column (srcCol ), dstChunk .Column (dstCol )
234
+ isNil := srcColumn .IsNilV2 (srcRow )
235
+ if isNil {
236
+ return
237
+ }
238
+ srcRow = srcColumn .GetValueIndexV2 (srcRow )
239
+ sv := srcColumn .BooleanValue (srcRow )
240
+ dv := dstColumn .BooleanValue (dstRow )
241
+ if dv {
242
+ return
243
+ }
244
+ if sv {
245
+ dstColumn .UpdateBooleanValueFast (sv , dstRow )
246
+ }
247
+ }
248
+
249
+ func UpdateHashBooleanMaxFast (dstChunk , srcChunk Chunk , dstCol , srcCol , dstRow , srcRow int ) {
250
+ dstColumn := dstChunk .Column (dstCol )
251
+ sv := srcChunk .Column (srcCol ).BooleanValue (srcRow )
252
+ dv := dstColumn .BooleanValue (dstRow )
253
+ if dv {
254
+ return
255
+ }
256
+ if sv {
257
+ dstColumn .UpdateBooleanValueFast (sv , dstRow )
258
+ }
259
+ }
260
+
191
261
func rewriteInterMaxColumnFunc (chunk Chunk , srcCol , lastNum int ) {
192
262
column := chunk .Column (srcCol )
193
263
lastIndex := len (column .IntegerValues ()) - 1
@@ -211,3 +281,15 @@ func rewriteFloatMaxColumnFunc(chunk Chunk, srcCol, lastNum int) {
211
281
column .UpdateFloatValueFast (- math .MaxFloat64 , i )
212
282
}
213
283
}
284
+
285
+ func rewriteBooleanMaxColumnFunc (chunk Chunk , srcCol , lastNum int ) {
286
+ column := chunk .Column (srcCol )
287
+ lastIndex := len (column .BooleanValues ()) - 1
288
+ firstIndex := lastIndex - lastNum + 1
289
+ if firstIndex < 0 {
290
+ return
291
+ }
292
+ for i := lastIndex ; i >= firstIndex ; i -- {
293
+ column .UpdateBooleanValueFast (false , i )
294
+ }
295
+ }
0 commit comments