| 260 | } |
| 261 | |
| 262 | Status RowTableImpl::ResizeFixedLengthBuffers(int64_t num_extra_rows) { |
| 263 | if (rows_capacity_ >= num_rows_ + num_extra_rows) { |
| 264 | return Status::OK(); |
| 265 | } |
| 266 | |
| 267 | int64_t rows_capacity_new = std::max(static_cast<int64_t>(1), 2 * rows_capacity_); |
| 268 | while (rows_capacity_new < num_rows_ + num_extra_rows) { |
| 269 | rows_capacity_new *= 2; |
| 270 | } |
| 271 | |
| 272 | // Null masks |
| 273 | RETURN_NOT_OK(null_masks_->Resize(size_null_masks(rows_capacity_new), false)); |
| 274 | memset(null_masks_->mutable_data() + size_null_masks(rows_capacity_), 0, |
| 275 | size_null_masks(rows_capacity_new) - size_null_masks(rows_capacity_)); |
| 276 | |
| 277 | // Either offsets or rows |
| 278 | if (!metadata_.is_fixed_length) { |
| 279 | RETURN_NOT_OK(offsets_->Resize(size_offsets(rows_capacity_new), false)); |
| 280 | memset(offsets_->mutable_data() + size_offsets(rows_capacity_), 0, |
| 281 | size_offsets(rows_capacity_new) - size_offsets(rows_capacity_)); |
| 282 | } else { |
| 283 | RETURN_NOT_OK(rows_->Resize(size_rows_fixed_length(rows_capacity_new), false)); |
| 284 | memset(rows_->mutable_data() + size_rows_fixed_length(rows_capacity_), 0, |
| 285 | size_rows_fixed_length(rows_capacity_new) - |
| 286 | size_rows_fixed_length(rows_capacity_)); |
| 287 | bytes_capacity_ = size_rows_fixed_length(rows_capacity_new) - kPaddingForVectors; |
| 288 | } |
| 289 | |
| 290 | UpdateBufferPointers(); |
| 291 | |
| 292 | rows_capacity_ = rows_capacity_new; |
| 293 | |
| 294 | return Status::OK(); |
| 295 | } |
| 296 | |
| 297 | Status RowTableImpl::ResizeOptionalVaryingLengthBuffer(int64_t num_extra_bytes) { |
| 298 | DCHECK(!metadata_.is_fixed_length); |