Skip to content

Conversation

aymanbagabas
Copy link

This implements a pure-go alternative driver whenever CGO_ENABLED=0

Related: #93
Fixes: #35
Fixes: #72
Fixes: #77
Fixes: #160

  • Do only one thing
  • Non breaking API changes
  • Tested

What did this pull request do?

This PR uses a pure-go implementation of SQLite using https://gitlab.com/cznic/sqlite whenever CGO_ENABLED is disabled, and uses https://github.com/mattn/go-sqlite3 when CGO is enabled.

User Case Description

As shown in #77 #72 #93 #35, sometime CGO is inconvenient.

This implements a pure-go alternative driver whenever CGO_ENABLED=0

Related: go-gorm#93
Fixes: go-gorm#35
Fixes: go-gorm#72
Fixes: go-gorm#77
Fixes: go-gorm#160
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 5, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 5, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 5, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
Format yaml using prettier

Remove go1.17 since modernc.org/sqlite requires at least go1.18
This enables running tests that require CGO like `go test -race` when
using pure-go sqlite through passing `-tags pure` build flag
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 6, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 6, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 6, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 6, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 6, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
aymanbagabas added a commit to aymanbagabas/gorm that referenced this pull request Jul 6, 2023
This tests the sqlite with/out CGO, updates the minimum tests go version
to 1.18, and adds the latest go version `^1` to the sqlite CI tests.

Related: go-gorm/sqlite#161
@ncruces
Copy link
Contributor

ncruces commented Aug 20, 2023

DSNs are different between drivers. Having code that behaves silently behaves significantly differently because the C compiler toolchain is not installed is a bad idea, IMO.

@vincentbernat
Copy link

vincentbernat commented Sep 16, 2025

In this case, an alternative would be to allow a user to select the implementation with a specific build tag (like sqlite_nocgo)? Currently, the pure fork is lagging behind and seems unmaintained.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants