summaryrefslogtreecommitdiff
path: root/vendor/github.com/ncruces/go-sqlite3
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/ncruces/go-sqlite3')
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/internal/util/json.go2
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/json.go3
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/pointer.go3
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/stmt.go2
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/value.go2
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go29
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/vfs/shm.go3
-rw-r--r--vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go16
8 files changed, 32 insertions, 28 deletions
diff --git a/vendor/github.com/ncruces/go-sqlite3/internal/util/json.go b/vendor/github.com/ncruces/go-sqlite3/internal/util/json.go
index c0ba38cf0..7f6849a42 100644
--- a/vendor/github.com/ncruces/go-sqlite3/internal/util/json.go
+++ b/vendor/github.com/ncruces/go-sqlite3/internal/util/json.go
@@ -26,7 +26,7 @@ func (j JSON) Scan(value any) error {
buf = v.AppendFormat(buf, time.RFC3339Nano)
buf = append(buf, '"')
case nil:
- buf = append(buf, "null"...)
+ buf = []byte("null")
default:
panic(AssertErr())
}
diff --git a/vendor/github.com/ncruces/go-sqlite3/json.go b/vendor/github.com/ncruces/go-sqlite3/json.go
index 9b2565e87..2b762c092 100644
--- a/vendor/github.com/ncruces/go-sqlite3/json.go
+++ b/vendor/github.com/ncruces/go-sqlite3/json.go
@@ -5,7 +5,8 @@ import "github.com/ncruces/go-sqlite3/internal/util"
// JSON returns a value that can be used as an argument to
// [database/sql.DB.Exec], [database/sql.Row.Scan] and similar methods to
// store value as JSON, or decode JSON into value.
-// JSON should NOT be used with [BindJSON] or [ResultJSON].
+// JSON should NOT be used with [Stmt.BindJSON], [Stmt.ColumnJSON],
+// [Value.JSON], or [Context.ResultJSON].
func JSON(value any) any {
return util.JSON{Value: value}
}
diff --git a/vendor/github.com/ncruces/go-sqlite3/pointer.go b/vendor/github.com/ncruces/go-sqlite3/pointer.go
index 611c1528c..0e2418b99 100644
--- a/vendor/github.com/ncruces/go-sqlite3/pointer.go
+++ b/vendor/github.com/ncruces/go-sqlite3/pointer.go
@@ -4,7 +4,8 @@ import "github.com/ncruces/go-sqlite3/internal/util"
// Pointer returns a pointer to a value that can be used as an argument to
// [database/sql.DB.Exec] and similar methods.
-// Pointer should NOT be used with [BindPointer] or [ResultPointer].
+// Pointer should NOT be used with [Stmt.BindPointer],
+// [Value.Pointer], or [Context.ResultPointer].
//
// https://sqlite.org/bindptr.html
func Pointer[T any](value T) any {
diff --git a/vendor/github.com/ncruces/go-sqlite3/stmt.go b/vendor/github.com/ncruces/go-sqlite3/stmt.go
index ac40e3802..381a7d06b 100644
--- a/vendor/github.com/ncruces/go-sqlite3/stmt.go
+++ b/vendor/github.com/ncruces/go-sqlite3/stmt.go
@@ -564,7 +564,7 @@ func (s *Stmt) ColumnJSON(col int, ptr any) error {
var data []byte
switch s.ColumnType(col) {
case NULL:
- data = append(data, "null"...)
+ data = []byte("null")
case TEXT:
data = s.ColumnRawText(col)
case BLOB:
diff --git a/vendor/github.com/ncruces/go-sqlite3/value.go b/vendor/github.com/ncruces/go-sqlite3/value.go
index d0edf215b..1894ff4f1 100644
--- a/vendor/github.com/ncruces/go-sqlite3/value.go
+++ b/vendor/github.com/ncruces/go-sqlite3/value.go
@@ -177,7 +177,7 @@ func (v Value) JSON(ptr any) error {
var data []byte
switch v.Type() {
case NULL:
- data = append(data, "null"...)
+ data = []byte("null")
case TEXT:
data = v.RawText()
case BLOB:
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go b/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go
index 8dc57ab9c..f21335d8e 100644
--- a/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go
+++ b/vendor/github.com/ncruces/go-sqlite3/vfs/memdb/memdb.go
@@ -75,11 +75,6 @@ func (memVFS) FullPathname(name string) (string, error) {
type memDB struct {
name string
- // +checklocks:lockMtx
- pending *memFile
- // +checklocks:lockMtx
- reserved *memFile
-
// +checklocks:dataMtx
data []*[sectorSize]byte
@@ -88,6 +83,10 @@ type memDB struct {
// +checklocks:lockMtx
shared int
+ // +checklocks:lockMtx
+ reserved bool
+ // +checklocks:lockMtx
+ pending bool
// +checklocks:memoryMtx
refs int
@@ -214,24 +213,24 @@ func (m *memFile) Lock(lock vfs.LockLevel) error {
switch lock {
case vfs.LOCK_SHARED:
- if m.pending != nil {
+ if m.pending {
return sqlite3.BUSY
}
m.shared++
case vfs.LOCK_RESERVED:
- if m.reserved != nil {
+ if m.reserved {
return sqlite3.BUSY
}
- m.reserved = m
+ m.reserved = true
case vfs.LOCK_EXCLUSIVE:
if m.lock < vfs.LOCK_PENDING {
- if m.pending != nil {
+ if m.pending {
return sqlite3.BUSY
}
m.lock = vfs.LOCK_PENDING
- m.pending = m
+ m.pending = true
}
for before := time.Now(); m.shared > 1; {
@@ -256,11 +255,11 @@ func (m *memFile) Unlock(lock vfs.LockLevel) error {
m.lockMtx.Lock()
defer m.lockMtx.Unlock()
- if m.pending == m {
- m.pending = nil
+ if m.pending && m.lock >= vfs.LOCK_PENDING {
+ m.pending = false
}
- if m.reserved == m {
- m.reserved = nil
+ if m.reserved && m.lock >= vfs.LOCK_RESERVED {
+ m.reserved = false
}
if lock < vfs.LOCK_SHARED {
m.shared--
@@ -275,7 +274,7 @@ func (m *memFile) CheckReservedLock() (bool, error) {
}
m.lockMtx.Lock()
defer m.lockMtx.Unlock()
- return m.reserved != nil, nil
+ return m.reserved, nil
}
func (m *memFile) SectorSize() int {
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/shm.go b/vendor/github.com/ncruces/go-sqlite3/vfs/shm.go
index 58da34df4..7b0d4b677 100644
--- a/vendor/github.com/ncruces/go-sqlite3/vfs/shm.go
+++ b/vendor/github.com/ncruces/go-sqlite3/vfs/shm.go
@@ -125,6 +125,9 @@ func (s *vfsShm) shmMap(ctx context.Context, mod api.Module, id, size int32, ext
return 0, _IOERR_SHMMAP
}
s.regions = append(s.regions, r)
+ if s.readOnly {
+ return r.Ptr, _READONLY
+ }
return r.Ptr, _OK
}
diff --git a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go
index 3b45b3087..8c2abee81 100644
--- a/vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go
+++ b/vendor/github.com/ncruces/go-sqlite3/vfs/shm_bsd.go
@@ -101,13 +101,13 @@ func (s *vfsShm) shmOpen() (rc _ErrorCode) {
return _OK
}
- // Open file read-write, as it will be shared.
+ // Always open file read-write, as it will be shared.
f, err := os.OpenFile(s.path,
unix.O_RDWR|unix.O_CREAT|unix.O_NOFOLLOW, 0666)
if err != nil {
return _CANTOPEN
}
- // Close if file if it's not nil.
+ // Closes file if it's not nil.
defer func() { f.Close() }()
fi, err := f.Stat()
@@ -145,17 +145,14 @@ func (s *vfsShm) shmOpen() (rc _ErrorCode) {
info: fi,
refs: 1,
}
- f = nil
- add := true
+ f = nil // Don't close the file.
for i, g := range vfsShmFiles {
if g == nil {
vfsShmFiles[i] = s.vfsShmFile
- add = false
+ return rc
}
}
- if add {
- vfsShmFiles = append(vfsShmFiles, s.vfsShmFile)
- }
+ vfsShmFiles = append(vfsShmFiles, s.vfsShmFile)
return rc
}
@@ -195,6 +192,9 @@ func (s *vfsShm) shmMap(ctx context.Context, mod api.Module, id, size int32, ext
return 0, _IOERR_SHMMAP
}
s.regions = append(s.regions, r)
+ if s.readOnly {
+ return r.Ptr, _READONLY
+ }
return r.Ptr, _OK
}