File tree 9 files changed +29
-34
lines changed
9 files changed +29
-34
lines changed Original file line number Diff line number Diff line change @@ -4,15 +4,14 @@ go 1.21
4
4
5
5
require (
6
6
github.com/ncruces/julianday v1.0.0
7
+ github.com/ncruces/sort v0.1.2
7
8
github.com/psanford/httpreadat v0.1.0
8
- github.com/tetratelabs/wazero v1.7.2
9
+ github.com/tetratelabs/wazero v1.7.3
9
10
golang.org/x/crypto v0.24.0
10
11
golang.org/x/sync v0.7.0
11
12
golang.org/x/sys v0.21.0
12
13
golang.org/x/text v0.16.0
13
14
lukechampine.com/adiantum v1.1.1
14
15
)
15
16
16
- require github.com/ncruces/sort v0.1.2
17
-
18
17
retract v0.4.0 // tagged from the wrong branch
Original file line number Diff line number Diff line change @@ -4,8 +4,8 @@ github.com/ncruces/sort v0.1.2 h1:zKQ9CA4fpHPF6xsUhRTfi5EEryspuBpe/QA4VWQOV1U=
4
4
github.com/ncruces/sort v0.1.2 /go.mod h1:vEJUTBJtebIuCMmXD18GKo5GJGhsay+xZFOoBEIXFmE =
5
5
github.com/psanford/httpreadat v0.1.0 h1:VleW1HS2zO7/4c7c7zNl33fO6oYACSagjJIyMIwZLUE =
6
6
github.com/psanford/httpreadat v0.1.0 /go.mod h1:Zg7P+TlBm3bYbyHTKv/EdtSJZn3qwbPwpfZ/I9GKCRE =
7
- github.com/tetratelabs/wazero v1.7.2 h1:1+z5nXJNwMLPAWaTePFi49SSTL0IMx/i3Fg8Yc25GDc =
8
- github.com/tetratelabs/wazero v1.7.2 /go.mod h1:ytl6Zuh20R/eROuyDaGPkp82O9C/DJfXAwJfQ3X6/7Y =
7
+ github.com/tetratelabs/wazero v1.7.3 h1:PBH5KVahrt3S2AHgEjKu4u+LlDbbk+nsGE3KLucy6Rw =
8
+ github.com/tetratelabs/wazero v1.7.3 /go.mod h1:ytl6Zuh20R/eROuyDaGPkp82O9C/DJfXAwJfQ3X6/7Y =
9
9
golang.org/x/crypto v0.24.0 h1:mnl8DM0o513X8fdIkmyFE/5hTYxbwYOjDS/+rK6qpRI =
10
10
golang.org/x/crypto v0.24.0 /go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM =
11
11
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M =
Original file line number Diff line number Diff line change @@ -11,6 +11,6 @@ require (
11
11
github.com/jinzhu/inflection v1.0.0 // indirect
12
12
github.com/jinzhu/now v1.1.5 // indirect
13
13
github.com/ncruces/julianday v1.0.0 // indirect
14
- github.com/tetratelabs/wazero v1.7.2 // indirect
14
+ github.com/tetratelabs/wazero v1.7.3 // indirect
15
15
golang.org/x/sys v0.21.0 // indirect
16
16
)
Original file line number Diff line number Diff line change @@ -6,8 +6,8 @@ github.com/ncruces/go-sqlite3 v0.16.1 h1:1wHv7s8y+fWK44UIliotJ42ZV41A5T0sjIAqGmn
6
6
github.com/ncruces/go-sqlite3 v0.16.1 /go.mod h1:feFXbBcbLtxNk6XWG1ROt8MS9+E45yCW3G8o4ixIqZ8 =
7
7
github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M =
8
8
github.com/ncruces/julianday v1.0.0 /go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g =
9
- github.com/tetratelabs/wazero v1.7.2 h1:1+z5nXJNwMLPAWaTePFi49SSTL0IMx/i3Fg8Yc25GDc =
10
- github.com/tetratelabs/wazero v1.7.2 /go.mod h1:ytl6Zuh20R/eROuyDaGPkp82O9C/DJfXAwJfQ3X6/7Y =
9
+ github.com/tetratelabs/wazero v1.7.3 h1:PBH5KVahrt3S2AHgEjKu4u+LlDbbk+nsGE3KLucy6Rw =
10
+ github.com/tetratelabs/wazero v1.7.3 /go.mod h1:ytl6Zuh20R/eROuyDaGPkp82O9C/DJfXAwJfQ3X6/7Y =
11
11
golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws =
12
12
golang.org/x/sys v0.21.0 /go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA =
13
13
golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4 =
Original file line number Diff line number Diff line change @@ -26,7 +26,7 @@ func (j JSON) Scan(value any) error {
26
26
buf = v .AppendFormat (buf , time .RFC3339Nano )
27
27
buf = append (buf , '"' )
28
28
case nil :
29
- buf = append ( buf , "null" ... )
29
+ buf = [] byte ( "null" )
30
30
default :
31
31
panic (AssertErr ())
32
32
}
Original file line number Diff line number Diff line change @@ -564,7 +564,7 @@ func (s *Stmt) ColumnJSON(col int, ptr any) error {
564
564
var data []byte
565
565
switch s .ColumnType (col ) {
566
566
case NULL :
567
- data = append ( data , "null" ... )
567
+ data = [] byte ( "null" )
568
568
case TEXT :
569
569
data = s .ColumnRawText (col )
570
570
case BLOB :
Original file line number Diff line number Diff line change @@ -177,7 +177,7 @@ func (v Value) JSON(ptr any) error {
177
177
var data []byte
178
178
switch v .Type () {
179
179
case NULL :
180
- data = append ( data , "null" ... )
180
+ data = [] byte ( "null" )
181
181
case TEXT :
182
182
data = v .RawText ()
183
183
case BLOB :
Original file line number Diff line number Diff line change @@ -75,11 +75,6 @@ func (memVFS) FullPathname(name string) (string, error) {
75
75
type memDB struct {
76
76
name string
77
77
78
- // +checklocks:lockMtx
79
- pending * memFile
80
- // +checklocks:lockMtx
81
- reserved * memFile
82
-
83
78
// +checklocks:dataMtx
84
79
data []* [sectorSize ]byte
85
80
@@ -88,6 +83,10 @@ type memDB struct {
88
83
89
84
// +checklocks:lockMtx
90
85
shared int
86
+ // +checklocks:lockMtx
87
+ reserved bool
88
+ // +checklocks:lockMtx
89
+ pending bool
91
90
92
91
// +checklocks:memoryMtx
93
92
refs int
@@ -214,24 +213,24 @@ func (m *memFile) Lock(lock vfs.LockLevel) error {
214
213
215
214
switch lock {
216
215
case vfs .LOCK_SHARED :
217
- if m .pending != nil {
216
+ if m .pending {
218
217
return sqlite3 .BUSY
219
218
}
220
219
m .shared ++
221
220
222
221
case vfs .LOCK_RESERVED :
223
- if m .reserved != nil {
222
+ if m .reserved {
224
223
return sqlite3 .BUSY
225
224
}
226
- m .reserved = m
225
+ m .reserved = true
227
226
228
227
case vfs .LOCK_EXCLUSIVE :
229
228
if m .lock < vfs .LOCK_PENDING {
230
- if m .pending != nil {
229
+ if m .pending {
231
230
return sqlite3 .BUSY
232
231
}
233
232
m .lock = vfs .LOCK_PENDING
234
- m .pending = m
233
+ m .pending = true
235
234
}
236
235
237
236
for before := time .Now (); m .shared > 1 ; {
@@ -256,11 +255,11 @@ func (m *memFile) Unlock(lock vfs.LockLevel) error {
256
255
m .lockMtx .Lock ()
257
256
defer m .lockMtx .Unlock ()
258
257
259
- if m .pending == m {
260
- m .pending = nil
258
+ if m .pending && m . lock >= vfs . LOCK_PENDING {
259
+ m .pending = false
261
260
}
262
- if m .reserved == m {
263
- m .reserved = nil
261
+ if m .reserved && m . lock >= vfs . LOCK_RESERVED {
262
+ m .reserved = false
264
263
}
265
264
if lock < vfs .LOCK_SHARED {
266
265
m .shared --
@@ -275,7 +274,7 @@ func (m *memFile) CheckReservedLock() (bool, error) {
275
274
}
276
275
m .lockMtx .Lock ()
277
276
defer m .lockMtx .Unlock ()
278
- return m .reserved != nil , nil
277
+ return m .reserved , nil
279
278
}
280
279
281
280
func (m * memFile ) SectorSize () int {
Original file line number Diff line number Diff line change @@ -101,13 +101,13 @@ func (s *vfsShm) shmOpen() (rc _ErrorCode) {
101
101
return _OK
102
102
}
103
103
104
- // Open file read-write, as it will be shared.
104
+ // Always open file read-write, as it will be shared.
105
105
f , err := os .OpenFile (s .path ,
106
106
unix .O_RDWR | unix .O_CREAT | unix .O_NOFOLLOW , 0666 )
107
107
if err != nil {
108
108
return _CANTOPEN
109
109
}
110
- // Close if file if it's not nil.
110
+ // Closes file if it's not nil.
111
111
defer func () { f .Close () }()
112
112
113
113
fi , err := f .Stat ()
@@ -145,17 +145,14 @@ func (s *vfsShm) shmOpen() (rc _ErrorCode) {
145
145
info : fi ,
146
146
refs : 1 ,
147
147
}
148
- f = nil
149
- add := true
148
+ f = nil // Don't close the file.
150
149
for i , g := range vfsShmFiles {
151
150
if g == nil {
152
151
vfsShmFiles [i ] = s .vfsShmFile
153
- add = false
152
+ return rc
154
153
}
155
154
}
156
- if add {
157
- vfsShmFiles = append (vfsShmFiles , s .vfsShmFile )
158
- }
155
+ vfsShmFiles = append (vfsShmFiles , s .vfsShmFile )
159
156
return rc
160
157
}
161
158
You can’t perform that action at this time.
0 commit comments