Add DuckDB support with official driver and modern stdlib #1337
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.
Based on #1077
This PR adds DuckDB database support, based on the original work in #1077, with the following updates:
Updated DuckDB driver: Replaced
github.com/marcboeker/go-duckdbwith the officialgithub.com/duckdb/duckdb-go/v2driver (the project moved to the DuckDB organization starting with v2.5.0)Standard migrations table name: Changed from
gmg_schema_migrationstoschema_migrationsto match the convention used by other database drivers.Removed deprecated dependencies:
github.com/hashicorp/go-multierrorwith stdliberrors.Join()(Go 1.20+)go.uber.org/atomicwith stdlibsync/atomicatomic.Bool.CAS()withatomic.Bool.CompareAndSwap()Align config and tests with the sqlite3 driver
DuckDB driver features:
duckdb://path/to/file.dbschema_migrations)