Repository navigation
DuckDB, AuroraDB and CockroachDB | New SQLite Family Athola, Turso | NativeAOT #1384
mikependon
announced in
Announcements
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
RepoDB Core and Bulk Operations – Release Notes
Covers: everything shipped since the last minor release, v1.16.0 (2026-09-09), up to 2026-10-23.
Families: RepoDb (Core), the
RepoDb.<Provider>packages and theRepoDb.<Provider>.BulkOperationspackages.Highlights
ExecuteQueryFirst/ExecuteQuerySingle(and their async forms) in the connection extensions and in the repositories.ReplaceQueryFieldfor SQLREPLACEexpressions inside queries.BulkColumnMappingsBehavior) across all Bulk packages.IDbSetting.Provider,IsSchemaSupportedandAreIndexNamesUniquePerSchemaadded to the setting contract.BulkUpdateAsyncwith identity keys,Schema.Tablename quoting, conditional expression evaluation,DbField.GetHashCode.New providers and packages
RepoDb.DuckDbandRepoDb.DuckDb.BulkOperationsUseDuckDb()overload that acceptsaddDefaultHandler, and a full integration suite (#1348, #1367).RepoDb.CockroachDbandRepoDb.CockroachDb.BulkOperationsCockroachDb(#1314).RepoDb.AuroraDb.MySqlConnectorand.BulkOperationsRepoDb.AuroraDb.PostgreSqland.BulkOperationsRepoDb.Sqlite.TursoRepoDb.Sqlite.AhtolaThe SQLite variants were restructured (#1377) so
RepoDb.Sqlite.Microsoft,RepoDb.Sqlite.TursoandRepoDb.Sqlite.Ahtolashare one structure. Copyright attributions for Ahtola and Turso were updated (#1373).New features
Core
ExecuteQueryFirstandExecuteQuerySingle(Enhancement: Support ExecuteSingle and ExecuteSingleAsync Methods #1280, Enhancement: Support ExecuteFirst and ExecuteFirstAsync Methods #1281, Enhancement: Introduce the newQueryFirstandQueryFirstAsyncoperations to RepoDB. #1338, Enhancement: Introduce the newQuerySingleandQuerySingleAsyncoperations to RepoDB. #1339): available on the connection extensions,BaseRepositoryandDbRepository, with test suites for every provider.ReplaceQueryField: lets a query use the SQLREPLACEfunction on a field (contributed by Paolo Bassi, Add ReplaceQueryField for SQL REPLACE in queries #1332).LiteralQueryField: moved to the write path and credited to its original author.IDbSettingadditionsProvider(Capability: Schema Mover #1366): the provider code of the setting (MSSQL,MYSQL,MYSQLC,MARIADB,AURORAMYSQL,PGSQL,ORACLE,DB2,DUCKDB,FIREBIRD,CLICKHOUSE,HANA,VERTICA,MSSQLITE,AHTOLA,TURSO).BaseDbSettingexposes it with a protected setter and includes it in the hash code. Every*DbHelpernow reads the provider it stamps onDbFieldfrom the setting instead of using a literal.IsSchemaSupported.AreIndexNamesUniquePerSchema, moved into the*DbSettingclasses.BaseDbSettingdefaults are now passed explicitly for CockroachDB (Capability: Support CockroachDB #1314).Bulk Operations
BulkColumnMappingsBehavior) #1360):BulkColumnMappingsBehaviorand a column-mappings exception, for SQL Server, PostgreSQL and every other Bulk package, so unmapped or invalid columns fail fast instead of silently misaligning.identityBehavioradded to the DB2, MySql, MySqlConnector and Oracle Bulk packages.KeyColumnReturnBehaviorto all DB Providers #1364): integration tests for all providers, plus fixes for Vertica and Firebird.Bug fixes
#/##) (#1196)SqlServerDbHelpernow detects temp tables and reads their metadata fromtempdb. Reported by @daaleonardo.BulkUpdateAsyncintermittently failing when the key is an identity (#1351)BulkInsertandTempTable, with a dedicated test. Reported by @cajuncoding.Updatefailing with composite keys (discussion #1361)CompositeKeyTest. Raised by @bpaolo71.Schema.Tablenotation parsed asDatabase.Schema.TableStringExtensionquoting rewritten; Ahtola and SQLite helpers aligned; new quotation andDottedTableTesttests.ExpressionExtension(contributed by Benziza), withQueryGroupParseExpressionValuesTest.NullReferenceExceptioninDbField.GetHashCodeNativeAOT and trimming (contributed by Marc-André Moreau)
Core, every provider and every Bulk package now enable
IsAotCompatiblefor net8.0 and later (polyfilled attributes for netstandard2.0), with the setting centralised insrc/Directory.Build.props.Typeflows annotated withDynamicallyAccessedMembers.MakeGenericMethod/MakeGenericTypecalls removed from the expression compiler and the PostgreSQL bulk compiler.dynamicproperty handler calls removed;Activator-based connection cloning removed.TypeNameset statically.RepoDb.Telemetry.Core.decimal/DateTimeOffsetpreserved.Code quality
ConfigureAwait(false)on every await.StringComparerorStringComparisonon every string comparison.ArgumentNullExceptioninstead ofNullReferenceExceptionfor null arguments. Behaviour note: code catchingNullReferenceExceptionfor these cases should catchArgumentNullExceptioninstead.Test coverage
QueryFirst/QuerySinglesuites for every provider.KeyColumnReturnBehaviorto all DB Providers #1364).DbSettingTestfor theProviderproperty in each provider,DbHelperProviderTestin each provider's unit-test project, andDbSettingProviderTestin Core.Packaging, documentation and branding
CockroachDBadded to the README,PACKAGES.mdand the issue template.RepoDb,RepoDb.SqLiteandRepoDb.SQLite.Systemprojects were moved tosrc/Decommissionedwith history retained.Dependency updates
All external references were bumped, including:
DuckDB.NET.Data.Full1.5.6 → 1.5.6.1,Microsoft.Data.Sqlite,Microsoft.Bcl.AsyncInterfaces,System.Collections.ImmutableandSystem.Text.Json10.0.12 → 10.0.13,MySql.Data26.7.0 → 26.10.0,Oracle.ManagedDataAccess.Core23.26.301 → 23.26.400, andTurso.Data.Sqlite.Provider0.8.2 → 0.8.3.Upgrade notes
IDbSettingimplementations must now implementProvider(derive fromBaseDbSettingto inherit it). Custom providers should set it to the same code theirIDbHelperuses; Core depends on"PGSQL"for PostgreSQL-family behaviour.NullReferenceExceptionhandling withArgumentNullExceptionwhere you relied on the old behaviour.BulkColumnMappingsBehavioroption on your Bulk calls.Contributors and credits
Thank you to everyone who made this release possible.
ReplaceQueryField(#1332) and the composite-key discussion (#1361) that led to the MySQL update fix.LiteralQueryField.BulkUpdateAsyncidentity issue (#1351).Also thanks to the authors of the underlying libraries, including the Turso and Ahtola .NET authors, and to everyone who filed issues, discussions and feedback. Some commits were prepared with the assistance of AI coding tools (Claude and GitHub Copilot) and reviewed by the maintainer.
What's Changed
QueryFirstandQueryFirstAsyncoperations to RepoDB. #1338 by @mikependon in Initial commit to support the QueryFirst. Ref: #1338 #1340QuerySingleandQuerySingleAsyncoperations to RepoDB. #1339 by @mikependon in Initial commit to support the QuerySingle. Ref: #1339 #1341BulkUpdateAsyncwith identity pkey can silently update wrong rows unlessKeepIdentityand explicit qualifier are used. #1351 by @mikependon in Fixed the intermittent issues of BulkUpdateAsync if the ID is an identity. Ref: #1351 #1352BulkColumnMappingsBehaviorsetting (Automatic, Strict, StrictBypass) to all the bulk-operations packages by @mikependon in Add theBulkColumnMappingsBehaviorsetting (Automatic, Strict, StrictBypass) to all the bulk-operations packages #1362New Contributors
Full Changelog: v1.16.0...v1.17.0
This discussion was created from the release DuckDB, AuroraDB and CockroachDB | New SQLite Family Athola, Turso | NativeAOT.
All reactions