Skip to content

Commit 8104f15

Browse files
committed
ensure column id coverage
1 parent 5806c25 commit 8104f15

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

src/bigquery_arrow_scan.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -285,10 +285,17 @@ void BigqueryArrowScanFunction::BigqueryArrowScanExecute(ClientContext &ctx,
285285
NumericCast<idx_t>(state.chunk->arrow_array.length) - state.chunk_offset);
286286
data.lines_read += output_size;
287287

288+
auto ensure_column_id_coverage = [&](DataChunk &chunk) {
289+
if (!state.column_ids.empty() && state.column_ids.size() != chunk.ColumnCount()) {
290+
state.column_ids.clear();
291+
}
292+
};
293+
288294
if (gstate.CanRemoveFilterColumns()) {
289295
state.all_columns.Reset();
290296
state.all_columns.SetCardinality(output_size);
291297

298+
ensure_column_id_coverage(state.all_columns);
292299
ArrowTableFunction::ArrowToDuckDB(state,
293300
data.arrow_table.GetColumns(),
294301
state.all_columns,
@@ -358,13 +365,15 @@ void BigqueryArrowScanFunction::BigqueryArrowScanExecute(ClientContext &ctx,
358365
bool do_cast = data.requires_cast || geometry_cast_needed;
359366
if (!do_cast) {
360367
// Direct write to output
368+
ensure_column_id_coverage(output);
361369
ArrowTableFunction::ArrowToDuckDB(state,
362370
data.arrow_table.GetColumns(),
363371
output,
364372
data.lines_read - output_size);
365373
} else {
366374
state.all_columns.Reset();
367375
state.all_columns.SetCardinality(output_size);
376+
ensure_column_id_coverage(state.all_columns);
368377
ArrowTableFunction::ArrowToDuckDB(state,
369378
data.arrow_table.GetColumns(),
370379
state.all_columns,

0 commit comments

Comments
 (0)