Add FileSystem trait and make DuckDB configurable#6564
Merged
robert3005 merged 13 commits intodevelopfrom Feb 18, 2026
Merged
Conversation
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Merging this PR will not alter performance
Comparing Footnotes
|
4ad261b to
25da23f
Compare
gatesn
commented
Feb 17, 2026
|
|
||
| // A single function for configuring the DuckDB table function vtable. | ||
| duckdb_state duckdb_vx_copy_func_register_vtab_one(duckdb_connection ffi_conn); | ||
| duckdb_state duckdb_vx_copy_func_register_vtab_one(duckdb_database ffi_db); |
Contributor
Author
There was a problem hiding this comment.
We now register against a database, rather than a specific connection (from which we extracted the DB anyways...)
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Contributor
Polar Signals Profiling ResultsLatest Run
Previous Runs (3)
Powered by Polar Signals Cloud |
Contributor
Benchmarks: PolarSignals ProfilingSummary
Detailed Results Table
|
Contributor
Benchmarks: TPC-H SF=1 on NVMESummary
Detailed Results Table
|
Contributor
Benchmarks: FineWeb NVMeSummary
Detailed Results Table
|
Contributor
Benchmarks: TPC-H SF=1 on S3Summary
Detailed Results Table
|
Contributor
Benchmarks: FineWeb S3Summary
Detailed Results Table
|
Contributor
Benchmarks: TPC-DS SF=1 on NVMESummary
Detailed Results Table
|
Contributor
Benchmarks: TPC-H SF=10 on NVMESummary
Detailed Results Table
|
Contributor
Benchmarks: TPC-H SF=10 on S3Summary
Detailed Results Table
|
Contributor
Benchmarks: Statistical and Population GeneticsSummary
Detailed Results Table
|
Contributor
Benchmarks: Clickbench on NVMESummary
Detailed Results Table
|
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
AdamGS
reviewed
Feb 18, 2026
Signed-off-by: Nicholas Gates <nick@nickgates.com>
Signed-off-by: Nicholas Gates <nick@nickgates.com>
0ax1
reviewed
Feb 18, 2026
Signed-off-by: Nicholas Gates <nick@nickgates.com>
0ax1
approved these changes
Feb 18, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
We switched over to using DuckDB's own file system for I/O. For some reason we have really binary performance benchmarks, either the same performance as before, or really really slow. We are going to investigate, but in the meantime this change abstracts the I/O behind a file system and allows us to configure whether to use Vortex I/O or DuckDB I/O. This abstraction was planned and built in #6391 anyway, so just making use of it a little sooner.
As part of this change, we have a
FileSystem::list -> StreamAPI. We used to use the async-compat crate to provide Tokio support within DuckDB, but that crate doesn't support streams. This PR inlines the core piece of logic from that crate and provides wrappers for I/O.To summarise: