Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

feat: use pure-go implementation when cgo is disabled #161

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

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.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
2 participants