mirror of
https://github.com/pocket-id/pocket-id.git
synced 2026-01-09 01:17:56 -05:00
refactor: switch SQLite driver to pure-Go implementation #179
Closed
opened 2025-07-08 08:41:42 -04:00 by AtHeartEngineer
·
0 comments
No Branch/Tag Specified
main
feat/kyles-pagination-attempt
i18n_crowdin
feat/self-host-icons
feat/pagination-improvements
slog-gorm
v1.11.2
v1.11.1
v1.11.0
v1.10.0
v1.9.1
v1.9.0
v1.8.1
v1.8.0
v1.7.0
v1.6.4
v1.6.3
v1.6.2
v1.6.1
v1.6.0
v1.5.0
v1.4.1
v1.4.0
v1.3.1
v1.3.0
v1.2.0
v1.1.0
v1.0.0
v0.53.0
v0.52.0
v0.51.1
v0.51.0
v0.50.0
v0.49.0
v0.48.0
v0.47.0
v0.46.0
v0.45.0
v0.44.0
v0.43.1
v0.43.0
v0.42.1
v0.42.0
v0.41.0
v0.40.1
v0.40.0
v0.39.0
v0.38.0
v0.37.0
v0.36.0
v0.35.6
v0.35.5
v0.35.4
v0.35.3
v0.35.2
v0.35.1
v0.35.0
v0.34.0
v0.33.0
v0.32.0
v0.31.0
v0.30.0
v0.29.0
v0.28.1
v0.28.0
v0.27.2
v0.27.1
v0.27.0
v0.26.0
v0.25.1
v0.25.0
v0.24.1
v0.24.0
v0.23.0
v0.22.0
v0.21.0
v0.20.1
v0.20.0
v0.19.0
v0.18.0
v0.17.0
v0.16.0
v0.15.0
v0.14.0
v0.13.1
v0.13.0
v0.12.0
v0.11.0
v0.10.0
v0.9.0
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.0
v0.5.3
v0.5.2
v0.5.1
v0.5.0
v0.4.1
v0.4.0
v0.3.1
v0.3.0
v0.2.1
v0.2.0
v0.1.3
v0.1.2
v0.1.1
v0.1.0
Labels
Clear labels
breaking
breaking
breaking
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
bug
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
dependencies
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
feature
go
go
javascript
javascript
javascript
javascript
javascript
javascript
needs more upvotes
needs more upvotes
needs more upvotes
needs more upvotes
needs more upvotes
needs more upvotes
open to pull requests
open to pull requests
open to pull requests
open to pull requests
open to pull requests
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Assignees
AtHeartEngineer
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github/pocket-id#179
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ItalyPaleAle on 5/14/2025
This PR changes the driver used to connect to SQLite to
github.com/glebarez/sqlite.The main difference with the previous driver (
gorm.io/driver/sqlite) is that the new one uses a pure-Go implementation of SQLite based onmodernc.org/sqlite.There are three main benefits with making this change:
The pure-Go driver is slightly slower, more noticeable with very large databases, larger than Pocket ID users are expected to have.
The
modernc.org/sqlitepackage is built by "transpiling" the C library into Go code, and they have extensive test suites to ensure the behavior is consistent. The same package is used by many apps successfully in production, so stability shouldn't be a concern.The "biggest" user-facing change is that
github.com/mattn/go-sqlite3supports some additional args in the query string which need to be converted to PRAGMA statements with themodernc.org/sqlitepackage. To avoid confusing users (and potentially introducing yet another breaking change), I've added a function that converts the common query string args into the format supported by the modernc package. Most users would not need to worry about it, as wery few should change the DB connection string.