@@ -287,30 +287,7 @@ duckdb_state Ingest(duckdb_connection connection, const char *table_name, struct
287287duckdb_state duckdb_arrow_scan (duckdb_connection connection, const char *table_name, duckdb_arrow_stream arrow) {
288288 auto stream = reinterpret_cast <ArrowArrayStream *>(arrow);
289289
290- // Backup release functions - we nullify children schema release functions because we don't want to release on
291- // behalf of the caller, downstream in our code. Note that Arrow releases target immediate children, but aren't
292- // recursive. So we only back up immediate children here and restore their functions.
293- ArrowSchema schema;
294- if (stream->get_schema (stream, &schema) == DuckDBError) {
295- return DuckDBError;
296- }
297-
298- typedef void (*release_fn_t )(ArrowSchema *);
299- std::vector<release_fn_t > release_fns (duckdb::NumericCast<idx_t >(schema.n_children ));
300- for (idx_t i = 0 ; i < duckdb::NumericCast<idx_t >(schema.n_children ); i++) {
301- auto child = schema.children [i];
302- release_fns[i] = child->release ;
303- child->release = arrow_array_stream_wrapper::EmptySchemaRelease;
304- }
305-
306- auto ret = arrow_array_stream_wrapper::Ingest (connection, table_name, stream);
307-
308- // Restore release functions.
309- for (idx_t i = 0 ; i < duckdb::NumericCast<idx_t >(schema.n_children ); i++) {
310- schema.children [i]->release = release_fns[i];
311- }
312-
313- return ret;
290+ return arrow_array_stream_wrapper::Ingest (connection, table_name, stream);
314291}
315292
316293duckdb_state duckdb_arrow_array_scan (duckdb_connection connection, const char *table_name,
0 commit comments