You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 83a2f01
Browse filesBrowse the repository at this point in the historyBrowse files
[improvement](be) Batch constant fills in rowid direct reads
### What problem does this PR solve?
Issue Number: None
Related PR: #68125
Problem Summary: `read_slot_column_by_rowid()` appended a VERSION/COMMIT_TSO constant with `insert(Field)` once per row. The caller already reserves the batch capacity in `Block(slots, row_ids.size())`, so this commit replaces the per-row virtual insert, `Field` extraction and push-back with one batched fill.
`ColumnVector` now overrides `insert_duplicate_fields()` to delegate to `insert_many_vals(x.get<T>(), n)`, which performs one resize followed by `std::fill`; the generic inherited implementation still looped over `insert(Field)`. `ColumnNullable::insert_duplicate_fields()` keeps its batched null-map handling and delegates the nested constant to the new override. Zero-count and append-after-existing-rows semantics are covered by tests.
### Release note
None
### Check List (For Author)
- Test: Unit Test / Regression test
- BE UT: `ColumnVectorTest.insert_duplicate_fields` (all ColumnVector element types, zero count and append) and `ColumnNullableTest.InsertDuplicateFieldsKeepsBatchedNullMap` passed.
- Local regression: `point_query_p0/test_point_query_read_time_hidden_columns` passed on the direct-read path.
- Behavior changed: No
- Does this need documentation: No
0 commit comments