mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-30 21:12:24 -05:00 
			
		
		
		
	[chore]: Bump github.com/ncruces/go-sqlite3 from 0.23.0 to 0.24.0 (#3862)
Bumps [github.com/ncruces/go-sqlite3](https://github.com/ncruces/go-sqlite3) from 0.23.0 to 0.24.0. - [Release notes](https://github.com/ncruces/go-sqlite3/releases) - [Commits](https://github.com/ncruces/go-sqlite3/compare/v0.23.0...v0.24.0) --- updated-dependencies: - dependency-name: github.com/ncruces/go-sqlite3 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
This commit is contained in:
		
					parent
					
						
							
								8488ac9286
							
						
					
				
			
			
				commit
				
					
						0e2e8e54ab
					
				
			
		
					 26 changed files with 215 additions and 155 deletions
				
			
		
							
								
								
									
										12
									
								
								vendor/github.com/ncruces/go-sqlite3/.gitignore
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										12
									
								
								vendor/github.com/ncruces/go-sqlite3/.gitignore
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -5,9 +5,6 @@ | |||
| *.so | ||||
| *.dylib | ||||
| 
 | ||||
| # Go workspace | ||||
| go.work* | ||||
| 
 | ||||
| # Test binary, built with `go test -c` | ||||
| *.test | ||||
| 
 | ||||
|  | @ -16,4 +13,11 @@ go.work* | |||
| 
 | ||||
| # Dependency directories (remove the comment below to include it) | ||||
| # vendor/ | ||||
| tools | ||||
| tools | ||||
| 
 | ||||
| # Go workspace file | ||||
| go.work | ||||
| go.work.sum | ||||
| 
 | ||||
| # env file | ||||
| .env | ||||
							
								
								
									
										4
									
								
								vendor/github.com/ncruces/go-sqlite3/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/ncruces/go-sqlite3/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -98,7 +98,7 @@ Also, post there if you used this driver for something interesting | |||
| ([_"Show and tell"_](https://github.com/ncruces/go-sqlite3/discussions/categories/show-and-tell)), | ||||
| have an [idea](https://github.com/ncruces/go-sqlite3/discussions/categories/ideas)… | ||||
| 
 | ||||
| The [Issue](https://github.com/ncruces/go-sqlite3/issues) tracker is for bugs we want fixed, | ||||
| The [Issue](https://github.com/ncruces/go-sqlite3/issues) tracker is for bugs, | ||||
| and features we're working on, planning to work on, or asking for help with. | ||||
| 
 | ||||
| ### Alternatives | ||||
|  | @ -106,4 +106,4 @@ and features we're working on, planning to work on, or asking for help with. | |||
| - [`modernc.org/sqlite`](https://pkg.go.dev/modernc.org/sqlite) | ||||
| - [`crawshaw.io/sqlite`](https://pkg.go.dev/crawshaw.io/sqlite) | ||||
| - [`github.com/mattn/go-sqlite3`](https://pkg.go.dev/github.com/mattn/go-sqlite3) | ||||
| - [`github.com/zombiezen/go-sqlite`](https://pkg.go.dev/github.com/zombiezen/go-sqlite) | ||||
| - [`github.com/zombiezen/go-sqlite`](https://pkg.go.dev/github.com/zombiezen/go-sqlite) | ||||
							
								
								
									
										4
									
								
								vendor/github.com/ncruces/go-sqlite3/config.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/ncruces/go-sqlite3/config.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -45,7 +45,7 @@ func (c *Conn) Config(op DBConfig, arg ...bool) (bool, error) { | |||
| 
 | ||||
| 	rc := res_t(c.call("sqlite3_db_config", stk_t(c.handle), | ||||
| 		stk_t(op), stk_t(argsPtr))) | ||||
| 	return util.Read32[uint32](c.mod, argsPtr) != 0, c.error(rc) | ||||
| 	return util.ReadBool(c.mod, argsPtr), c.error(rc) | ||||
| } | ||||
| 
 | ||||
| // ConfigLog sets up the error logging callback for the connection. | ||||
|  | @ -116,7 +116,7 @@ func (c *Conn) FileControl(schema string, op FcntlOpcode, arg ...any) (any, erro | |||
| 		rc = res_t(c.call("sqlite3_file_control", | ||||
| 			stk_t(c.handle), stk_t(schemaPtr), | ||||
| 			stk_t(op), stk_t(ptr))) | ||||
| 		ret = util.Read32[uint32](c.mod, ptr) != 0 | ||||
| 		ret = util.ReadBool(c.mod, ptr) | ||||
| 
 | ||||
| 	case FCNTL_CHUNK_SIZE: | ||||
| 		util.Write32(c.mod, ptr, int32(arg[0].(int))) | ||||
|  |  | |||
							
								
								
									
										21
									
								
								vendor/github.com/ncruces/go-sqlite3/conn.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										21
									
								
								vendor/github.com/ncruces/go-sqlite3/conn.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -3,6 +3,7 @@ package sqlite3 | |||
| import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"iter" | ||||
| 	"math" | ||||
| 	"math/rand" | ||||
| 	"net/url" | ||||
|  | @ -492,9 +493,9 @@ func (c *Conn) TableColumnMetadata(schema, table, column string) (declType, coll | |||
| 		if ptr := util.Read32[ptr_t](c.mod, collSeqPtr); ptr != 0 { | ||||
| 			collSeq = util.ReadString(c.mod, ptr, _MAX_NAME) | ||||
| 		} | ||||
| 		notNull = util.Read32[uint32](c.mod, notNullPtr) != 0 | ||||
| 		autoInc = util.Read32[uint32](c.mod, autoIncPtr) != 0 | ||||
| 		primaryKey = util.Read32[uint32](c.mod, primaryKeyPtr) != 0 | ||||
| 		notNull = util.ReadBool(c.mod, notNullPtr) | ||||
| 		autoInc = util.ReadBool(c.mod, autoIncPtr) | ||||
| 		primaryKey = util.ReadBool(c.mod, primaryKeyPtr) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | @ -503,10 +504,16 @@ func (c *Conn) error(rc res_t, sql ...string) error { | |||
| 	return c.sqlite.error(rc, c.handle, sql...) | ||||
| } | ||||
| 
 | ||||
| func (c *Conn) stmtsIter(yield func(*Stmt) bool) { | ||||
| 	for _, s := range c.stmts { | ||||
| 		if !yield(s) { | ||||
| 			break | ||||
| // Stmts returns an iterator for the prepared statements | ||||
| // associated with the database connection. | ||||
| // | ||||
| // https://sqlite.org/c3ref/next_stmt.html | ||||
| func (c *Conn) Stmts() iter.Seq[*Stmt] { | ||||
| 	return func(yield func(*Stmt) bool) { | ||||
| 		for _, s := range c.stmts { | ||||
| 			if !yield(s) { | ||||
| 				break | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  |  | |||
							
								
								
									
										11
									
								
								vendor/github.com/ncruces/go-sqlite3/conn_iter.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/ncruces/go-sqlite3/conn_iter.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,11 +0,0 @@ | |||
| //go:build go1.23 | ||||
| 
 | ||||
| package sqlite3 | ||||
| 
 | ||||
| import "iter" | ||||
| 
 | ||||
| // Stmts returns an iterator for the prepared statements | ||||
| // associated with the database connection. | ||||
| // | ||||
| // https://sqlite.org/c3ref/next_stmt.html | ||||
| func (c *Conn) Stmts() iter.Seq[*Stmt] { return c.stmtsIter } | ||||
							
								
								
									
										9
									
								
								vendor/github.com/ncruces/go-sqlite3/conn_old.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/ncruces/go-sqlite3/conn_old.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,9 +0,0 @@ | |||
| //go:build !go1.23 | ||||
| 
 | ||||
| package sqlite3 | ||||
| 
 | ||||
| // Stmts returns an iterator for the prepared statements | ||||
| // associated with the database connection. | ||||
| // | ||||
| // https://sqlite.org/c3ref/next_stmt.html | ||||
| func (c *Conn) Stmts() func(func(*Stmt) bool) { return c.stmtsIter } | ||||
							
								
								
									
										5
									
								
								vendor/github.com/ncruces/go-sqlite3/const.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/github.com/ncruces/go-sqlite3/const.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -259,7 +259,10 @@ const ( | |||
| 	DBCONFIG_TRUSTED_SCHEMA        DBConfig = 1017 | ||||
| 	DBCONFIG_STMT_SCANSTATUS       DBConfig = 1018 | ||||
| 	DBCONFIG_REVERSE_SCANORDER     DBConfig = 1019 | ||||
| 	// DBCONFIG_MAX                DBConfig = 1019 | ||||
| 	DBCONFIG_ENABLE_ATTACH_CREATE  DBConfig = 1020 | ||||
| 	DBCONFIG_ENABLE_ATTACH_WRITE   DBConfig = 1021 | ||||
| 	DBCONFIG_ENABLE_COMMENTS       DBConfig = 1022 | ||||
| 	// DBCONFIG_MAX                DBConfig = 1022 | ||||
| ) | ||||
| 
 | ||||
| // FcntlOpcode are the available opcodes for [Conn.FileControl]. | ||||
|  |  | |||
							
								
								
									
										2
									
								
								vendor/github.com/ncruces/go-sqlite3/embed/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/ncruces/go-sqlite3/embed/README.md
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,6 +1,6 @@ | |||
| # Embeddable Wasm build of SQLite | ||||
| 
 | ||||
| This folder includes an embeddable Wasm build of SQLite 3.49.0 for use with | ||||
| This folder includes an embeddable Wasm build of SQLite 3.49.1 for use with | ||||
| [`github.com/ncruces/go-sqlite3`](https://pkg.go.dev/github.com/ncruces/go-sqlite3). | ||||
| 
 | ||||
| The following optional features are compiled in: | ||||
|  |  | |||
							
								
								
									
										1
									
								
								vendor/github.com/ncruces/go-sqlite3/embed/exports.txt
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/ncruces/go-sqlite3/embed/exports.txt
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -80,6 +80,7 @@ sqlite3_interrupt | |||
| sqlite3_invoke_busy_handler_go | ||||
| sqlite3_last_insert_rowid | ||||
| sqlite3_limit | ||||
| sqlite3_log_go | ||||
| sqlite3_malloc64 | ||||
| sqlite3_open_v2 | ||||
| sqlite3_overload_function | ||||
|  |  | |||
							
								
								
									
										
											BIN
										
									
								
								vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								vendor/github.com/ncruces/go-sqlite3/embed/sqlite3.wasm
									
										
									
										generated
									
									
										vendored
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										41
									
								
								vendor/github.com/ncruces/go-sqlite3/func.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										41
									
								
								vendor/github.com/ncruces/go-sqlite3/func.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -2,6 +2,7 @@ package sqlite3 | |||
| 
 | ||||
| import ( | ||||
| 	"context" | ||||
| 	"io" | ||||
| 	"sync" | ||||
| 
 | ||||
| 	"github.com/tetratelabs/wazero/api" | ||||
|  | @ -85,12 +86,18 @@ func (c *Conn) CreateWindowFunction(name string, nArg int, flag FunctionFlag, fn | |||
| 	var funcPtr ptr_t | ||||
| 	defer c.arena.mark()() | ||||
| 	namePtr := c.arena.string(name) | ||||
| 	if fn != nil { | ||||
| 		funcPtr = util.AddHandle(c.ctx, fn) | ||||
| 	} | ||||
| 	call := "sqlite3_create_aggregate_function_go" | ||||
| 	if _, ok := fn().(WindowFunction); ok { | ||||
| 		call = "sqlite3_create_window_function_go" | ||||
| 	if fn != nil { | ||||
| 		agg := fn() | ||||
| 		if c, ok := agg.(io.Closer); ok { | ||||
| 			if err := c.Close(); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| 		if _, ok := agg.(WindowFunction); ok { | ||||
| 			call = "sqlite3_create_window_function_go" | ||||
| 		} | ||||
| 		funcPtr = util.AddHandle(c.ctx, fn) | ||||
| 	} | ||||
| 	rc := res_t(c.call(call, | ||||
| 		stk_t(c.handle), stk_t(namePtr), stk_t(nArg), | ||||
|  | @ -168,20 +175,24 @@ func stepCallback(ctx context.Context, mod api.Module, pCtx, pAgg, pApp ptr_t, n | |||
| 	fn.Step(Context{db, pCtx}, args[:nArg]...) | ||||
| } | ||||
| 
 | ||||
| func finalCallback(ctx context.Context, mod api.Module, pCtx, pAgg, pApp ptr_t) { | ||||
| func valueCallback(ctx context.Context, mod api.Module, pCtx, pAgg, pApp ptr_t, final int32) { | ||||
| 	db := ctx.Value(connKey{}).(*Conn) | ||||
| 	fn, handle := callbackAggregate(db, pAgg, pApp) | ||||
| 	fn.Value(Context{db, pCtx}) | ||||
| 	if err := util.DelHandle(ctx, handle); err != nil { | ||||
| 		Context{db, pCtx}.ResultError(err) | ||||
| 		return // notest | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func valueCallback(ctx context.Context, mod api.Module, pCtx, pAgg ptr_t) { | ||||
| 	db := ctx.Value(connKey{}).(*Conn) | ||||
| 	fn := util.GetHandle(db.ctx, pAgg).(AggregateFunction) | ||||
| 	fn.Value(Context{db, pCtx}) | ||||
| 	// Cleanup. | ||||
| 	if final != 0 { | ||||
| 		var err error | ||||
| 		if handle != 0 { | ||||
| 			err = util.DelHandle(ctx, handle) | ||||
| 		} else if c, ok := fn.(io.Closer); ok { | ||||
| 			err = c.Close() | ||||
| 		} | ||||
| 		if err != nil { | ||||
| 			Context{db, pCtx}.ResultError(err) | ||||
| 			return // notest | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func inverseCallback(ctx context.Context, mod api.Module, pCtx, pAgg ptr_t, nArg int32, pArg ptr_t) { | ||||
|  |  | |||
							
								
								
									
										27
									
								
								vendor/github.com/ncruces/go-sqlite3/internal/util/compiler.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/ncruces/go-sqlite3/internal/util/compiler.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -1,27 +0,0 @@ | |||
| package util | ||||
| 
 | ||||
| import ( | ||||
| 	"runtime" | ||||
| 
 | ||||
| 	"golang.org/x/sys/cpu" | ||||
| ) | ||||
| 
 | ||||
| func CompilerSupported() bool { | ||||
| 	switch runtime.GOOS { | ||||
| 	case "linux", "android", | ||||
| 		"windows", "darwin", | ||||
| 		"freebsd", "netbsd", "dragonfly", | ||||
| 		"solaris", "illumos": | ||||
| 		break | ||||
| 	default: | ||||
| 		return false | ||||
| 	} | ||||
| 	switch runtime.GOARCH { | ||||
| 	case "amd64": | ||||
| 		return cpu.X86.HasSSE41 | ||||
| 	case "arm64": | ||||
| 		return true | ||||
| 	default: | ||||
| 		return false | ||||
| 	} | ||||
| } | ||||
							
								
								
									
										15
									
								
								vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/ncruces/go-sqlite3/internal/util/mem.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -26,9 +26,6 @@ func View(mod api.Module, ptr Ptr_t, size int64) []byte { | |||
| 	if ptr == 0 { | ||||
| 		panic(NilErr) | ||||
| 	} | ||||
| 	if size == 0 { | ||||
| 		return nil | ||||
| 	} | ||||
| 	if uint64(size) > math.MaxUint32 { | ||||
| 		panic(RangeErr) | ||||
| 	} | ||||
|  | @ -110,6 +107,18 @@ func WriteFloat64(mod api.Module, ptr Ptr_t, v float64) { | |||
| 	Write64(mod, ptr, math.Float64bits(v)) | ||||
| } | ||||
| 
 | ||||
| func ReadBool(mod api.Module, ptr Ptr_t) bool { | ||||
| 	return Read32[int32](mod, ptr) != 0 | ||||
| } | ||||
| 
 | ||||
| func WriteBool(mod api.Module, ptr Ptr_t, v bool) { | ||||
| 	var i int32 | ||||
| 	if v { | ||||
| 		i = 1 | ||||
| 	} | ||||
| 	Write32(mod, ptr, i) | ||||
| } | ||||
| 
 | ||||
| func ReadString(mod api.Module, ptr Ptr_t, maxlen int64) string { | ||||
| 	if ptr == 0 { | ||||
| 		panic(NilErr) | ||||
|  |  | |||
							
								
								
									
										9
									
								
								vendor/github.com/ncruces/go-sqlite3/sqlite.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/ncruces/go-sqlite3/sqlite.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -47,11 +47,7 @@ func compileSQLite() { | |||
| 	ctx := context.Background() | ||||
| 	cfg := RuntimeConfig | ||||
| 	if cfg == nil { | ||||
| 		if util.CompilerSupported() { | ||||
| 			cfg = wazero.NewRuntimeConfigCompiler() | ||||
| 		} else { | ||||
| 			cfg = wazero.NewRuntimeConfigInterpreter() | ||||
| 		} | ||||
| 		cfg = wazero.NewRuntimeConfig() | ||||
| 		if bits.UintSize < 64 { | ||||
| 			cfg = cfg.WithMemoryLimitPages(512) // 32MB | ||||
| 		} else { | ||||
|  | @ -321,8 +317,7 @@ func exportCallbacks(env wazero.HostModuleBuilder) wazero.HostModuleBuilder { | |||
| 	util.ExportFuncVI(env, "go_destroy", destroyCallback) | ||||
| 	util.ExportFuncVIIII(env, "go_func", funcCallback) | ||||
| 	util.ExportFuncVIIIII(env, "go_step", stepCallback) | ||||
| 	util.ExportFuncVIII(env, "go_final", finalCallback) | ||||
| 	util.ExportFuncVII(env, "go_value", valueCallback) | ||||
| 	util.ExportFuncVIIII(env, "go_value", valueCallback) | ||||
| 	util.ExportFuncVIIII(env, "go_inverse", inverseCallback) | ||||
| 	util.ExportFuncVIIII(env, "go_collation_needed", collationCallback) | ||||
| 	util.ExportFuncIIIIII(env, "go_compare", compareCallback) | ||||
|  |  | |||
							
								
								
									
										11
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/cksm.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/cksm.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -47,11 +47,12 @@ type cksmFlags struct { | |||
| 
 | ||||
| func (c cksmFile) ReadAt(p []byte, off int64) (n int, err error) { | ||||
| 	n, err = c.File.ReadAt(p, off) | ||||
| 	p = p[:n] | ||||
| 
 | ||||
| 	// SQLite is reading the header of a database file. | ||||
| 	if c.isDB && off == 0 && len(p) >= 100 && | ||||
| 		bytes.HasPrefix(p, []byte("SQLite format 3\000")) { | ||||
| 		c.init(p) | ||||
| 		c.init((*[100]byte)(p)) | ||||
| 	} | ||||
| 
 | ||||
| 	// Verify checksums. | ||||
|  | @ -69,7 +70,7 @@ func (c cksmFile) WriteAt(p []byte, off int64) (n int, err error) { | |||
| 	// SQLite is writing the first page of a database file. | ||||
| 	if c.isDB && off == 0 && len(p) >= 100 && | ||||
| 		bytes.HasPrefix(p, []byte("SQLite format 3\000")) { | ||||
| 		c.init(p) | ||||
| 		c.init((*[100]byte)(p)) | ||||
| 	} | ||||
| 
 | ||||
| 	// Compute checksums. | ||||
|  | @ -122,12 +123,16 @@ func (c cksmFile) fileControl(ctx context.Context, mod api.Module, op _FcntlOpco | |||
| 	return vfsFileControlImpl(ctx, mod, c.File, op, pArg) | ||||
| } | ||||
| 
 | ||||
| func (f *cksmFlags) init(header []byte) { | ||||
| func (f *cksmFlags) init(header *[100]byte) { | ||||
| 	f.pageSize = 256 * int(binary.LittleEndian.Uint16(header[16:18])) | ||||
| 	if r := header[20] == 8; r != f.computeCksm { | ||||
| 		f.computeCksm = r | ||||
| 		f.verifyCksm = r | ||||
| 	} | ||||
| 	if !sql3util.ValidPageSize(f.pageSize) { | ||||
| 		f.computeCksm = false | ||||
| 		f.verifyCksm = false | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| func cksmCompute(a []byte) (cksm [8]byte) { | ||||
|  |  | |||
							
								
								
									
										3
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/const.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/const.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -31,6 +31,7 @@ const ( | |||
| 	_READONLY                _ErrorCode = util.READONLY | ||||
| 	_IOERR                   _ErrorCode = util.IOERR | ||||
| 	_NOTFOUND                _ErrorCode = util.NOTFOUND | ||||
| 	_FULL                    _ErrorCode = util.FULL | ||||
| 	_CANTOPEN                _ErrorCode = util.CANTOPEN | ||||
| 	_IOERR_READ              _ErrorCode = util.IOERR_READ | ||||
| 	_IOERR_SHORT_READ        _ErrorCode = util.IOERR_SHORT_READ | ||||
|  | @ -57,10 +58,12 @@ const ( | |||
| 	_IOERR_COMMIT_ATOMIC     _ErrorCode = util.IOERR_COMMIT_ATOMIC | ||||
| 	_IOERR_ROLLBACK_ATOMIC   _ErrorCode = util.IOERR_ROLLBACK_ATOMIC | ||||
| 	_IOERR_DATA              _ErrorCode = util.IOERR_DATA | ||||
| 	_IOERR_CORRUPTFS         _ErrorCode = util.IOERR_CORRUPTFS | ||||
| 	_BUSY_SNAPSHOT           _ErrorCode = util.BUSY_SNAPSHOT | ||||
| 	_CANTOPEN_FULLPATH       _ErrorCode = util.CANTOPEN_FULLPATH | ||||
| 	_CANTOPEN_ISDIR          _ErrorCode = util.CANTOPEN_ISDIR | ||||
| 	_READONLY_CANTINIT       _ErrorCode = util.READONLY_CANTINIT | ||||
| 	_READONLY_DIRECTORY      _ErrorCode = util.READONLY_DIRECTORY | ||||
| 	_OK_SYMLINK              _ErrorCode = util.OK_SYMLINK | ||||
| ) | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										23
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/file.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										23
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/file.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -88,10 +88,13 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error | |||
| 		oflags |= os.O_RDWR | ||||
| 	} | ||||
| 
 | ||||
| 	isCreate := flags&(OPEN_CREATE) != 0 | ||||
| 	isJournl := flags&(OPEN_MAIN_JOURNAL|OPEN_SUPER_JOURNAL|OPEN_WAL) != 0 | ||||
| 
 | ||||
| 	var err error | ||||
| 	var f *os.File | ||||
| 	if name == nil { | ||||
| 		f, err = os.CreateTemp("", "*.db") | ||||
| 		f, err = os.CreateTemp(os.Getenv("SQLITE_TMPDIR"), "*.db") | ||||
| 	} else { | ||||
| 		f, err = osutil.OpenFile(name.String(), oflags, 0666) | ||||
| 	} | ||||
|  | @ -102,6 +105,10 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error | |||
| 		if errors.Is(err, syscall.EISDIR) { | ||||
| 			return nil, flags, _CANTOPEN_ISDIR | ||||
| 		} | ||||
| 		if isCreate && isJournl && errors.Is(err, fs.ErrPermission) && | ||||
| 			osAccess(name.String(), ACCESS_EXISTS) != nil { | ||||
| 			return nil, flags, _READONLY_DIRECTORY | ||||
| 		} | ||||
| 		return nil, flags, err | ||||
| 	} | ||||
| 
 | ||||
|  | @ -119,10 +126,8 @@ func (vfsOS) OpenFilename(name *Filename, flags OpenFlag) (File, OpenFlag, error | |||
| 		File:     f, | ||||
| 		psow:     true, | ||||
| 		readOnly: flags&OPEN_READONLY != 0, | ||||
| 		syncDir: canSyncDirs && | ||||
| 			flags&(OPEN_MAIN_JOURNAL|OPEN_SUPER_JOURNAL|OPEN_WAL) != 0 && | ||||
| 			flags&(OPEN_CREATE) != 0, | ||||
| 		shm: NewSharedMemory(name.String()+"-shm", flags), | ||||
| 		syncDir:  canSyncDirs && isCreate && isJournl, | ||||
| 		shm:      NewSharedMemory(name.String()+"-shm", flags), | ||||
| 	} | ||||
| 	return &file, flags, nil | ||||
| } | ||||
|  | @ -154,6 +159,14 @@ func (f *vfsFile) Close() error { | |||
| 	return f.File.Close() | ||||
| } | ||||
| 
 | ||||
| func (f *vfsFile) ReadAt(p []byte, off int64) (n int, err error) { | ||||
| 	return osReadAt(f.File, p, off) | ||||
| } | ||||
| 
 | ||||
| func (f *vfsFile) WriteAt(p []byte, off int64) (n int, err error) { | ||||
| 	return osWriteAt(f.File, p, off) | ||||
| } | ||||
| 
 | ||||
| func (f *vfsFile) Sync(flags SyncFlag) error { | ||||
| 	dataonly := (flags & SYNC_DATAONLY) != 0 | ||||
| 	fullsync := (flags & 0x0f) == SYNC_FULL | ||||
|  |  | |||
							
								
								
									
										13
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/os_std_rw.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| //go:build !unix && (!windows || sqlite3_dotlk) | ||||
| 
 | ||||
| package vfs | ||||
| 
 | ||||
| import "os" | ||||
| 
 | ||||
| func osReadAt(file *os.File, p []byte, off int64) (int, error) { | ||||
| 	return file.ReadAt(p, off) | ||||
| } | ||||
| 
 | ||||
| func osWriteAt(file *os.File, p []byte, off int64) (int, error) { | ||||
| 	return file.WriteAt(p, off) | ||||
| } | ||||
							
								
								
									
										22
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/os_unix.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -25,6 +25,28 @@ func osAccess(path string, flags AccessFlag) error { | |||
| 	return unix.Access(path, access) | ||||
| } | ||||
| 
 | ||||
| func osReadAt(file *os.File, p []byte, off int64) (int, error) { | ||||
| 	n, err := file.ReadAt(p, off) | ||||
| 	if errno, ok := err.(unix.Errno); ok { | ||||
| 		switch errno { | ||||
| 		case | ||||
| 			unix.ERANGE, | ||||
| 			unix.EIO, | ||||
| 			unix.ENXIO: | ||||
| 			return n, _IOERR_CORRUPTFS | ||||
| 		} | ||||
| 	} | ||||
| 	return n, err | ||||
| } | ||||
| 
 | ||||
| func osWriteAt(file *os.File, p []byte, off int64) (int, error) { | ||||
| 	n, err := file.WriteAt(p, off) | ||||
| 	if errno, ok := err.(unix.Errno); ok && errno == unix.ENOSPC { | ||||
| 		return n, _FULL | ||||
| 	} | ||||
| 	return n, err | ||||
| } | ||||
| 
 | ||||
| func osSetMode(file *os.File, modeof string) error { | ||||
| 	fi, err := os.Stat(modeof) | ||||
| 	if err != nil { | ||||
|  |  | |||
							
								
								
									
										17
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/os_windows.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -9,6 +9,23 @@ import ( | |||
| 	"golang.org/x/sys/windows" | ||||
| ) | ||||
| 
 | ||||
| func osReadAt(file *os.File, p []byte, off int64) (int, error) { | ||||
| 	return file.ReadAt(p, off) | ||||
| } | ||||
| 
 | ||||
| func osWriteAt(file *os.File, p []byte, off int64) (int, error) { | ||||
| 	n, err := file.WriteAt(p, off) | ||||
| 	if errno, ok := err.(windows.Errno); ok { | ||||
| 		switch errno { | ||||
| 		case | ||||
| 			windows.ERROR_HANDLE_DISK_FULL, | ||||
| 			windows.ERROR_DISK_FULL: | ||||
| 			return n, _FULL | ||||
| 		} | ||||
| 	} | ||||
| 	return n, err | ||||
| } | ||||
| 
 | ||||
| func osGetSharedLock(file *os.File) _ErrorCode { | ||||
| 	// Acquire the PENDING lock temporarily before acquiring a new SHARED lock. | ||||
| 	rc := osReadLock(file, _PENDING_BYTE, 1, 0) | ||||
|  |  | |||
							
								
								
									
										51
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										51
									
								
								vendor/github.com/ncruces/go-sqlite3/vfs/vfs.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -58,13 +58,8 @@ func vfsFind(ctx context.Context, mod api.Module, zVfsName ptr_t) uint32 { | |||
| } | ||||
| 
 | ||||
| func vfsLocaltime(ctx context.Context, mod api.Module, pTm ptr_t, t int64) _ErrorCode { | ||||
| 	tm := time.Unix(t, 0) | ||||
| 	var isdst int32 | ||||
| 	if tm.IsDST() { | ||||
| 		isdst = 1 | ||||
| 	} | ||||
| 
 | ||||
| 	const size = 32 / 8 | ||||
| 	tm := time.Unix(t, 0) | ||||
| 	// https://pubs.opengroup.org/onlinepubs/7908799/xsh/time.h.html | ||||
| 	util.Write32(mod, pTm+0*size, int32(tm.Second())) | ||||
| 	util.Write32(mod, pTm+1*size, int32(tm.Minute())) | ||||
|  | @ -74,7 +69,7 @@ func vfsLocaltime(ctx context.Context, mod api.Module, pTm ptr_t, t int64) _Erro | |||
| 	util.Write32(mod, pTm+5*size, int32(tm.Year()-1900)) | ||||
| 	util.Write32(mod, pTm+6*size, int32(tm.Weekday()-time.Sunday)) | ||||
| 	util.Write32(mod, pTm+7*size, int32(tm.YearDay()-1)) | ||||
| 	util.Write32(mod, pTm+8*size, isdst) | ||||
| 	util.WriteBool(mod, pTm+8*size, tm.IsDST()) | ||||
| 	return _OK | ||||
| } | ||||
| 
 | ||||
|  | @ -123,11 +118,7 @@ func vfsAccess(ctx context.Context, mod api.Module, pVfs, zPath ptr_t, flags Acc | |||
| 	path := util.ReadString(mod, zPath, _MAX_PATHNAME) | ||||
| 
 | ||||
| 	ok, err := vfs.Access(path, flags) | ||||
| 	var res int32 | ||||
| 	if ok { | ||||
| 		res = 1 | ||||
| 	} | ||||
| 	util.Write32(mod, pResOut, res) | ||||
| 	util.WriteBool(mod, pResOut, ok) | ||||
| 	return vfsErrorCode(err, _IOERR_ACCESS) | ||||
| } | ||||
| 
 | ||||
|  | @ -151,9 +142,8 @@ func vfsOpen(ctx context.Context, mod api.Module, pVfs, zPath, pFile ptr_t, flag | |||
| 			file.SetPowersafeOverwrite(b) | ||||
| 		} | ||||
| 	} | ||||
| 	if file, ok := file.(FileSharedMemory); ok && | ||||
| 		pOutVFS != 0 && file.SharedMemory() != nil { | ||||
| 		util.Write32(mod, pOutVFS, int32(1)) | ||||
| 	if file, ok := file.(FileSharedMemory); ok && pOutVFS != 0 { | ||||
| 		util.WriteBool(mod, pOutVFS, file.SharedMemory() != nil) | ||||
| 	} | ||||
| 	if pOutFlags != 0 { | ||||
| 		util.Write32(mod, pOutFlags, flags) | ||||
|  | @ -225,12 +215,7 @@ func vfsUnlock(ctx context.Context, mod api.Module, pFile ptr_t, eLock LockLevel | |||
| func vfsCheckReservedLock(ctx context.Context, mod api.Module, pFile, pResOut ptr_t) _ErrorCode { | ||||
| 	file := vfsFileGet(ctx, mod, pFile).(File) | ||||
| 	locked, err := file.CheckReservedLock() | ||||
| 
 | ||||
| 	var res int32 | ||||
| 	if locked { | ||||
| 		res = 1 | ||||
| 	} | ||||
| 	util.Write32(mod, pResOut, res) | ||||
| 	util.WriteBool(mod, pResOut, locked) | ||||
| 	return vfsErrorCode(err, _IOERR_CHECKRESERVEDLOCK) | ||||
| } | ||||
| 
 | ||||
|  | @ -254,24 +239,20 @@ func vfsFileControlImpl(ctx context.Context, mod api.Module, file File, op _Fcnt | |||
| 
 | ||||
| 	case _FCNTL_PERSIST_WAL: | ||||
| 		if file, ok := file.(FilePersistWAL); ok { | ||||
| 			if i := util.Read32[int32](mod, pArg); i >= 0 { | ||||
| 				file.SetPersistWAL(i != 0) | ||||
| 			} else if file.PersistWAL() { | ||||
| 				util.Write32(mod, pArg, int32(1)) | ||||
| 			if i := util.Read32[int32](mod, pArg); i < 0 { | ||||
| 				util.WriteBool(mod, pArg, file.PersistWAL()) | ||||
| 			} else { | ||||
| 				util.Write32(mod, pArg, int32(0)) | ||||
| 				file.SetPersistWAL(i != 0) | ||||
| 			} | ||||
| 			return _OK | ||||
| 		} | ||||
| 
 | ||||
| 	case _FCNTL_POWERSAFE_OVERWRITE: | ||||
| 		if file, ok := file.(FilePowersafeOverwrite); ok { | ||||
| 			if i := util.Read32[int32](mod, pArg); i >= 0 { | ||||
| 				file.SetPowersafeOverwrite(i != 0) | ||||
| 			} else if file.PowersafeOverwrite() { | ||||
| 				util.Write32(mod, pArg, int32(1)) | ||||
| 			if i := util.Read32[int32](mod, pArg); i < 0 { | ||||
| 				util.WriteBool(mod, pArg, file.PowersafeOverwrite()) | ||||
| 			} else { | ||||
| 				util.Write32(mod, pArg, int32(0)) | ||||
| 				file.SetPowersafeOverwrite(i != 0) | ||||
| 			} | ||||
| 			return _OK | ||||
| 		} | ||||
|  | @ -293,11 +274,7 @@ func vfsFileControlImpl(ctx context.Context, mod api.Module, file File, op _Fcnt | |||
| 	case _FCNTL_HAS_MOVED: | ||||
| 		if file, ok := file.(FileHasMoved); ok { | ||||
| 			moved, err := file.HasMoved() | ||||
| 			var val uint32 | ||||
| 			if moved { | ||||
| 				val = 1 | ||||
| 			} | ||||
| 			util.Write32(mod, pArg, val) | ||||
| 			util.WriteBool(mod, pArg, moved) | ||||
| 			return vfsErrorCode(err, _IOERR_FSTAT) | ||||
| 		} | ||||
| 
 | ||||
|  | @ -394,7 +371,7 @@ func vfsFileControlImpl(ctx context.Context, mod api.Module, file File, op _Fcnt | |||
| 	case _FCNTL_LOCK_TIMEOUT: | ||||
| 		if file, ok := file.(FileSharedMemory); ok { | ||||
| 			if shm, ok := file.SharedMemory().(blockingSharedMemory); ok { | ||||
| 				shm.shmEnableBlocking(util.Read32[uint32](mod, pArg) != 0) | ||||
| 				shm.shmEnableBlocking(util.ReadBool(mod, pArg)) | ||||
| 				return _OK | ||||
| 			} | ||||
| 		} | ||||
|  |  | |||
							
								
								
									
										4
									
								
								vendor/github.com/ncruces/go-sqlite3/vtab.go
									
										
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/github.com/ncruces/go-sqlite3/vtab.go
									
										
									
										generated
									
									
										vendored
									
									
								
							|  | @ -399,10 +399,10 @@ func (idx *IndexInfo) save() { | |||
| 	util.Write32(mod, ptr+20, int32(idx.IdxNum)) | ||||
| 	if idx.IdxStr != "" { | ||||
| 		util.Write32(mod, ptr+24, idx.c.newString(idx.IdxStr)) | ||||
| 		util.Write32(mod, ptr+28, int32(1)) // needToFreeIdxStr | ||||
| 		util.WriteBool(mod, ptr+28, true) // needToFreeIdxStr | ||||
| 	} | ||||
| 	if idx.OrderByConsumed { | ||||
| 		util.Write32(mod, ptr+32, int32(1)) | ||||
| 		util.WriteBool(mod, ptr+32, true) | ||||
| 	} | ||||
| 	util.WriteFloat64(mod, ptr+40, idx.EstimatedCost) | ||||
| 	util.Write64(mod, ptr+48, idx.EstimatedRows) | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue