mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Update vendor/go-sqlite3 (#5133)
This commit is contained in:
		
							
								
								
									
										4
									
								
								Gopkg.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										4
									
								
								Gopkg.lock
									
									
									
										generated
									
									
									
								
							| @@ -566,11 +566,11 @@ | |||||||
|   version = "v1.46.1" |   version = "v1.46.1" | ||||||
|  |  | ||||||
| [[projects]] | [[projects]] | ||||||
|   digest = "1:3ef954101983406a71171c4dc816a73e01bb3de608b3dd063627aa67a459f3e3" |   digest = "1:9996f2363985103284c59b3d0ca5be58deb1b0db22144bb2fcfa0b4e16f0e61b" | ||||||
|   name = "github.com/mattn/go-sqlite3" |   name = "github.com/mattn/go-sqlite3" | ||||||
|   packages = ["."] |   packages = ["."] | ||||||
|   pruneopts = "NUT" |   pruneopts = "NUT" | ||||||
|   revision = "acfa60124032040b9f5a9406f5a772ee16fe845e" |   revision = "f3aa5ce89995fab8c7777f7821f689d9ac81c80f" | ||||||
|  |  | ||||||
| [[projects]] | [[projects]] | ||||||
|   branch = "master" |   branch = "master" | ||||||
|   | |||||||
| @@ -39,6 +39,10 @@ ignored = ["google.golang.org/appengine*"] | |||||||
|   name = "github.com/go-sql-driver/mysql" |   name = "github.com/go-sql-driver/mysql" | ||||||
|   revision = "d523deb1b23d913de5bdada721a6071e71283618" |   revision = "d523deb1b23d913de5bdada721a6071e71283618" | ||||||
|  |  | ||||||
|  | [[override]] | ||||||
|  |   name = "github.com/mattn/go-sqlite3" | ||||||
|  |   revision = "f3aa5ce89995fab8c7777f7821f689d9ac81c80f" | ||||||
|  |  | ||||||
| [[override]] | [[override]] | ||||||
|   name = "github.com/gorilla/mux" |   name = "github.com/gorilla/mux" | ||||||
|   revision = "757bef944d0f21880861c2dd9c871ca543023cba" |   revision = "757bef944d0f21880861c2dd9c871ca543023cba" | ||||||
|   | |||||||
							
								
								
									
										40
									
								
								vendor/github.com/mattn/go-sqlite3/callback.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								vendor/github.com/mattn/go-sqlite3/callback.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -53,6 +53,36 @@ func doneTrampoline(ctx *C.sqlite3_context) { | |||||||
| 	ai.Done(ctx) | 	ai.Done(ctx) | ||||||
| } | } | ||||||
|  |  | ||||||
|  | //export compareTrampoline | ||||||
|  | func compareTrampoline(handlePtr uintptr, la C.int, a *C.char, lb C.int, b *C.char) C.int { | ||||||
|  | 	cmp := lookupHandle(handlePtr).(func(string, string) int) | ||||||
|  | 	return C.int(cmp(C.GoStringN(a, la), C.GoStringN(b, lb))) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //export commitHookTrampoline | ||||||
|  | func commitHookTrampoline(handle uintptr) int { | ||||||
|  | 	callback := lookupHandle(handle).(func() int) | ||||||
|  | 	return callback() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //export rollbackHookTrampoline | ||||||
|  | func rollbackHookTrampoline(handle uintptr) { | ||||||
|  | 	callback := lookupHandle(handle).(func()) | ||||||
|  | 	callback() | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //export updateHookTrampoline | ||||||
|  | func updateHookTrampoline(handle uintptr, op int, db *C.char, table *C.char, rowid int64) { | ||||||
|  | 	callback := lookupHandle(handle).(func(int, string, string, int64)) | ||||||
|  | 	callback(op, C.GoString(db), C.GoString(table), rowid) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //export authorizerTrampoline | ||||||
|  | func authorizerTrampoline(handle uintptr, op int, arg1 *C.char, arg2 *C.char, arg3 *C.char) int { | ||||||
|  | 	callback := lookupHandle(handle).(func(int, string, string, string) int) | ||||||
|  | 	return callback(op, C.GoString(arg1), C.GoString(arg2), C.GoString(arg3)) | ||||||
|  | } | ||||||
|  |  | ||||||
| // Use handles to avoid passing Go pointers to C. | // Use handles to avoid passing Go pointers to C. | ||||||
|  |  | ||||||
| type handleVal struct { | type handleVal struct { | ||||||
| @@ -307,8 +337,18 @@ func callbackRetText(ctx *C.sqlite3_context, v reflect.Value) error { | |||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func callbackRetNil(ctx *C.sqlite3_context, v reflect.Value) error { | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
| func callbackRet(typ reflect.Type) (callbackRetConverter, error) { | func callbackRet(typ reflect.Type) (callbackRetConverter, error) { | ||||||
| 	switch typ.Kind() { | 	switch typ.Kind() { | ||||||
|  | 	case reflect.Interface: | ||||||
|  | 		errorInterface := reflect.TypeOf((*error)(nil)).Elem() | ||||||
|  | 		if typ.Implements(errorInterface) { | ||||||
|  | 			return callbackRetNil, nil | ||||||
|  | 		} | ||||||
|  | 		fallthrough | ||||||
| 	case reflect.Slice: | 	case reflect.Slice: | ||||||
| 		if typ.Elem().Kind() != reflect.Uint8 { | 		if typ.Elem().Kind() != reflect.Uint8 { | ||||||
| 			return nil, errors.New("the only supported slice type is []byte") | 			return nil, errors.New("the only supported slice type is []byte") | ||||||
|   | |||||||
							
								
								
									
										46171
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										46171
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3-binding.c
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1877
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1877
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3-binding.h
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										1210
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1210
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										120
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										120
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_func_crypt.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,120 @@ | |||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"crypto/sha1" | ||||||
|  | 	"crypto/sha256" | ||||||
|  | 	"crypto/sha512" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // This file provides several different implementations for the | ||||||
|  | // default embedded sqlite_crypt function. | ||||||
|  | // This function is uses a ceasar-cypher by default | ||||||
|  | // and is used within the UserAuthentication module to encode | ||||||
|  | // the password. | ||||||
|  | // | ||||||
|  | // The provided functions can be used as an overload to the sqlite_crypt | ||||||
|  | // function through the use of the RegisterFunc on the connection. | ||||||
|  | // | ||||||
|  | // Because the functions can serv a purpose to an end-user | ||||||
|  | // without using the UserAuthentication module | ||||||
|  | // the functions are default compiled in. | ||||||
|  | // | ||||||
|  | // From SQLITE3 - user-auth.txt | ||||||
|  | // The sqlite_user.pw field is encoded by a built-in SQL function | ||||||
|  | // "sqlite_crypt(X,Y)".  The two arguments are both BLOBs.  The first argument | ||||||
|  | // is the plaintext password supplied to the sqlite3_user_authenticate() | ||||||
|  | // interface.  The second argument is the sqlite_user.pw value and is supplied | ||||||
|  | // so that the function can extract the "salt" used by the password encoder. | ||||||
|  | // The result of sqlite_crypt(X,Y) is another blob which is the value that | ||||||
|  | // ends up being stored in sqlite_user.pw.  To verify credentials X supplied | ||||||
|  | // by the sqlite3_user_authenticate() routine, SQLite runs: | ||||||
|  | // | ||||||
|  | //     sqlite_user.pw == sqlite_crypt(X, sqlite_user.pw) | ||||||
|  | // | ||||||
|  | // To compute an appropriate sqlite_user.pw value from a new or modified | ||||||
|  | // password X, sqlite_crypt(X,NULL) is run.  A new random salt is selected | ||||||
|  | // when the second argument is NULL. | ||||||
|  | // | ||||||
|  | // The built-in version of of sqlite_crypt() uses a simple Ceasar-cypher | ||||||
|  | // which prevents passwords from being revealed by searching the raw database | ||||||
|  | // for ASCII text, but is otherwise trivally broken.  For better password | ||||||
|  | // security, the database should be encrypted using the SQLite Encryption | ||||||
|  | // Extension or similar technology.  Or, the application can use the | ||||||
|  | // sqlite3_create_function() interface to provide an alternative | ||||||
|  | // implementation of sqlite_crypt() that computes a stronger password hash, | ||||||
|  | // perhaps using a cryptographic hash function like SHA1. | ||||||
|  |  | ||||||
|  | // CryptEncoderSHA1 encodes a password with SHA1 | ||||||
|  | func CryptEncoderSHA1(pass []byte, hash interface{}) []byte { | ||||||
|  | 	h := sha1.Sum(pass) | ||||||
|  | 	return h[:] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CryptEncoderSSHA1 encodes a password with SHA1 with the | ||||||
|  | // configured salt. | ||||||
|  | func CryptEncoderSSHA1(salt string) func(pass []byte, hash interface{}) []byte { | ||||||
|  | 	return func(pass []byte, hash interface{}) []byte { | ||||||
|  | 		s := []byte(salt) | ||||||
|  | 		p := append(pass, s...) | ||||||
|  | 		h := sha1.Sum(p) | ||||||
|  | 		return h[:] | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CryptEncoderSHA256 encodes a password with SHA256 | ||||||
|  | func CryptEncoderSHA256(pass []byte, hash interface{}) []byte { | ||||||
|  | 	h := sha256.Sum256(pass) | ||||||
|  | 	return h[:] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CryptEncoderSSHA256 encodes a password with SHA256 | ||||||
|  | // with the configured salt | ||||||
|  | func CryptEncoderSSHA256(salt string) func(pass []byte, hash interface{}) []byte { | ||||||
|  | 	return func(pass []byte, hash interface{}) []byte { | ||||||
|  | 		s := []byte(salt) | ||||||
|  | 		p := append(pass, s...) | ||||||
|  | 		h := sha256.Sum256(p) | ||||||
|  | 		return h[:] | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CryptEncoderSHA384 encodes a password with SHA384 | ||||||
|  | func CryptEncoderSHA384(pass []byte, hash interface{}) []byte { | ||||||
|  | 	h := sha512.Sum384(pass) | ||||||
|  | 	return h[:] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CryptEncoderSSHA384 encodes a password with SHA384 | ||||||
|  | // with the configured salt | ||||||
|  | func CryptEncoderSSHA384(salt string) func(pass []byte, hash interface{}) []byte { | ||||||
|  | 	return func(pass []byte, hash interface{}) []byte { | ||||||
|  | 		s := []byte(salt) | ||||||
|  | 		p := append(pass, s...) | ||||||
|  | 		h := sha512.Sum384(p) | ||||||
|  | 		return h[:] | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CryptEncoderSHA512 encodes a password with SHA512 | ||||||
|  | func CryptEncoderSHA512(pass []byte, hash interface{}) []byte { | ||||||
|  | 	h := sha512.Sum512(pass) | ||||||
|  | 	return h[:] | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // CryptEncoderSSHA512 encodes a password with SHA512 | ||||||
|  | // with the configured salt | ||||||
|  | func CryptEncoderSSHA512(salt string) func(pass []byte, hash interface{}) []byte { | ||||||
|  | 	return func(pass []byte, hash interface{}) []byte { | ||||||
|  | 		s := []byte(salt) | ||||||
|  | 		p := append(pass, s...) | ||||||
|  | 		h := sha512.Sum512(p) | ||||||
|  | 		return h[:] | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // EOF | ||||||
							
								
								
									
										1
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_go18.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,6 +3,7 @@ | |||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build cgo | ||||||
| // +build go1.8 | // +build go1.8 | ||||||
|  |  | ||||||
| package sqlite3 | package sqlite3 | ||||||
|   | |||||||
							
								
								
									
										3
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_libsqlite3.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
| // +build libsqlite3 | // +build libsqlite3 | ||||||
|  |  | ||||||
| package sqlite3 | package sqlite3 | ||||||
| @@ -10,5 +11,7 @@ package sqlite3 | |||||||
| #cgo CFLAGS: -DUSE_LIBSQLITE3 | #cgo CFLAGS: -DUSE_LIBSQLITE3 | ||||||
| #cgo linux LDFLAGS: -lsqlite3 | #cgo linux LDFLAGS: -lsqlite3 | ||||||
| #cgo darwin LDFLAGS: -L/usr/local/opt/sqlite/lib -lsqlite3 | #cgo darwin LDFLAGS: -L/usr/local/opt/sqlite/lib -lsqlite3 | ||||||
|  | #cgo openbsd LDFLAGS: -lsqlite3 | ||||||
|  | #cgo solaris LDFLAGS: -lsqlite3 | ||||||
| */ | */ | ||||||
| import "C" | import "C" | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_load_extension.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
| // +build !sqlite_omit_load_extension | // +build !sqlite_omit_load_extension | ||||||
|  |  | ||||||
| package sqlite3 | package sqlite3 | ||||||
|   | |||||||
| @@ -2,6 +2,7 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
|  | 
 | ||||||
| // +build sqlite_omit_load_extension | // +build sqlite_omit_load_extension | ||||||
| 
 | 
 | ||||||
| package sqlite3 | package sqlite3 | ||||||
							
								
								
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_allow_uri_authority.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_allow_uri_authority | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_ALLOW_URI_AUTHORITY | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
							
								
								
									
										16
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_app_armor.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,16 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  |  | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build !windows | ||||||
|  | // +build sqlite_app_armor | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_ENABLE_API_ARMOR | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
							
								
								
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_foreign_keys.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_foreign_keys | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_DEFAULT_FOREIGN_KEYS=1 | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
| @@ -2,7 +2,8 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
| // +build fts5 | 
 | ||||||
|  | // +build sqlite_fts5 fts5 | ||||||
| 
 | 
 | ||||||
| package sqlite3 | package sqlite3 | ||||||
| 
 | 
 | ||||||
| @@ -2,12 +2,16 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
| // +build icu | 
 | ||||||
|  | // +build sqlite_icu icu | ||||||
| 
 | 
 | ||||||
| package sqlite3 | package sqlite3 | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
| #cgo LDFLAGS: -licuuc -licui18n | #cgo LDFLAGS: -licuuc -licui18n | ||||||
| #cgo CFLAGS: -DSQLITE_ENABLE_ICU | #cgo CFLAGS: -DSQLITE_ENABLE_ICU | ||||||
|  | #cgo darwin CFLAGS: -I/usr/local/opt/icu4c/include | ||||||
|  | #cgo darwin LDFLAGS: -L/usr/local/opt/icu4c/lib | ||||||
|  | #cgo openbsd LDFLAGS: -lsqlite3 | ||||||
| */ | */ | ||||||
| import "C" | import "C" | ||||||
							
								
								
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_introspect.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  |  | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_introspect | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_INTROSPECTION_PRAGMAS | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
| @@ -2,7 +2,8 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
| // +build json1 | 
 | ||||||
|  | // +build sqlite_json sqlite_json1 json1 | ||||||
| 
 | 
 | ||||||
| package sqlite3 | package sqlite3 | ||||||
| 
 | 
 | ||||||
							
								
								
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_secure_delete | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_SECURE_DELETE=1 | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
							
								
								
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_secure_delete_fast.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_secure_delete_fast | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_SECURE_DELETE=FAST | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
							
								
								
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_stat4.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_stat4 | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_ENABLE_STAT4 | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
							
								
								
									
										85
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.c
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,85 @@ | |||||||
|  | // Copyright (C) 2018 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | #ifdef SQLITE_ENABLE_UNLOCK_NOTIFY | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <sqlite3-binding.h> | ||||||
|  |  | ||||||
|  | extern int unlock_notify_wait(sqlite3 *db); | ||||||
|  |  | ||||||
|  | int | ||||||
|  | _sqlite3_step_blocking(sqlite3_stmt *stmt) | ||||||
|  | { | ||||||
|  |   int rv; | ||||||
|  |   sqlite3* db; | ||||||
|  |  | ||||||
|  |   db = sqlite3_db_handle(stmt); | ||||||
|  |   for (;;) { | ||||||
|  |     rv = sqlite3_step(stmt); | ||||||
|  |     if (rv != SQLITE_LOCKED) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |     if (sqlite3_extended_errcode(db) != SQLITE_LOCKED_SHAREDCACHE) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |     rv = unlock_notify_wait(db); | ||||||
|  |     if (rv != SQLITE_OK) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |     sqlite3_reset(stmt); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return rv; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int | ||||||
|  | _sqlite3_step_row_blocking(sqlite3_stmt* stmt, long long* rowid, long long* changes) | ||||||
|  | { | ||||||
|  |   int rv; | ||||||
|  |   sqlite3* db; | ||||||
|  |  | ||||||
|  |   db = sqlite3_db_handle(stmt); | ||||||
|  |   for (;;) { | ||||||
|  |     rv = sqlite3_step(stmt); | ||||||
|  |     if (rv!=SQLITE_LOCKED) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |     if (sqlite3_extended_errcode(db) != SQLITE_LOCKED_SHAREDCACHE) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |     rv = unlock_notify_wait(db); | ||||||
|  |     if (rv != SQLITE_OK) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |     sqlite3_reset(stmt); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   *rowid = (long long) sqlite3_last_insert_rowid(db); | ||||||
|  |   *changes = (long long) sqlite3_changes(db); | ||||||
|  |   return rv; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | int | ||||||
|  | _sqlite3_prepare_v2_blocking(sqlite3 *db, const char *zSql, int nBytes, sqlite3_stmt **ppStmt, const char **pzTail) | ||||||
|  | { | ||||||
|  |   int rv; | ||||||
|  |  | ||||||
|  |   for (;;) { | ||||||
|  |     rv = sqlite3_prepare_v2(db, zSql, nBytes, ppStmt, pzTail); | ||||||
|  |     if (rv!=SQLITE_LOCKED) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |     if (sqlite3_extended_errcode(db) != SQLITE_LOCKED_SHAREDCACHE) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |     rv = unlock_notify_wait(db); | ||||||
|  |     if (rv != SQLITE_OK) { | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   return rv; | ||||||
|  | } | ||||||
|  | #endif | ||||||
							
								
								
									
										92
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										92
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_unlock_notify.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,92 @@ | |||||||
|  | // Copyright (C) 2018 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build cgo | ||||||
|  | // +build sqlite_unlock_notify | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_ENABLE_UNLOCK_NOTIFY | ||||||
|  |  | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <sqlite3-binding.h> | ||||||
|  |  | ||||||
|  | extern void unlock_notify_callback(void *arg, int argc); | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
|  | import ( | ||||||
|  | 	"fmt" | ||||||
|  | 	"sync" | ||||||
|  | 	"unsafe" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | type unlock_notify_table struct { | ||||||
|  | 	sync.Mutex | ||||||
|  | 	seqnum uint | ||||||
|  | 	table  map[uint]chan struct{} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | var unt unlock_notify_table = unlock_notify_table{table: make(map[uint]chan struct{})} | ||||||
|  |  | ||||||
|  | func (t *unlock_notify_table) add(c chan struct{}) uint { | ||||||
|  | 	t.Lock() | ||||||
|  | 	defer t.Unlock() | ||||||
|  | 	h := t.seqnum | ||||||
|  | 	t.table[h] = c | ||||||
|  | 	t.seqnum++ | ||||||
|  | 	return h | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (t *unlock_notify_table) remove(h uint) { | ||||||
|  | 	t.Lock() | ||||||
|  | 	defer t.Unlock() | ||||||
|  | 	delete(t.table, h) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (t *unlock_notify_table) get(h uint) chan struct{} { | ||||||
|  | 	t.Lock() | ||||||
|  | 	defer t.Unlock() | ||||||
|  | 	c, ok := t.table[h] | ||||||
|  | 	if !ok { | ||||||
|  | 		panic(fmt.Sprintf("Non-existent key for unlcok-notify channel: %d", h)) | ||||||
|  | 	} | ||||||
|  | 	return c | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //export unlock_notify_callback | ||||||
|  | func unlock_notify_callback(argv unsafe.Pointer, argc C.int) { | ||||||
|  | 	for i := 0; i < int(argc); i++ { | ||||||
|  | 		parg := ((*(*[1 << 30]*[1]uint)(argv))[i]) | ||||||
|  | 		arg := *parg | ||||||
|  | 		h := arg[0] | ||||||
|  | 		c := unt.get(h) | ||||||
|  | 		c <- struct{}{} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | //export unlock_notify_wait | ||||||
|  | func unlock_notify_wait(db *C.sqlite3) C.int { | ||||||
|  | 	// It has to be a bufferred channel to not block in sqlite_unlock_notify | ||||||
|  | 	// as sqlite_unlock_notify could invoke the callback before it returns. | ||||||
|  | 	c := make(chan struct{}, 1) | ||||||
|  | 	defer close(c) | ||||||
|  |  | ||||||
|  | 	h := unt.add(c) | ||||||
|  | 	defer unt.remove(h) | ||||||
|  |  | ||||||
|  | 	pargv := C.malloc(C.sizeof_uint) | ||||||
|  | 	defer C.free(pargv) | ||||||
|  |  | ||||||
|  | 	argv := (*[1]uint)(pargv) | ||||||
|  | 	argv[0] = h | ||||||
|  | 	if rv := C.sqlite3_unlock_notify(db, (*[0]byte)(C.unlock_notify_callback), unsafe.Pointer(pargv)); rv != C.SQLITE_OK { | ||||||
|  | 		return rv | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	<-c | ||||||
|  |  | ||||||
|  | 	return C.SQLITE_OK | ||||||
|  | } | ||||||
							
								
								
									
										289
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										289
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,289 @@ | |||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_userauth | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_USER_AUTHENTICATION | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | #ifndef USE_LIBSQLITE3 | ||||||
|  | #include <sqlite3-binding.h> | ||||||
|  | #else | ||||||
|  | #include <sqlite3.h> | ||||||
|  | #endif | ||||||
|  | #include <stdlib.h> | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | _sqlite3_user_authenticate(sqlite3* db, const char* zUsername, const char* aPW, int nPW) | ||||||
|  | { | ||||||
|  |   return sqlite3_user_authenticate(db, zUsername, aPW, nPW); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | _sqlite3_user_add(sqlite3* db, const char* zUsername, const char* aPW, int nPW, int isAdmin) | ||||||
|  | { | ||||||
|  |   return sqlite3_user_add(db, zUsername, aPW, nPW, isAdmin); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | _sqlite3_user_change(sqlite3* db, const char* zUsername, const char* aPW, int nPW, int isAdmin) | ||||||
|  | { | ||||||
|  |   return sqlite3_user_change(db, zUsername, aPW, nPW, isAdmin); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | _sqlite3_user_delete(sqlite3* db, const char* zUsername) | ||||||
|  | { | ||||||
|  |   return sqlite3_user_delete(db, zUsername); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | static int | ||||||
|  | _sqlite3_auth_enabled(sqlite3* db) | ||||||
|  | { | ||||||
|  | 	int exists = -1; | ||||||
|  |  | ||||||
|  | 	sqlite3_stmt *stmt; | ||||||
|  | 	sqlite3_prepare_v2(db, "select count(type) from sqlite_master WHERE type='table' and name='sqlite_user';", -1, &stmt, NULL); | ||||||
|  |  | ||||||
|  | 	while ( sqlite3_step(stmt) == SQLITE_ROW) { | ||||||
|  | 		exists = sqlite3_column_int(stmt, 0); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	sqlite3_finalize(stmt); | ||||||
|  |  | ||||||
|  | 	return exists; | ||||||
|  | } | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
|  | import ( | ||||||
|  | 	"errors" | ||||||
|  | 	"unsafe" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | const ( | ||||||
|  | 	SQLITE_AUTH = C.SQLITE_AUTH | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | var ( | ||||||
|  | 	ErrUnauthorized  = errors.New("SQLITE_AUTH: Unauthorized") | ||||||
|  | 	ErrAdminRequired = errors.New("SQLITE_AUTH: Unauthorized; Admin Privileges Required") | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // Authenticate will perform an authentication of the provided username | ||||||
|  | // and password against the database. | ||||||
|  | // | ||||||
|  | // If a database contains the SQLITE_USER table, then the | ||||||
|  | // call to Authenticate must be invoked with an | ||||||
|  | // appropriate username and password prior to enable read and write | ||||||
|  | //access to the database. | ||||||
|  | // | ||||||
|  | // Return SQLITE_OK on success or SQLITE_ERROR if the username/password | ||||||
|  | // combination is incorrect or unknown. | ||||||
|  | // | ||||||
|  | // If the SQLITE_USER table is not present in the database file, then | ||||||
|  | // this interface is a harmless no-op returnning SQLITE_OK. | ||||||
|  | func (c *SQLiteConn) Authenticate(username, password string) error { | ||||||
|  | 	rv := c.authenticate(username, password) | ||||||
|  | 	switch rv { | ||||||
|  | 	case C.SQLITE_ERROR, C.SQLITE_AUTH: | ||||||
|  | 		return ErrUnauthorized | ||||||
|  | 	case C.SQLITE_OK: | ||||||
|  | 		return nil | ||||||
|  | 	default: | ||||||
|  | 		return c.lastError() | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authenticate provides the actual authentication to SQLite. | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	C.SQLITE_OK (0) | ||||||
|  | //	C.SQLITE_ERROR (1) | ||||||
|  | //  C.SQLITE_AUTH (23) | ||||||
|  | func (c *SQLiteConn) authenticate(username, password string) int { | ||||||
|  | 	// Allocate C Variables | ||||||
|  | 	cuser := C.CString(username) | ||||||
|  | 	cpass := C.CString(password) | ||||||
|  |  | ||||||
|  | 	// Free C Variables | ||||||
|  | 	defer func() { | ||||||
|  | 		C.free(unsafe.Pointer(cuser)) | ||||||
|  | 		C.free(unsafe.Pointer(cpass)) | ||||||
|  | 	}() | ||||||
|  |  | ||||||
|  | 	return int(C._sqlite3_user_authenticate(c.db, cuser, cpass, C.int(len(password)))) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AuthUserAdd can be used (by an admin user only) | ||||||
|  | // to create a new user. When called on a no-authentication-required | ||||||
|  | // database, this routine converts the database into an authentication- | ||||||
|  | // required database, automatically makes the added user an | ||||||
|  | // administrator, and logs in the current connection as that user. | ||||||
|  | // The AuthUserAdd only works for the "main" database, not | ||||||
|  | // for any ATTACH-ed databases. Any call to AuthUserAdd by a | ||||||
|  | // non-admin user results in an error. | ||||||
|  | func (c *SQLiteConn) AuthUserAdd(username, password string, admin bool) error { | ||||||
|  | 	isAdmin := 0 | ||||||
|  | 	if admin { | ||||||
|  | 		isAdmin = 1 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	rv := c.authUserAdd(username, password, isAdmin) | ||||||
|  | 	switch rv { | ||||||
|  | 	case C.SQLITE_ERROR, C.SQLITE_AUTH: | ||||||
|  | 		return ErrAdminRequired | ||||||
|  | 	case C.SQLITE_OK: | ||||||
|  | 		return nil | ||||||
|  | 	default: | ||||||
|  | 		return c.lastError() | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authUserAdd enables the User Authentication if not enabled. | ||||||
|  | // Otherwise it will add a user. | ||||||
|  | // | ||||||
|  | // When user authentication is already enabled then this function | ||||||
|  | // can only be called by an admin. | ||||||
|  | // | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	C.SQLITE_OK (0) | ||||||
|  | //	C.SQLITE_ERROR (1) | ||||||
|  | //  C.SQLITE_AUTH (23) | ||||||
|  | func (c *SQLiteConn) authUserAdd(username, password string, admin int) int { | ||||||
|  | 	// Allocate C Variables | ||||||
|  | 	cuser := C.CString(username) | ||||||
|  | 	cpass := C.CString(password) | ||||||
|  |  | ||||||
|  | 	// Free C Variables | ||||||
|  | 	defer func() { | ||||||
|  | 		C.free(unsafe.Pointer(cuser)) | ||||||
|  | 		C.free(unsafe.Pointer(cpass)) | ||||||
|  | 	}() | ||||||
|  |  | ||||||
|  | 	return int(C._sqlite3_user_add(c.db, cuser, cpass, C.int(len(password)), C.int(admin))) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AuthUserChange can be used to change a users | ||||||
|  | // login credentials or admin privilege.  Any user can change their own | ||||||
|  | // login credentials. Only an admin user can change another users login | ||||||
|  | // credentials or admin privilege setting. No user may change their own | ||||||
|  | // admin privilege setting. | ||||||
|  | func (c *SQLiteConn) AuthUserChange(username, password string, admin bool) error { | ||||||
|  | 	isAdmin := 0 | ||||||
|  | 	if admin { | ||||||
|  | 		isAdmin = 1 | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	rv := c.authUserChange(username, password, isAdmin) | ||||||
|  | 	switch rv { | ||||||
|  | 	case C.SQLITE_ERROR, C.SQLITE_AUTH: | ||||||
|  | 		return ErrAdminRequired | ||||||
|  | 	case C.SQLITE_OK: | ||||||
|  | 		return nil | ||||||
|  | 	default: | ||||||
|  | 		return c.lastError() | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authUserChange allows to modify a user. | ||||||
|  | // Users can change their own password. | ||||||
|  | // | ||||||
|  | // Only admins can change passwords for other users | ||||||
|  | // and modify the admin flag. | ||||||
|  | // | ||||||
|  | // The admin flag of the current logged in user cannot be changed. | ||||||
|  | // THis ensures that their is always an admin. | ||||||
|  | // | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	C.SQLITE_OK (0) | ||||||
|  | //	C.SQLITE_ERROR (1) | ||||||
|  | //  C.SQLITE_AUTH (23) | ||||||
|  | func (c *SQLiteConn) authUserChange(username, password string, admin int) int { | ||||||
|  | 	// Allocate C Variables | ||||||
|  | 	cuser := C.CString(username) | ||||||
|  | 	cpass := C.CString(password) | ||||||
|  |  | ||||||
|  | 	// Free C Variables | ||||||
|  | 	defer func() { | ||||||
|  | 		C.free(unsafe.Pointer(cuser)) | ||||||
|  | 		C.free(unsafe.Pointer(cpass)) | ||||||
|  | 	}() | ||||||
|  |  | ||||||
|  | 	return int(C._sqlite3_user_change(c.db, cuser, cpass, C.int(len(password)), C.int(admin))) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AuthUserDelete can be used (by an admin user only) | ||||||
|  | // to delete a user. The currently logged-in user cannot be deleted, | ||||||
|  | // which guarantees that there is always an admin user and hence that | ||||||
|  | // the database cannot be converted into a no-authentication-required | ||||||
|  | // database. | ||||||
|  | func (c *SQLiteConn) AuthUserDelete(username string) error { | ||||||
|  | 	rv := c.authUserDelete(username) | ||||||
|  | 	switch rv { | ||||||
|  | 	case C.SQLITE_ERROR, C.SQLITE_AUTH: | ||||||
|  | 		return ErrAdminRequired | ||||||
|  | 	case C.SQLITE_OK: | ||||||
|  | 		return nil | ||||||
|  | 	default: | ||||||
|  | 		return c.lastError() | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authUserDelete can be used to delete a user. | ||||||
|  | // | ||||||
|  | // This function can only be executed by an admin. | ||||||
|  | // | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	C.SQLITE_OK (0) | ||||||
|  | //	C.SQLITE_ERROR (1) | ||||||
|  | //  C.SQLITE_AUTH (23) | ||||||
|  | func (c *SQLiteConn) authUserDelete(username string) int { | ||||||
|  | 	// Allocate C Variables | ||||||
|  | 	cuser := C.CString(username) | ||||||
|  |  | ||||||
|  | 	// Free C Variables | ||||||
|  | 	defer func() { | ||||||
|  | 		C.free(unsafe.Pointer(cuser)) | ||||||
|  | 	}() | ||||||
|  |  | ||||||
|  | 	return int(C._sqlite3_user_delete(c.db, cuser)) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AuthEnabled checks if the database is protected by user authentication | ||||||
|  | func (c *SQLiteConn) AuthEnabled() (exists bool) { | ||||||
|  | 	rv := c.authEnabled() | ||||||
|  | 	if rv == 1 { | ||||||
|  | 		exists = true | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	return | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authEnabled perform the actual check for user authentication. | ||||||
|  | // | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	0 - Disabled | ||||||
|  | //  1 - Enabled | ||||||
|  | func (c *SQLiteConn) authEnabled() int { | ||||||
|  | 	return int(C._sqlite3_auth_enabled(c.db)) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // EOF | ||||||
							
								
								
									
										152
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth_omit.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										152
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_userauth_omit.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,152 @@ | |||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build !sqlite_userauth | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"C" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | // Authenticate will perform an authentication of the provided username | ||||||
|  | // and password against the database. | ||||||
|  | // | ||||||
|  | // If a database contains the SQLITE_USER table, then the | ||||||
|  | // call to Authenticate must be invoked with an | ||||||
|  | // appropriate username and password prior to enable read and write | ||||||
|  | //access to the database. | ||||||
|  | // | ||||||
|  | // Return SQLITE_OK on success or SQLITE_ERROR if the username/password | ||||||
|  | // combination is incorrect or unknown. | ||||||
|  | // | ||||||
|  | // If the SQLITE_USER table is not present in the database file, then | ||||||
|  | // this interface is a harmless no-op returnning SQLITE_OK. | ||||||
|  | func (c *SQLiteConn) Authenticate(username, password string) error { | ||||||
|  | 	// NOOP | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authenticate provides the actual authentication to SQLite. | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	C.SQLITE_OK (0) | ||||||
|  | //	C.SQLITE_ERROR (1) | ||||||
|  | //  C.SQLITE_AUTH (23) | ||||||
|  | func (c *SQLiteConn) authenticate(username, password string) int { | ||||||
|  | 	// NOOP | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AuthUserAdd can be used (by an admin user only) | ||||||
|  | // to create a new user.  When called on a no-authentication-required | ||||||
|  | // database, this routine converts the database into an authentication- | ||||||
|  | // required database, automatically makes the added user an | ||||||
|  | // administrator, and logs in the current connection as that user. | ||||||
|  | // The AuthUserAdd only works for the "main" database, not | ||||||
|  | // for any ATTACH-ed databases. Any call to AuthUserAdd by a | ||||||
|  | // non-admin user results in an error. | ||||||
|  | func (c *SQLiteConn) AuthUserAdd(username, password string, admin bool) error { | ||||||
|  | 	// NOOP | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authUserAdd enables the User Authentication if not enabled. | ||||||
|  | // Otherwise it will add a user. | ||||||
|  | // | ||||||
|  | // When user authentication is already enabled then this function | ||||||
|  | // can only be called by an admin. | ||||||
|  | // | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	C.SQLITE_OK (0) | ||||||
|  | //	C.SQLITE_ERROR (1) | ||||||
|  | //  C.SQLITE_AUTH (23) | ||||||
|  | func (c *SQLiteConn) authUserAdd(username, password string, admin int) int { | ||||||
|  | 	// NOOP | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AuthUserChange can be used to change a users | ||||||
|  | // login credentials or admin privilege.  Any user can change their own | ||||||
|  | // login credentials.  Only an admin user can change another users login | ||||||
|  | // credentials or admin privilege setting.  No user may change their own | ||||||
|  | // admin privilege setting. | ||||||
|  | func (c *SQLiteConn) AuthUserChange(username, password string, admin bool) error { | ||||||
|  | 	// NOOP | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authUserChange allows to modify a user. | ||||||
|  | // Users can change their own password. | ||||||
|  | // | ||||||
|  | // Only admins can change passwords for other users | ||||||
|  | // and modify the admin flag. | ||||||
|  | // | ||||||
|  | // The admin flag of the current logged in user cannot be changed. | ||||||
|  | // THis ensures that their is always an admin. | ||||||
|  | // | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	C.SQLITE_OK (0) | ||||||
|  | //	C.SQLITE_ERROR (1) | ||||||
|  | //  C.SQLITE_AUTH (23) | ||||||
|  | func (c *SQLiteConn) authUserChange(username, password string, admin int) int { | ||||||
|  | 	// NOOP | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AuthUserDelete can be used (by an admin user only) | ||||||
|  | // to delete a user.  The currently logged-in user cannot be deleted, | ||||||
|  | // which guarantees that there is always an admin user and hence that | ||||||
|  | // the database cannot be converted into a no-authentication-required | ||||||
|  | // database. | ||||||
|  | func (c *SQLiteConn) AuthUserDelete(username string) error { | ||||||
|  | 	// NOOP | ||||||
|  | 	return nil | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authUserDelete can be used to delete a user. | ||||||
|  | // | ||||||
|  | // This function can only be executed by an admin. | ||||||
|  | // | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	C.SQLITE_OK (0) | ||||||
|  | //	C.SQLITE_ERROR (1) | ||||||
|  | //  C.SQLITE_AUTH (23) | ||||||
|  | func (c *SQLiteConn) authUserDelete(username string) int { | ||||||
|  | 	// NOOP | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // AuthEnabled checks if the database is protected by user authentication | ||||||
|  | func (c *SQLiteConn) AuthEnabled() (exists bool) { | ||||||
|  | 	// NOOP | ||||||
|  | 	return false | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // authEnabled perform the actual check for user authentication. | ||||||
|  | // | ||||||
|  | // This is not exported for usage in Go. | ||||||
|  | // It is however exported for usage within SQL by the user. | ||||||
|  | // | ||||||
|  | // Returns: | ||||||
|  | //	0 - Disabled | ||||||
|  | //  1 - Enabled | ||||||
|  | func (c *SQLiteConn) authEnabled() int { | ||||||
|  | 	// NOOP | ||||||
|  | 	return 0 | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // EOF | ||||||
							
								
								
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_full.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_vacuum_full | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_DEFAULT_AUTOVACUUM=1 | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
							
								
								
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_opt_vacuum_incr.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | |||||||
|  | // Copyright (C) 2014 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build sqlite_vacuum_incr | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -DSQLITE_DEFAULT_AUTOVACUUM=2 | ||||||
|  | #cgo LDFLAGS: -lm | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
| @@ -2,14 +2,18 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
| // +build vtable | 
 | ||||||
|  | // +build sqlite_vtable vtable | ||||||
| 
 | 
 | ||||||
| package sqlite3 | package sqlite3 | ||||||
| 
 | 
 | ||||||
| /* | /* | ||||||
| #cgo CFLAGS: -std=gnu99 | #cgo CFLAGS: -std=gnu99 | ||||||
| #cgo CFLAGS: -DSQLITE_ENABLE_RTREE -DSQLITE_THREADSAFE | #cgo CFLAGS: -DSQLITE_ENABLE_RTREE | ||||||
| #cgo CFLAGS: -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_FTS3_PARENTHESIS -DSQLITE_ENABLE_FTS4_UNICODE61 | #cgo CFLAGS: -DSQLITE_THREADSAFE | ||||||
|  | #cgo CFLAGS: -DSQLITE_ENABLE_FTS3 | ||||||
|  | #cgo CFLAGS: -DSQLITE_ENABLE_FTS3_PARENTHESIS | ||||||
|  | #cgo CFLAGS: -DSQLITE_ENABLE_FTS4_UNICODE61 | ||||||
| #cgo CFLAGS: -DSQLITE_TRACE_SIZE_LIMIT=15 | #cgo CFLAGS: -DSQLITE_TRACE_SIZE_LIMIT=15 | ||||||
| #cgo CFLAGS: -DSQLITE_ENABLE_COLUMN_METADATA=1 | #cgo CFLAGS: -DSQLITE_ENABLE_COLUMN_METADATA=1 | ||||||
| #cgo CFLAGS: -Wno-deprecated-declarations | #cgo CFLAGS: -Wno-deprecated-declarations | ||||||
							
								
								
									
										4
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_other.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,6 +2,7 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
| // +build !windows | // +build !windows | ||||||
|  |  | ||||||
| package sqlite3 | package sqlite3 | ||||||
| @@ -9,5 +10,8 @@ package sqlite3 | |||||||
| /* | /* | ||||||
| #cgo CFLAGS: -I. | #cgo CFLAGS: -I. | ||||||
| #cgo linux LDFLAGS: -ldl | #cgo linux LDFLAGS: -ldl | ||||||
|  | #cgo linux,ppc LDFLAGS: -lpthread | ||||||
|  | #cgo linux,ppc64 LDFLAGS: -lpthread | ||||||
|  | #cgo linux,ppc64le LDFLAGS: -lpthread | ||||||
| */ | */ | ||||||
| import "C" | import "C" | ||||||
|   | |||||||
							
								
								
									
										14
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_solaris.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,14 @@ | |||||||
|  | // Copyright (C) 2018 Yasuhiro Matsumoto <mattn.jp@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build solaris | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #cgo CFLAGS: -D__EXTENSIONS__=1 | ||||||
|  | #cgo LDFLAGS: -lc | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
							
								
								
									
										154
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										154
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_trace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,7 +2,8 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
| // +build trace |  | ||||||
|  | // +build sqlite_trace trace | ||||||
|  |  | ||||||
| package sqlite3 | package sqlite3 | ||||||
|  |  | ||||||
| @@ -14,16 +15,12 @@ package sqlite3 | |||||||
| #endif | #endif | ||||||
| #include <stdlib.h> | #include <stdlib.h> | ||||||
|  |  | ||||||
| void stepTrampoline(sqlite3_context*, int, sqlite3_value**); |  | ||||||
| void doneTrampoline(sqlite3_context*); |  | ||||||
| int traceCallbackTrampoline(unsigned int traceEventCode, void *ctx, void *p, void *x); | int traceCallbackTrampoline(unsigned int traceEventCode, void *ctx, void *p, void *x); | ||||||
| */ | */ | ||||||
| import "C" | import "C" | ||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"errors" |  | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"reflect" |  | ||||||
| 	"strings" | 	"strings" | ||||||
| 	"sync" | 	"sync" | ||||||
| 	"unsafe" | 	"unsafe" | ||||||
| @@ -32,10 +29,10 @@ import ( | |||||||
| // Trace... constants identify the possible events causing callback invocation. | // Trace... constants identify the possible events causing callback invocation. | ||||||
| // Values are same as the corresponding SQLite Trace Event Codes. | // Values are same as the corresponding SQLite Trace Event Codes. | ||||||
| const ( | const ( | ||||||
| 	TraceStmt    = C.SQLITE_TRACE_STMT | 	TraceStmt    = uint32(C.SQLITE_TRACE_STMT) | ||||||
| 	TraceProfile = C.SQLITE_TRACE_PROFILE | 	TraceProfile = uint32(C.SQLITE_TRACE_PROFILE) | ||||||
| 	TraceRow     = C.SQLITE_TRACE_ROW | 	TraceRow     = uint32(C.SQLITE_TRACE_ROW) | ||||||
| 	TraceClose   = C.SQLITE_TRACE_CLOSE | 	TraceClose   = uint32(C.SQLITE_TRACE_CLOSE) | ||||||
| ) | ) | ||||||
|  |  | ||||||
| type TraceInfo struct { | type TraceInfo struct { | ||||||
| @@ -75,7 +72,7 @@ type TraceUserCallback func(TraceInfo) int | |||||||
|  |  | ||||||
| type TraceConfig struct { | type TraceConfig struct { | ||||||
| 	Callback        TraceUserCallback | 	Callback        TraceUserCallback | ||||||
| 	EventMask       C.uint | 	EventMask       uint32 | ||||||
| 	WantExpandedSQL bool | 	WantExpandedSQL bool | ||||||
| } | } | ||||||
|  |  | ||||||
| @@ -109,6 +106,8 @@ func traceCallbackTrampoline( | |||||||
| 	// Parameter named 'X' in SQLite docs (eXtra event data?): | 	// Parameter named 'X' in SQLite docs (eXtra event data?): | ||||||
| 	xValue unsafe.Pointer) C.int { | 	xValue unsafe.Pointer) C.int { | ||||||
|  |  | ||||||
|  | 	eventCode := uint32(traceEventCode) | ||||||
|  |  | ||||||
| 	if ctx == nil { | 	if ctx == nil { | ||||||
| 		panic(fmt.Sprintf("No context (ev 0x%x)", traceEventCode)) | 		panic(fmt.Sprintf("No context (ev 0x%x)", traceEventCode)) | ||||||
| 	} | 	} | ||||||
| @@ -118,7 +117,7 @@ func traceCallbackTrampoline( | |||||||
|  |  | ||||||
| 	var traceConf TraceConfig | 	var traceConf TraceConfig | ||||||
| 	var found bool | 	var found bool | ||||||
| 	if traceEventCode == TraceClose { | 	if eventCode == TraceClose { | ||||||
| 		// clean up traceMap: 'pop' means get and delete | 		// clean up traceMap: 'pop' means get and delete | ||||||
| 		traceConf, found = popTraceMapping(connHandle) | 		traceConf, found = popTraceMapping(connHandle) | ||||||
| 	} else { | 	} else { | ||||||
| @@ -127,16 +126,16 @@ func traceCallbackTrampoline( | |||||||
|  |  | ||||||
| 	if !found { | 	if !found { | ||||||
| 		panic(fmt.Sprintf("Mapping not found for handle 0x%x (ev 0x%x)", | 		panic(fmt.Sprintf("Mapping not found for handle 0x%x (ev 0x%x)", | ||||||
| 			connHandle, traceEventCode)) | 			connHandle, eventCode)) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	var info TraceInfo | 	var info TraceInfo | ||||||
|  |  | ||||||
| 	info.EventCode = uint32(traceEventCode) | 	info.EventCode = eventCode | ||||||
| 	info.AutoCommit = (int(C.sqlite3_get_autocommit(contextDB)) != 0) | 	info.AutoCommit = (int(C.sqlite3_get_autocommit(contextDB)) != 0) | ||||||
| 	info.ConnHandle = connHandle | 	info.ConnHandle = connHandle | ||||||
|  |  | ||||||
| 	switch traceEventCode { | 	switch eventCode { | ||||||
| 	case TraceStmt: | 	case TraceStmt: | ||||||
| 		info.StmtHandle = uintptr(p) | 		info.StmtHandle = uintptr(p) | ||||||
|  |  | ||||||
| @@ -187,7 +186,7 @@ func traceCallbackTrampoline( | |||||||
| 	// registering this callback trampoline with SQLite --- for cleanup. | 	// registering this callback trampoline with SQLite --- for cleanup. | ||||||
| 	// In the future there may be more events forced to "selected" in SQLite | 	// In the future there may be more events forced to "selected" in SQLite | ||||||
| 	// for the driver's needs. | 	// for the driver's needs. | ||||||
| 	if traceConf.EventMask&traceEventCode == 0 { | 	if traceConf.EventMask&eventCode == 0 { | ||||||
| 		return 0 | 		return 0 | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @@ -239,131 +238,6 @@ func popTraceMapping(connHandle uintptr) (TraceConfig, bool) { | |||||||
| 	return entryCopy.config, found | 	return entryCopy.config, found | ||||||
| } | } | ||||||
|  |  | ||||||
| // RegisterAggregator makes a Go type available as a SQLite aggregation function. |  | ||||||
| // |  | ||||||
| // Because aggregation is incremental, it's implemented in Go with a |  | ||||||
| // type that has 2 methods: func Step(values) accumulates one row of |  | ||||||
| // data into the accumulator, and func Done() ret finalizes and |  | ||||||
| // returns the aggregate value. "values" and "ret" may be any type |  | ||||||
| // supported by RegisterFunc. |  | ||||||
| // |  | ||||||
| // RegisterAggregator takes as implementation a constructor function |  | ||||||
| // that constructs an instance of the aggregator type each time an |  | ||||||
| // aggregation begins. The constructor must return a pointer to a |  | ||||||
| // type, or an interface that implements Step() and Done(). |  | ||||||
| // |  | ||||||
| // The constructor function and the Step/Done methods may optionally |  | ||||||
| // return an error in addition to their other return values. |  | ||||||
| // |  | ||||||
| // See _example/go_custom_funcs for a detailed example. |  | ||||||
| func (c *SQLiteConn) RegisterAggregator(name string, impl interface{}, pure bool) error { |  | ||||||
| 	var ai aggInfo |  | ||||||
| 	ai.constructor = reflect.ValueOf(impl) |  | ||||||
| 	t := ai.constructor.Type() |  | ||||||
| 	if t.Kind() != reflect.Func { |  | ||||||
| 		return errors.New("non-function passed to RegisterAggregator") |  | ||||||
| 	} |  | ||||||
| 	if t.NumOut() != 1 && t.NumOut() != 2 { |  | ||||||
| 		return errors.New("SQLite aggregator constructors must return 1 or 2 values") |  | ||||||
| 	} |  | ||||||
| 	if t.NumOut() == 2 && !t.Out(1).Implements(reflect.TypeOf((*error)(nil)).Elem()) { |  | ||||||
| 		return errors.New("Second return value of SQLite function must be error") |  | ||||||
| 	} |  | ||||||
| 	if t.NumIn() != 0 { |  | ||||||
| 		return errors.New("SQLite aggregator constructors must not have arguments") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	agg := t.Out(0) |  | ||||||
| 	switch agg.Kind() { |  | ||||||
| 	case reflect.Ptr, reflect.Interface: |  | ||||||
| 	default: |  | ||||||
| 		return errors.New("SQlite aggregator constructor must return a pointer object") |  | ||||||
| 	} |  | ||||||
| 	stepFn, found := agg.MethodByName("Step") |  | ||||||
| 	if !found { |  | ||||||
| 		return errors.New("SQlite aggregator doesn't have a Step() function") |  | ||||||
| 	} |  | ||||||
| 	step := stepFn.Type |  | ||||||
| 	if step.NumOut() != 0 && step.NumOut() != 1 { |  | ||||||
| 		return errors.New("SQlite aggregator Step() function must return 0 or 1 values") |  | ||||||
| 	} |  | ||||||
| 	if step.NumOut() == 1 && !step.Out(0).Implements(reflect.TypeOf((*error)(nil)).Elem()) { |  | ||||||
| 		return errors.New("type of SQlite aggregator Step() return value must be error") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	stepNArgs := step.NumIn() |  | ||||||
| 	start := 0 |  | ||||||
| 	if agg.Kind() == reflect.Ptr { |  | ||||||
| 		// Skip over the method receiver |  | ||||||
| 		stepNArgs-- |  | ||||||
| 		start++ |  | ||||||
| 	} |  | ||||||
| 	if step.IsVariadic() { |  | ||||||
| 		stepNArgs-- |  | ||||||
| 	} |  | ||||||
| 	for i := start; i < start+stepNArgs; i++ { |  | ||||||
| 		conv, err := callbackArg(step.In(i)) |  | ||||||
| 		if err != nil { |  | ||||||
| 			return err |  | ||||||
| 		} |  | ||||||
| 		ai.stepArgConverters = append(ai.stepArgConverters, conv) |  | ||||||
| 	} |  | ||||||
| 	if step.IsVariadic() { |  | ||||||
| 		conv, err := callbackArg(t.In(start + stepNArgs).Elem()) |  | ||||||
| 		if err != nil { |  | ||||||
| 			return err |  | ||||||
| 		} |  | ||||||
| 		ai.stepVariadicConverter = conv |  | ||||||
| 		// Pass -1 to sqlite so that it allows any number of |  | ||||||
| 		// arguments. The call helper verifies that the minimum number |  | ||||||
| 		// of arguments is present for variadic functions. |  | ||||||
| 		stepNArgs = -1 |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	doneFn, found := agg.MethodByName("Done") |  | ||||||
| 	if !found { |  | ||||||
| 		return errors.New("SQlite aggregator doesn't have a Done() function") |  | ||||||
| 	} |  | ||||||
| 	done := doneFn.Type |  | ||||||
| 	doneNArgs := done.NumIn() |  | ||||||
| 	if agg.Kind() == reflect.Ptr { |  | ||||||
| 		// Skip over the method receiver |  | ||||||
| 		doneNArgs-- |  | ||||||
| 	} |  | ||||||
| 	if doneNArgs != 0 { |  | ||||||
| 		return errors.New("SQlite aggregator Done() function must have no arguments") |  | ||||||
| 	} |  | ||||||
| 	if done.NumOut() != 1 && done.NumOut() != 2 { |  | ||||||
| 		return errors.New("SQLite aggregator Done() function must return 1 or 2 values") |  | ||||||
| 	} |  | ||||||
| 	if done.NumOut() == 2 && !done.Out(1).Implements(reflect.TypeOf((*error)(nil)).Elem()) { |  | ||||||
| 		return errors.New("second return value of SQLite aggregator Done() function must be error") |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	conv, err := callbackRet(done.Out(0)) |  | ||||||
| 	if err != nil { |  | ||||||
| 		return err |  | ||||||
| 	} |  | ||||||
| 	ai.doneRetConverter = conv |  | ||||||
| 	ai.active = make(map[int64]reflect.Value) |  | ||||||
| 	ai.next = 1 |  | ||||||
|  |  | ||||||
| 	// ai must outlast the database connection, or we'll have dangling pointers. |  | ||||||
| 	c.aggregators = append(c.aggregators, &ai) |  | ||||||
|  |  | ||||||
| 	cname := C.CString(name) |  | ||||||
| 	defer C.free(unsafe.Pointer(cname)) |  | ||||||
| 	opts := C.SQLITE_UTF8 |  | ||||||
| 	if pure { |  | ||||||
| 		opts |= C.SQLITE_DETERMINISTIC |  | ||||||
| 	} |  | ||||||
| 	rv := sqlite3CreateFunction(c.db, cname, C.int(stepNArgs), C.int(opts), newHandle(c, &ai), nil, C.stepTrampoline, C.doneTrampoline) |  | ||||||
| 	if rv != C.SQLITE_OK { |  | ||||||
| 		return c.lastError() |  | ||||||
| 	} |  | ||||||
| 	return nil |  | ||||||
| } |  | ||||||
|  |  | ||||||
| // SetTrace installs or removes the trace callback for the given database connection. | // SetTrace installs or removes the trace callback for the given database connection. | ||||||
| // It's not named 'RegisterTrace' because only one callback can be kept and called. | // It's not named 'RegisterTrace' because only one callback can be kept and called. | ||||||
| // Calling SetTrace a second time on same database connection | // Calling SetTrace a second time on same database connection | ||||||
|   | |||||||
							
								
								
									
										39
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										39
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_usleep_windows.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,39 @@ | |||||||
|  | // Copyright (C) 2018 G.J.R. Timmer <gjr.timmer@gmail.com>. | ||||||
|  | // | ||||||
|  | // Use of this source code is governed by an MIT-style | ||||||
|  | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
|  | // +build cgo | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | // usleep is a function available on *nix based systems. | ||||||
|  | // This function is not present in Windows. | ||||||
|  | // Windows has a sleep function but this works with seconds | ||||||
|  | // and not with microseconds as usleep. | ||||||
|  | // | ||||||
|  | // This code should improve performance on windows because | ||||||
|  | // without the presence of usleep SQLite waits 1 second. | ||||||
|  | // | ||||||
|  | // Source: https://stackoverflow.com/questions/5801813/c-usleep-is-obsolete-workarounds-for-windows-mingw?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | #include <windows.h> | ||||||
|  |  | ||||||
|  | void usleep(__int64 usec) | ||||||
|  | { | ||||||
|  |     HANDLE timer; | ||||||
|  |     LARGE_INTEGER ft; | ||||||
|  |  | ||||||
|  |     // Convert to 100 nanosecond interval, negative value indicates relative time | ||||||
|  |     ft.QuadPart = -(10*usec); | ||||||
|  |  | ||||||
|  |     timer = CreateWaitableTimer(NULL, TRUE, NULL); | ||||||
|  |     SetWaitableTimer(timer, &ft, 0, NULL, NULL, 0); | ||||||
|  |     WaitForSingleObject(timer, INFINITE); | ||||||
|  |     CloseHandle(timer); | ||||||
|  | } | ||||||
|  | */ | ||||||
|  | import "C" | ||||||
|  |  | ||||||
|  | // EOF | ||||||
							
								
								
									
										8
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3_windows.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,13 +2,17 @@ | |||||||
| // | // | ||||||
| // Use of this source code is governed by an MIT-style | // Use of this source code is governed by an MIT-style | ||||||
| // license that can be found in the LICENSE file. | // license that can be found in the LICENSE file. | ||||||
|  |  | ||||||
| // +build windows | // +build windows | ||||||
|  |  | ||||||
| package sqlite3 | package sqlite3 | ||||||
|  |  | ||||||
| /* | /* | ||||||
| #cgo CFLAGS: -I. -fno-stack-check -fno-stack-protector -mno-stack-arg-probe | #cgo CFLAGS: -I. | ||||||
| #cgo windows,386 CFLAGS: -D_USE_32BIT_TIME_T | #cgo CFLAGS: -fno-stack-check | ||||||
|  | #cgo CFLAGS: -fno-stack-protector | ||||||
|  | #cgo CFLAGS: -mno-stack-arg-probe | ||||||
| #cgo LDFLAGS: -lmingwex -lmingw32 | #cgo LDFLAGS: -lmingwex -lmingw32 | ||||||
|  | #cgo windows,386 CFLAGS: -D_USE_32BIT_TIME_T | ||||||
| */ | */ | ||||||
| import "C" | import "C" | ||||||
|   | |||||||
							
								
								
									
										75
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3ext.h
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										75
									
								
								vendor/github.com/mattn/go-sqlite3/sqlite3ext.h
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -18,7 +18,7 @@ | |||||||
| */ | */ | ||||||
| #ifndef SQLITE3EXT_H | #ifndef SQLITE3EXT_H | ||||||
| #define SQLITE3EXT_H | #define SQLITE3EXT_H | ||||||
| #include "sqlite3.h" | #include "sqlite3-binding.h" | ||||||
|  |  | ||||||
| /* | /* | ||||||
| ** The following structure holds pointers to all of the SQLite API | ** The following structure holds pointers to all of the SQLite API | ||||||
| @@ -135,7 +135,7 @@ struct sqlite3_api_routines { | |||||||
|   int  (*set_authorizer)(sqlite3*,int(*)(void*,int,const char*,const char*, |   int  (*set_authorizer)(sqlite3*,int(*)(void*,int,const char*,const char*, | ||||||
|                          const char*,const char*),void*); |                          const char*,const char*),void*); | ||||||
|   void  (*set_auxdata)(sqlite3_context*,int,void*,void (*)(void*)); |   void  (*set_auxdata)(sqlite3_context*,int,void*,void (*)(void*)); | ||||||
|   char * (*snprintf)(int,char*,const char*,...); |   char * (*xsnprintf)(int,char*,const char*,...); | ||||||
|   int  (*step)(sqlite3_stmt*); |   int  (*step)(sqlite3_stmt*); | ||||||
|   int  (*table_column_metadata)(sqlite3*,const char*,const char*,const char*, |   int  (*table_column_metadata)(sqlite3*,const char*,const char*,const char*, | ||||||
|                                 char const**,char const**,int*,int*,int*); |                                 char const**,char const**,int*,int*,int*); | ||||||
| @@ -247,7 +247,7 @@ struct sqlite3_api_routines { | |||||||
|   int (*uri_boolean)(const char*,const char*,int); |   int (*uri_boolean)(const char*,const char*,int); | ||||||
|   sqlite3_int64 (*uri_int64)(const char*,const char*,sqlite3_int64); |   sqlite3_int64 (*uri_int64)(const char*,const char*,sqlite3_int64); | ||||||
|   const char *(*uri_parameter)(const char*,const char*); |   const char *(*uri_parameter)(const char*,const char*); | ||||||
|   char *(*vsnprintf)(int,char*,const char*,va_list); |   char *(*xvsnprintf)(int,char*,const char*,va_list); | ||||||
|   int (*wal_checkpoint_v2)(sqlite3*,const char*,int,int*,int*); |   int (*wal_checkpoint_v2)(sqlite3*,const char*,int,int*,int*); | ||||||
|   /* Version 3.8.7 and later */ |   /* Version 3.8.7 and later */ | ||||||
|   int (*auto_extension)(void(*)(void)); |   int (*auto_extension)(void(*)(void)); | ||||||
| @@ -283,6 +283,40 @@ struct sqlite3_api_routines { | |||||||
|   /* Version 3.14.0 and later */ |   /* Version 3.14.0 and later */ | ||||||
|   int (*trace_v2)(sqlite3*,unsigned,int(*)(unsigned,void*,void*,void*),void*); |   int (*trace_v2)(sqlite3*,unsigned,int(*)(unsigned,void*,void*,void*),void*); | ||||||
|   char *(*expanded_sql)(sqlite3_stmt*); |   char *(*expanded_sql)(sqlite3_stmt*); | ||||||
|  |   /* Version 3.18.0 and later */ | ||||||
|  |   void (*set_last_insert_rowid)(sqlite3*,sqlite3_int64); | ||||||
|  |   /* Version 3.20.0 and later */ | ||||||
|  |   int (*prepare_v3)(sqlite3*,const char*,int,unsigned int, | ||||||
|  |                     sqlite3_stmt**,const char**); | ||||||
|  |   int (*prepare16_v3)(sqlite3*,const void*,int,unsigned int, | ||||||
|  |                       sqlite3_stmt**,const void**); | ||||||
|  |   int (*bind_pointer)(sqlite3_stmt*,int,void*,const char*,void(*)(void*)); | ||||||
|  |   void (*result_pointer)(sqlite3_context*,void*,const char*,void(*)(void*)); | ||||||
|  |   void *(*value_pointer)(sqlite3_value*,const char*); | ||||||
|  |   int (*vtab_nochange)(sqlite3_context*); | ||||||
|  |   int (*value_nochange)(sqlite3_value*); | ||||||
|  |   const char *(*vtab_collation)(sqlite3_index_info*,int); | ||||||
|  |   /* Version 3.24.0 and later */ | ||||||
|  |   int (*keyword_count)(void); | ||||||
|  |   int (*keyword_name)(int,const char**,int*); | ||||||
|  |   int (*keyword_check)(const char*,int); | ||||||
|  |   sqlite3_str *(*str_new)(sqlite3*); | ||||||
|  |   char *(*str_finish)(sqlite3_str*); | ||||||
|  |   void (*str_appendf)(sqlite3_str*, const char *zFormat, ...); | ||||||
|  |   void (*str_vappendf)(sqlite3_str*, const char *zFormat, va_list); | ||||||
|  |   void (*str_append)(sqlite3_str*, const char *zIn, int N); | ||||||
|  |   void (*str_appendall)(sqlite3_str*, const char *zIn); | ||||||
|  |   void (*str_appendchar)(sqlite3_str*, int N, char C); | ||||||
|  |   void (*str_reset)(sqlite3_str*); | ||||||
|  |   int (*str_errcode)(sqlite3_str*); | ||||||
|  |   int (*str_length)(sqlite3_str*); | ||||||
|  |   char *(*str_value)(sqlite3_str*); | ||||||
|  |   int (*create_window_function)(sqlite3*,const char*,int,int,void*, | ||||||
|  |                             void (*xStep)(sqlite3_context*,int,sqlite3_value**), | ||||||
|  |                             void (*xFinal)(sqlite3_context*), | ||||||
|  |                             void (*xValue)(sqlite3_context*), | ||||||
|  |                             void (*xInv)(sqlite3_context*,int,sqlite3_value**), | ||||||
|  |                             void(*xDestroy)(void*)); | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /* | /* | ||||||
| @@ -409,7 +443,7 @@ typedef int (*sqlite3_loadext_entry)( | |||||||
| #define sqlite3_rollback_hook          sqlite3_api->rollback_hook | #define sqlite3_rollback_hook          sqlite3_api->rollback_hook | ||||||
| #define sqlite3_set_authorizer         sqlite3_api->set_authorizer | #define sqlite3_set_authorizer         sqlite3_api->set_authorizer | ||||||
| #define sqlite3_set_auxdata            sqlite3_api->set_auxdata | #define sqlite3_set_auxdata            sqlite3_api->set_auxdata | ||||||
| #define sqlite3_snprintf               sqlite3_api->snprintf | #define sqlite3_snprintf               sqlite3_api->xsnprintf | ||||||
| #define sqlite3_step                   sqlite3_api->step | #define sqlite3_step                   sqlite3_api->step | ||||||
| #define sqlite3_table_column_metadata  sqlite3_api->table_column_metadata | #define sqlite3_table_column_metadata  sqlite3_api->table_column_metadata | ||||||
| #define sqlite3_thread_cleanup         sqlite3_api->thread_cleanup | #define sqlite3_thread_cleanup         sqlite3_api->thread_cleanup | ||||||
| @@ -433,7 +467,7 @@ typedef int (*sqlite3_loadext_entry)( | |||||||
| #define sqlite3_value_text16le         sqlite3_api->value_text16le | #define sqlite3_value_text16le         sqlite3_api->value_text16le | ||||||
| #define sqlite3_value_type             sqlite3_api->value_type | #define sqlite3_value_type             sqlite3_api->value_type | ||||||
| #define sqlite3_vmprintf               sqlite3_api->vmprintf | #define sqlite3_vmprintf               sqlite3_api->vmprintf | ||||||
| #define sqlite3_vsnprintf              sqlite3_api->vsnprintf | #define sqlite3_vsnprintf              sqlite3_api->xvsnprintf | ||||||
| #define sqlite3_overload_function      sqlite3_api->overload_function | #define sqlite3_overload_function      sqlite3_api->overload_function | ||||||
| #define sqlite3_prepare_v2             sqlite3_api->prepare_v2 | #define sqlite3_prepare_v2             sqlite3_api->prepare_v2 | ||||||
| #define sqlite3_prepare16_v2           sqlite3_api->prepare16_v2 | #define sqlite3_prepare16_v2           sqlite3_api->prepare16_v2 | ||||||
| @@ -509,7 +543,7 @@ typedef int (*sqlite3_loadext_entry)( | |||||||
| #define sqlite3_uri_boolean            sqlite3_api->uri_boolean | #define sqlite3_uri_boolean            sqlite3_api->uri_boolean | ||||||
| #define sqlite3_uri_int64              sqlite3_api->uri_int64 | #define sqlite3_uri_int64              sqlite3_api->uri_int64 | ||||||
| #define sqlite3_uri_parameter          sqlite3_api->uri_parameter | #define sqlite3_uri_parameter          sqlite3_api->uri_parameter | ||||||
| #define sqlite3_uri_vsnprintf          sqlite3_api->vsnprintf | #define sqlite3_uri_vsnprintf          sqlite3_api->xvsnprintf | ||||||
| #define sqlite3_wal_checkpoint_v2      sqlite3_api->wal_checkpoint_v2 | #define sqlite3_wal_checkpoint_v2      sqlite3_api->wal_checkpoint_v2 | ||||||
| /* Version 3.8.7 and later */ | /* Version 3.8.7 and later */ | ||||||
| #define sqlite3_auto_extension         sqlite3_api->auto_extension | #define sqlite3_auto_extension         sqlite3_api->auto_extension | ||||||
| @@ -541,6 +575,35 @@ typedef int (*sqlite3_loadext_entry)( | |||||||
| /* Version 3.14.0 and later */ | /* Version 3.14.0 and later */ | ||||||
| #define sqlite3_trace_v2               sqlite3_api->trace_v2 | #define sqlite3_trace_v2               sqlite3_api->trace_v2 | ||||||
| #define sqlite3_expanded_sql           sqlite3_api->expanded_sql | #define sqlite3_expanded_sql           sqlite3_api->expanded_sql | ||||||
|  | /* Version 3.18.0 and later */ | ||||||
|  | #define sqlite3_set_last_insert_rowid  sqlite3_api->set_last_insert_rowid | ||||||
|  | /* Version 3.20.0 and later */ | ||||||
|  | #define sqlite3_prepare_v3             sqlite3_api->prepare_v3 | ||||||
|  | #define sqlite3_prepare16_v3           sqlite3_api->prepare16_v3 | ||||||
|  | #define sqlite3_bind_pointer           sqlite3_api->bind_pointer | ||||||
|  | #define sqlite3_result_pointer         sqlite3_api->result_pointer | ||||||
|  | #define sqlite3_value_pointer          sqlite3_api->value_pointer | ||||||
|  | /* Version 3.22.0 and later */ | ||||||
|  | #define sqlite3_vtab_nochange          sqlite3_api->vtab_nochange | ||||||
|  | #define sqlite3_value_nochange         sqlite3_api->value_nochange | ||||||
|  | #define sqlite3_vtab_collation         sqlite3_api->vtab_collation | ||||||
|  | /* Version 3.24.0 and later */ | ||||||
|  | #define sqlite3_keyword_count          sqlite3_api->keyword_count | ||||||
|  | #define sqlite3_keyword_name           sqlite3_api->keyword_name | ||||||
|  | #define sqlite3_keyword_check          sqlite3_api->keyword_check | ||||||
|  | #define sqlite3_str_new                sqlite3_api->str_new | ||||||
|  | #define sqlite3_str_finish             sqlite3_api->str_finish | ||||||
|  | #define sqlite3_str_appendf            sqlite3_api->str_appendf | ||||||
|  | #define sqlite3_str_vappendf           sqlite3_api->str_vappendf | ||||||
|  | #define sqlite3_str_append             sqlite3_api->str_append | ||||||
|  | #define sqlite3_str_appendall          sqlite3_api->str_appendall | ||||||
|  | #define sqlite3_str_appendchar         sqlite3_api->str_appendchar | ||||||
|  | #define sqlite3_str_reset              sqlite3_api->str_reset | ||||||
|  | #define sqlite3_str_errcode            sqlite3_api->str_errcode | ||||||
|  | #define sqlite3_str_length             sqlite3_api->str_length | ||||||
|  | #define sqlite3_str_value              sqlite3_api->str_value | ||||||
|  | /* Version 3.25.0 and later */ | ||||||
|  | #define sqlite3_create_window_function sqlite3_api->create_window_function | ||||||
| #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */ | #endif /* !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) */ | ||||||
|  |  | ||||||
| #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) | #if !defined(SQLITE_CORE) && !defined(SQLITE_OMIT_LOAD_EXTENSION) | ||||||
|   | |||||||
							
								
								
									
										21
									
								
								vendor/github.com/mattn/go-sqlite3/static_mock.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/mattn/go-sqlite3/static_mock.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | // +build !cgo | ||||||
|  |  | ||||||
|  | package sqlite3 | ||||||
|  |  | ||||||
|  | import ( | ||||||
|  | 	"database/sql" | ||||||
|  | 	"database/sql/driver" | ||||||
|  | 	"errors" | ||||||
|  | ) | ||||||
|  |  | ||||||
|  | func init() { | ||||||
|  | 	sql.Register("sqlite3", &SQLiteDriverMock{}) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | type SQLiteDriverMock struct{} | ||||||
|  |  | ||||||
|  | var errorMsg = errors.New("Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub") | ||||||
|  |  | ||||||
|  | func (SQLiteDriverMock) Open(s string) (driver.Conn, error) { | ||||||
|  | 	return nil, errorMsg | ||||||
|  | } | ||||||
		Reference in New Issue
	
	Block a user