@@ -82,14 +82,12 @@ struct CTableLocalData final : LocalTableFunctionState {
8282 unique_ptr<CData> ffi_data;
8383};
8484
85- double c_table_scan_progress (ClientContext &context ,
86- const FunctionData *bind_data,
87- const GlobalTableFunctionState *global_state) {
85+ double table_scan_progress (ClientContext &,
86+ const FunctionData *bind_data,
87+ const GlobalTableFunctionState *global_state) {
8888 auto &bind = bind_data->Cast <CTableBindData>();
89- duckdb_client_context c_ctx = reinterpret_cast <duckdb_client_context>(&context);
90- void *const c_bind_data = bind.ffi_data ->DataPtr ();
9189 void *const c_global_state = global_state->Cast <CTableGlobalData>().ffi_data ->DataPtr ();
92- return bind.info .vtab .table_scan_progress (c_ctx, c_bind_data, c_global_state);
90+ return bind.info .vtab .table_scan_progress (c_global_state);
9391}
9492
9593static Value &UnwrapValue (duckdb_value value) {
@@ -140,18 +138,16 @@ unique_ptr<BaseStatistics> base_stats(duckdb_column_statistics &stats, LogicalTy
140138 return out.ToUnique ();
141139}
142140
143- unique_ptr<BaseStatistics>
144- c_statistics (ClientContext &context, const FunctionData *bind_data, column_t column_index) {
141+ unique_ptr<BaseStatistics> statistics (ClientContext &, const FunctionData *bind_data, column_t column_index) {
145142 if (IsVirtualColumn (column_index)) {
146143 return {};
147144 }
148145
149146 const auto &bind = bind_data->Cast <CTableBindData>();
150147 void *const ffi_bind = bind.ffi_data ->DataPtr ();
151148
152- duckdb_client_context c_ctx = reinterpret_cast <duckdb_client_context>(&context);
153149 duckdb_column_statistics statistics = {};
154- if (!bind.info .vtab .statistics (c_ctx, ffi_bind, column_index, &statistics)) {
150+ if (!bind.info .vtab .statistics (ffi_bind, column_index, &statistics)) {
155151 return {};
156152 }
157153
@@ -243,43 +239,25 @@ unique_ptr<GlobalTableFunctionState> c_init_global(ClientContext &context, Table
243239 return make_uniq<CTableGlobalData>(std::move (cdata));
244240}
245241
246- unique_ptr<LocalTableFunctionState> c_init_local (ExecutionContext &context,
247- TableFunctionInitInput &input,
248- GlobalTableFunctionState *global_state) {
242+ unique_ptr<LocalTableFunctionState>
243+ init_local (ExecutionContext &, TableFunctionInitInput &input, GlobalTableFunctionState *global_state) {
249244 const auto &bind = input.bind_data ->Cast <CTableBindData>();
250245 void *const ffi_global = global_state->Cast <CTableGlobalData>().ffi_data ->DataPtr ();
251246
252- duckdb_vx_tfunc_init_input ffi_input = {
253- .bind_data = bind.ffi_data ->DataPtr (),
254- .column_ids = input.column_ids .data (),
255- .column_ids_count = input.column_ids .size (),
256- .projection_ids = input.projection_ids .data (),
257- .projection_ids_count = input.projection_ids .size (),
258- .filters = reinterpret_cast <duckdb_vx_table_filter_set>(input.filters .get ()),
259- .client_context = reinterpret_cast <duckdb_client_context>(&context),
260- };
261-
262- duckdb_vx_error error_out = nullptr ;
263- duckdb_vx_data ffi_local_data = bind.info .vtab .init_local (&ffi_input, ffi_global, &error_out);
264- if (error_out) {
265- throw BinderException (IntoErrString (error_out));
266- }
267-
247+ duckdb_vx_data ffi_local_data = bind.info .vtab .init_local (ffi_global);
268248 auto cdata = unique_ptr<CData>(reinterpret_cast <CData *>(ffi_local_data));
269249 return make_uniq<CTableLocalData>(std::move (cdata));
270250}
271251
272- void c_function (ClientContext &context , TableFunctionInput &input, DataChunk &output) {
252+ void function (ClientContext &, TableFunctionInput &input, DataChunk &output) {
273253 const auto &bind = input.bind_data ->Cast <CTableBindData>();
274254
275- duckdb_client_context ffi_ctx = reinterpret_cast <duckdb_client_context>(&context);
276- void *const ffi_bind = bind.ffi_data ->DataPtr ();
277255 void *const ffi_global = input.global_state ->Cast <CTableGlobalData>().ffi_data ->DataPtr ();
278256 void *const ffi_local = input.local_state ->Cast <CTableLocalData>().ffi_data ->DataPtr ();
279257
280258 duckdb_data_chunk chunk = reinterpret_cast <duckdb_data_chunk>(&output);
281259 duckdb_vx_error error_out = nullptr ;
282- bind.info .vtab .function (ffi_ctx, ffi_bind, ffi_global, ffi_local, chunk, &error_out);
260+ bind.info .vtab .function (ffi_global, ffi_local, chunk, &error_out);
283261 if (error_out) {
284262 throw InvalidInputException (IntoErrString (error_out));
285263 }
@@ -366,11 +344,10 @@ TablePartitionInfo get_partition_info(ClientContext &, TableFunctionPartitionInp
366344 */
367345OperatorPartitionData get_partition_data (ClientContext &, TableFunctionGetPartitionInput &input) {
368346 auto &bind = input.bind_data ->Cast <CTableBindData>();
369- void *const ffi_bind = bind.ffi_data ->DataPtr ();
370347 void *const ffi_global = input.global_state ->Cast <CTableGlobalData>().ffi_data ->DataPtr ();
371348 void *const ffi_local = input.local_state ->Cast <CTableLocalData>().ffi_data ->DataPtr ();
372349 duckdb_vx_partition_data partition_data;
373- bind.info .vtab .get_partition_data (ffi_bind, ffi_global, ffi_local, &partition_data);
350+ bind.info .vtab .get_partition_data (ffi_global, ffi_local, &partition_data);
374351
375352 OperatorPartitionData out (partition_data.partition_index );
376353
@@ -410,7 +387,7 @@ extern "C" duckdb_state duckdb_vx_tfunc_register(duckdb_database ffi_db, const d
410387
411388 const DatabaseWrapper &wrapper = *reinterpret_cast <DatabaseWrapper *>(ffi_db);
412389 DatabaseInstance &db = *wrapper.database ->instance ;
413- TableFunction tf (vtab->name , {}, c_function , c_bind, c_init_global, c_init_local );
390+ TableFunction tf (vtab->name , {}, function , c_bind, c_init_global, init_local );
414391
415392 tf.projection_pushdown = true ;
416393 tf.filter_pushdown = true ;
@@ -422,8 +399,8 @@ extern "C" duckdb_state duckdb_vx_tfunc_register(duckdb_database ffi_db, const d
422399 tf.get_partition_info = get_partition_info;
423400 tf.get_partition_data = get_partition_data;
424401 tf.to_string = c_to_string;
425- tf.table_scan_progress = c_table_scan_progress ;
426- tf.statistics = c_statistics ;
402+ tf.table_scan_progress = table_scan_progress ;
403+ tf.statistics = statistics ;
427404
428405 tf.late_materialization = true ;
429406 // Columns that uniquely identify a row for deferred re-fetch in a multi
0 commit comments