From 137ef5a9ff8f06f9167a1aca9bafa0e8ab2e21e6 Mon Sep 17 00:00:00 2001 From: Daenney Date: Sat, 29 Jun 2024 09:35:57 +0200 Subject: [feature] Default to WASM-based SQLite driver (#3053) * [feature] Default to WASM-based SQLite driver With 0.16 out this switches our default SQLite driver to the WASM-based solution instead. So far the driver seems to perform just as well. Switching our default should result in it getting a bit more testing during the 0.17 development cycle. * add the ol' john hancock --------- Co-authored-by: tobi --- internal/db/sqlite/errors.go | 30 ++++++++++++++---------------- 1 file changed, 14 insertions(+), 16 deletions(-) (limited to 'internal/db/sqlite/errors.go') diff --git a/internal/db/sqlite/errors.go b/internal/db/sqlite/errors.go index b07b026de..f814fa8a4 100644 --- a/internal/db/sqlite/errors.go +++ b/internal/db/sqlite/errors.go @@ -15,7 +15,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -//go:build !wasmsqlite3 +//go:build !moderncsqlite3 package sqlite @@ -23,9 +23,7 @@ import ( "database/sql/driver" "fmt" - "modernc.org/sqlite" - sqlite3 "modernc.org/sqlite/lib" - + "github.com/ncruces/go-sqlite3" "github.com/superseriousbusiness/gotosocial/internal/db" ) @@ -33,30 +31,30 @@ import ( // handle conversion to any of our common db types. func processSQLiteError(err error) error { // Attempt to cast as sqlite error. - sqliteErr, ok := err.(*sqlite.Error) + sqliteErr, ok := err.(*sqlite3.Error) if !ok { return err } // Handle supplied error code: - switch sqliteErr.Code() { - case sqlite3.SQLITE_CONSTRAINT_UNIQUE, - sqlite3.SQLITE_CONSTRAINT_PRIMARYKEY: + switch sqliteErr.ExtendedCode() { + case sqlite3.CONSTRAINT_UNIQUE, + sqlite3.CONSTRAINT_PRIMARYKEY: return db.ErrAlreadyExists - // Busy should be very rare, but - // on busy tell the database to close - // the connection, re-open and re-attempt - // which should give a necessary timeout. - case sqlite3.SQLITE_BUSY, - sqlite3.SQLITE_BUSY_RECOVERY, - sqlite3.SQLITE_BUSY_SNAPSHOT: + // Busy should be very rare, but on + // busy tell the database to close the + // connection, re-open and re-attempt + // which should give necessary timeout. + case sqlite3.BUSY_RECOVERY, + sqlite3.BUSY_SNAPSHOT: return driver.ErrBadConn } // Wrap the returned error with the code and // extended code for easier debugging later. - return fmt.Errorf("%w (code=%d)", err, + return fmt.Errorf("%w (code=%d extended=%d)", err, sqliteErr.Code(), + sqliteErr.ExtendedCode(), ) } -- cgit v1.2.3