DuckDB
This page contains the latest information of the releases of RepoDb.DuckDb library.
View the NuGet package here or download it directly here.
RepoDb.DuckDb (v0.0.1-alpha3) - Preview
Released: October 9, 2026
- Enhancement: Made the package NativeAOT and trimming compatible (
IsAotCompatible), replacing the reflection-based anddynamiccode paths with AOT-safe equivalents. - Referenced the
RepoDbpackagev1.17.0-beta1.
RepoDb.DuckDb (v0.0.1-alpha2) - Preview
Released: TBA
New
- Unsealed
DuckDbDbSettingand added aUseDuckDb(GlobalConfiguration, DuckDbDbSetting)overload that accepts any subclass, always applying the given setting even if already initialized — this lets DuckDbBulkOperationsDbSetting (shipped by RepoDb.DuckDb.BulkOperations) be registered the same way. #1360 - Referenced the
RepoDbpackagev1.17.0-alpha3.
RepoDb.DuckDb (v0.0.1-alpha1) - Preview
Released: September 25, 2026
New
First (alpha) release of the dedicated DuckDB provider for RepoDB, built on top of DuckDB.NET. #1348
What’s included
DuckDbBootstrap/DuckDbConfiguration.UseDuckDb()— initializes RepoDB for use withDuckDBConnection(GlobalConfiguration.Setup().UseDuckDb()), mapping theDuckDbDbSetting,DuckDbDbHelper, andDuckDbStatementBuilderto everyDuckDBConnection. TheUseDuckDb(addDefaultHandlers)overload controls whether DuckDbStreamToByteArrayPropertyHandler (byte[]) and DuckDbTimeOnlyToTimeSpanPropertyHandler (TimeSpan) are registered as default, type-level handlers (defaults totrue); passfalseto register your own instead.DuckDbDbSetting— DuckDB-specific behavior:"-quoted identifiers,$parameter prefix/placeholder sigil,maindefault schema, no table hints, no nativeUPSERTkeyword (Merge is built viaINSERT ... ON CONFLICT DO UPDATEinstead), and multi-statement command text support (IsMultiStatementExecutable = true,MultiStatementSeparator = ";").DuckDbStatementBuilder— generates DuckDB-flavored SQL for every operation:LIMIT/LIMIT ... OFFSETpaging for BatchQuery/skip-take queries and top-N Query,INSERT ... ON CONFLICT DO UPDATEfor Merge/MergeAll, and identity/primary-key retrieval via aRETURNINGclause appended to Insert/InsertAll/Merge/MergeAll — DuckDB has no session-scoped “last identity” function.DuckDbDbHelper— schema/type discovery (GetFields/GetFieldsAsync) sourced frominformation_schema.columns, joined againstduckdb_constraints()for primary-key detection and a sequence-backedDEFAULT(nextval(...)) for identity detection (DuckDB has no nativeAUTO_INCREMENT). It also strips the$sigil from every ad-hoc parameter’s name after creation, to match DuckDB.NET’s bare-name binding convention.- Resolver —
DuckDbTypeNameToClientTypeResolver(mapsinformation_schema.columns.data_typevalues to .NET CLR types, includingHUGEINT/UHUGEINTtoBigInteger). - Property handlers — DuckDbStreamToByteArrayPropertyHandler (
BLOB→byte[], auto-registered) and DuckDbTimeOnlyToTimeSpanPropertyHandler (TIME→TimeSpan, auto-registered), plus the manual-binding DuckDbTimeOnlyToNullableTimeSpanPropertyHandler (TimeSpan?), DuckDbDateOnlyToDateTimePropertyHandler, and DuckDbDateOnlyToNullableDateTimePropertyHandler (DATE). - Parameter attributes mirroring
DuckDBParameter, settable per entity property: SourceColumn, SourceColumnNullMapping, and SourceVersion. - Targets .NET 8, .NET 9, and .NET 10.
Known limitations (v1)
- No stored procedure support — DuckDB has no equivalent construct.
DuckDB.NET.Data.Fullonly supportsnet8.0and later — unlike most other providers in this ecosystem, there is no .NET Standard 2.0 build.
Bumps
- Referenced the
RepoDbpackagev1.17.0-alpha2. - References the
DuckDB.NET.Data.Fullpackagev1.5.5.