sqlite3 driver for go using database/sql
Go to file
Kenneth Shaw b8936b7ad3 Adding hook to vhook to allow vtables to be modified
This commit changes the vtable 'xUpdate' goModule field to a new
'cXUpdate' callback function which in turns calls a 'goVUpdate'
callback.

This new callback allows Go defined virtual table implementations
satisfying the VTabUpdater interface (also newly defined) a way to
delete/insert/update rows in a VTab.

Additionally, an anonymous interface is used within the goVUpdate
callback looking for 'TableName() string' which, when defined on a VTab
is used to provide a better contextual error message to end users if the
VTab is read only.

Care was taken to follow existing code style/conventions for this
addition, and for backwards-compatibility with existing VTab
implementations (hence why a new interface was required).
2017-03-24 15:35:33 +07:00
_example golint 2017-03-05 22:29:09 +09:00
sqlite3_test add godoc for fixes golint 2017-03-05 00:43:26 +09:00
tool update to 2017 2017-02-16 15:56:32 +09:00
.gitignore add *.o 2016-08-11 18:43:49 +09:00
.travis.yml add test env 2017-03-05 22:20:06 +09:00
LICENSE Add LICENSE file 2014-08-18 16:52:12 +09:00
README.md add gorepocard badge 2017-03-05 21:05:35 +09:00
backup.go fix breaking compatibility. 2017-03-21 09:14:48 +09:00
backup_test.go Test the error reporting when preparing to perform a backup. 2016-09-23 08:41:32 -04:00
callback.go fix trace callback. 2016-11-08 12:19:51 +09:00
callback_test.go Move argument converters to callback.go, and optimize return value handling. 2015-08-21 16:37:45 -07:00
doc.go Removing an unused C import to allow for "buildable" go files. Fixes https://github.com/mattn/go-sqlite3/issues/374 2017-01-18 17:14:12 +01:00
error.go fix breaking compatibility. 2017-03-21 09:14:48 +09:00
error_test.go fix breaking compatibility. 2017-03-21 09:14:48 +09:00
sqlite3-binding.c workaround for a compiler 2017-03-01 16:44:54 +09:00
sqlite3-binding.h upgrade to sqlite-amalgamation-3170000 2017-02-16 15:59:24 +09:00
sqlite3.go Removed ambitious conn.Close() 2017-03-24 01:06:55 +01:00
sqlite3_context.go rename 2017-03-05 21:40:25 +09:00
sqlite3_fts3_test.go FTS4 is not available on Trusty 2016-04-23 00:00:49 +08:00
sqlite3_fts5.go Conditional build for the FTS5 Extension 2016-03-07 16:20:02 +09:00
sqlite3_go18.go temporary fix BeginTx 2016-12-15 13:15:57 +09:00
sqlite3_go18_test.go fix tests 2016-12-09 12:58:20 +09:00
sqlite3_icu.go remove trailing space 2016-11-05 00:28:43 +09:00
sqlite3_json1.go Conditional build for the JSON1 Extension 2016-02-28 09:53:54 +01:00
sqlite3_libsqlite3.go Disable LoadExtension when omit_load_extension is specified 2016-04-18 20:21:32 +08:00
sqlite3_load_extension.go disable extension when loading failed 2017-03-21 00:47:07 +09:00
sqlite3_omit_load_extension.go Disable LoadExtension when omit_load_extension is specified 2016-04-18 19:58:56 +08:00
sqlite3_other.go remove -lpthread. related issue #201 2015-04-28 08:58:25 +09:00
sqlite3_test.go not use underscore 2017-03-05 00:46:52 +09:00
sqlite3_trace.go rename 2017-03-05 22:25:33 +09:00
sqlite3_trace_test.go fix test 2017-01-19 02:20:42 +09:00
sqlite3_type.go go vet && golint 2016-11-06 13:16:38 +09:00
sqlite3_vtable.go Adding hook to vhook to allow vtables to be modified 2017-03-24 15:35:33 +07:00
sqlite3_vtable_test.go fix test 2017-03-05 23:02:06 +09:00
sqlite3_windows.go Fix compile for old mingw32 2015-12-30 00:19:24 +02:00
sqlite3ext.h upgrade amalgamation code 2016-11-11 09:01:23 +09:00

README.md

go-sqlite3

GoDoc Reference Build Status Coverage Status Go Report Card

Description

sqlite3 driver conforming to the built-in database/sql interface

Installation

This package can be installed with the go get command:

go get github.com/mattn/go-sqlite3

go-sqlite3 is cgo package. If you want to build your app using go-sqlite3, you need gcc. However, if you install go-sqlite3 with go install github.com/mattn/go-sqlite3, you don't need gcc to build your app anymore.

Documentation

API documentation can be found here: http://godoc.org/github.com/mattn/go-sqlite3

Examples can be found under the ./_example directory

FAQ

  • Want to build go-sqlite3 with libsqlite3 on my linux.

    Use go build --tags "libsqlite3 linux"

  • Want to build go-sqlite3 with libsqlite3 on OS X.

    Install sqlite3 from homebrew: brew install sqlite3

    Use go build --tags "libsqlite3 darwin"

  • Want to build go-sqlite3 with icu extension.

    Use go build --tags "icu"

    Available extensions: json1, fts5, icu

  • Can't build go-sqlite3 on windows 64bit.

    Probably, you are using go 1.0, go1.0 has a problem when it comes to compiling/linking on windows 64bit. See: #27

  • Getting insert error while query is opened.

    You can pass some arguments into the connection string, for example, a URI. See: #39

  • Do you want to cross compile? mingw on Linux or Mac?

    See: #106 See also: http://www.limitlessfx.com/cross-compile-golang-app-for-windows-from-linux.html

  • Want to get time.Time with current locale

    Use loc=auto in SQLite3 filename schema like file:foo.db?loc=auto.

  • Can use this in multiple routines concurrently?

    Yes for readonly. But, No for writable. See #50, #51, #209.

  • Why is it racy if I use a sql.Open("sqlite", ":memory:") database?

    Each connection to :memory: opens a brand new in-memory sql database, so if the stdlib's sql engine happens to open another connection and you've only specified ":memory:", that connection will see a brand new database. A workaround is to use "file::memory:?mode=memory&cache=shared". Every connection to this string will point to the same in-memory database. See #204 for more info.

License

MIT: http://mattn.mit-license.org/2012

sqlite3-binding.c, sqlite3-binding.h, sqlite3ext.h

The -binding suffix was added to avoid build failures under gccgo.

In this repository, those files are an amalgamation of code that was copied from SQLite3. The license of that code is the same as the license of SQLite3.

Author

Yasuhiro Matsumoto (a.k.a mattn)