Skip to content

Commit abca93c

Browse files
authored
Bug fix: schema evolution fix-to-var reads followup. (#5362)
Schema evolution bug fix: Reads no longer fail after dropping a fixed attribute and adding it back as var-sized. Followup to #5321 to address a previously-missed case caught by [TileDB-Inc/TileDB-Py/#2083](TileDB-Inc/TileDB-Py#2083) [sc-55085] --- TYPE: BUG DESC: Schema evolution bug fix: Reads no longer fail after dropping a fixed attribute and adding it back as var-sized, part 2.
1 parent b224aee commit abca93c

File tree

1 file changed

+3
-7
lines changed

1 file changed

+3
-7
lines changed

tiledb/sm/query/readers/reader_base.cc

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1136,7 +1136,7 @@ uint64_t ReaderBase::offsets_bytesize() const {
11361136
uint64_t ReaderBase::get_attribute_tile_size(
11371137
const std::string& name, unsigned f, uint64_t t) const {
11381138
uint64_t tile_size = 0;
1139-
if (!fragment_metadata_[f]->array_schema()->is_field(name)) {
1139+
if (skip_field(f, name)) {
11401140
return tile_size;
11411141
}
11421142

@@ -1148,8 +1148,7 @@ uint64_t ReaderBase::get_attribute_tile_size(
11481148
* contains fixed tiles. The tile_var_size should be calculated iff
11491149
* both the current _and_ loaded attributes are var-sized.
11501150
*/
1151-
if (array_schema_.var_size(name) &&
1152-
fragment_metadata_[f]->array_schema()->var_size(name)) {
1151+
if (array_schema_.var_size(name)) {
11531152
tile_size +=
11541153
fragment_metadata_[f]->loaded_metadata()->tile_var_size(name, t);
11551154
}
@@ -1165,13 +1164,10 @@ uint64_t ReaderBase::get_attribute_tile_size(
11651164
uint64_t ReaderBase::get_attribute_persisted_tile_size(
11661165
const std::string& name, unsigned f, uint64_t t) const {
11671166
uint64_t tile_size = 0;
1168-
if (!fragment_metadata_[f]->array_schema()->is_field(name)) {
1167+
if (skip_field(f, name)) {
11691168
return tile_size;
11701169
}
11711170

1172-
tile_size +=
1173-
fragment_metadata_[f]->loaded_metadata()->persisted_tile_size(name, t);
1174-
11751171
if (array_schema_.var_size(name)) {
11761172
tile_size +=
11771173
fragment_metadata_[f]->loaded_metadata()->persisted_tile_var_size(

0 commit comments

Comments
 (0)