| 225 | using ArrayType = typename CTypeTraits<T>::ArrayType; |
| 226 | |
| 227 | static void Sum(const ArrayType& array, SumState<T>* state) { |
| 228 | SumState<T> local; |
| 229 | |
| 230 | const auto values = array.raw_values(); |
| 231 | const auto bitmap = array.null_bitmap_data(); |
| 232 | const auto length = array.length(); |
| 233 | BitmapReader bit_reader(bitmap, 0, length); |
| 234 | for (int64_t i = 0; i < length; ++i) { |
| 235 | if (bit_reader.IsSet()) { |
| 236 | local.total += values[i]; |
| 237 | ++local.valid_count; |
| 238 | } |
| 239 | |
| 240 | bit_reader.Next(); |
| 241 | } |
| 242 | |
| 243 | *state = local; |
| 244 | } |
| 245 | }; |
| 246 | |
| 247 | template <typename T> |
nothing calls this directly
no test coverage detected