mattn
5df13a0e80
Merge pull request #1387 from mattn/codex/stmt-cache
...
[codex] add opt-in statement cache
2026-04-08 22:29:35 +09:00
Yasuhiro Matsumoto
e302e5cb8c
document that _stmt_cache_size is per connection
...
Clarify that each connection in the sql.DB pool maintains its own
independent statement cache.
2026-04-08 13:43:47 +09:00
Yasuhiro Matsumoto
867dcbfbdc
move reset/clear into putCachedStmt and always finalize on failure
...
This avoids an unnecessary reset when the cache is full, guarantees
a statement cannot enter the cache without being reset/cleared, and
fixes a leak where sqlite3_finalize was not called when reset failed.
2026-04-08 13:42:26 +09:00
Yasuhiro Matsumoto
0e58fa4d72
simplify prepareWithCache to call prepare instead of duplicating logic
...
prepareWithCache now delegates to prepare and sets cacheKey
afterward, removing the useCache boolean parameter.
2026-04-08 13:41:29 +09:00
Yasuhiro Matsumoto
e9f47da5c5
do not bail out on finalize error in closeCachedStmtsLocked
...
Finalize all cached statements even if one fails. Leaving a
finalized statement in the cache map would be a use-after-finalize
bug per SQLite documentation.
2026-04-08 13:40:21 +09:00
Yasuhiro Matsumoto
325cb8d5d9
remove redundant stmtCacheSize check in putCachedStmt
...
When stmtCacheSize <= 0, stmtCacheCount >= stmtCacheSize is always
true, so the explicit check is unnecessary.
2026-04-08 13:39:22 +09:00
Yasuhiro Matsumoto
061c2a5f43
check stmtCacheSize before acquiring mutex in takeCachedStmt
...
stmtCacheSize is immutable after connection open, so checking it
before the lock avoids mutex overhead when cache is not enabled.
2026-04-08 13:38:45 +09:00
Yasuhiro Matsumoto
efa9b1c75d
add opt-in statement cache
2026-04-07 14:08:53 +09:00
mattn
8d12439413
Merge pull request #1386 from mattn/perf/reduce-cgo-overhead
...
reduce CGO call overhead for exec and bind paths
2026-04-06 22:36:14 +09:00
Yasuhiro Matsumoto
89f4bbe489
fix build with SQLITE_ENABLE_UNLOCK_NOTIFY
...
Move extern declarations for _sqlite3_*_blocking functions before
_sqlite3_exec_no_args which references them. Remove unused
_sqlite3_prepare_v2_nolen function.
2026-04-06 22:29:28 +09:00
Yasuhiro Matsumoto
49540487ae
reduce CGO call overhead for exec and bind paths
...
- Add _sqlite3_exec_no_args() C function that combines prepare+step+finalize
into a single CGO crossing for parameterless exec (most common case)
- Add _sqlite3_reset_clear() C function that combines sqlite3_reset and
sqlite3_clear_bindings into a single CGO crossing
- Use semaphore channel instead of result struct channel in context-aware
exec/Next paths to reduce allocations
- Use time.AppendFormat with stack buffer to avoid heap allocation in
time.Time binding
- Optimize bindNamedIndices to reuse a single buffer instead of 3
separate C.CString allocations
- Remove intermediate bindIndices slice allocation in named parameter
binding path
- Pass explicit query length to sqlite3_prepare_v2 to avoid C-side strlen
benchstat (n=8):
BenchmarkExec: -29.44% sec/op, -50% B/op, -33% allocs/op
BenchmarkQuery: -9.83% sec/op
BenchmarkParams: -6.38% sec/op
geomean: -6.72% sec/op
2026-04-06 22:22:20 +09:00
mattn
4a311ff7de
Merge pull request #1385 from mattn/perf/reduce-bind-overhead
...
Reduce sqlite bind overhead
2026-04-06 21:38:56 +09:00
Yasuhiro Matsumoto
61c5b98535
reduce sqlite bind overhead
2026-04-06 21:30:35 +09:00
mattn
f92973809d
Merge pull request #1384 from mattn/raise-go121-cleanup
...
Raise minimum Go version to 1.21
2026-04-03 22:09:55 +09:00
Yasuhiro Matsumoto
efae5e7686
raise minimum Go version to 1.21
2026-04-03 17:41:32 +09:00
mattn
b23d54cb76
Merge pull request #1383 from mattn/codex/next-row-batch-fetch
...
[codex] batch row column fetches in Next
2026-04-03 17:39:28 +09:00
Yasuhiro Matsumoto
e1557be6ce
batch row column fetches in Next
2026-04-03 12:47:30 +09:00
mattn
cc39db7160
Merge pull request #1382 from mattn/codex/sqlite3-bind-fastpath
...
[codex] optimize sqlite bind fast path
2026-04-03 12:00:00 +09:00
Yasuhiro Matsumoto
9a908a9fd0
optimize sqlite bind fast path
2026-04-03 11:47:49 +09:00
mattn
edadafaf61
Merge pull request #1381 from mattn/eliminate-bounds-checks
...
Eliminate unnecessary bounds checks in hot paths
2026-03-30 12:57:50 +09:00
Yasuhiro Matsumoto
8f9f86ea43
Eliminate unnecessary bounds checks in hot paths
...
- Replace len(args[start:start+na]) > 0 with na > 0 to avoid slice bounds check
- Use range loops instead of manual index loops for cols/decltype slices
- Use range variable v.Ordinal instead of re-indexing args[i].Ordinal
- Add bounds hint for decltype access in nextSyncLocked loop
2026-03-30 12:48:09 +09:00
mattn
0d2388125f
Merge pull request #1379 from theimpostor/pr-1322-missing-constraint-op-types
...
Add missing virtual table constraint op constants
2026-03-19 13:39:43 +09:00
theimpostor
84bdc43851
add missing index constraint op types
2026-03-18 17:40:17 -05:00
mattn
57e50071ab
Merge pull request #1313 from Jaculabilis/json-example
...
Fix json example
2026-03-17 02:31:23 +09:00
Yasuhiro Matsumoto
bb8d0b2a05
Bump Go test matrix versions from 1.23-1.25 to 1.24-1.26
2026-03-17 02:19:02 +09:00
Yasuhiro Matsumoto
bc7436edad
Bump GitHub Actions versions to latest
2026-03-17 02:19:02 +09:00
Yasuhiro Matsumoto
0f12d4e815
Ensure Close always removes runtime finalizer to prevent memory leak
...
Fixes #1319
2026-03-17 02:19:02 +09:00
Yasuhiro Matsumoto
d71eda82d4
Fix upgrade.sh: add already-up-to-date check and fix changelog URL format
2026-03-17 01:41:11 +09:00
Yasuhiro Matsumoto
4ea2a9fb44
Upgrade SQLite to version 3051003
2026-03-17 01:41:11 +09:00
Yasuhiro Matsumoto
8c99a68554
Call sqlite3_clear_bindings() in bind() to reset parameters
...
Closes #1063
2026-03-17 01:23:59 +09:00
Yasuhiro Matsumoto
5a1f4d3045
use unsafe.Slice
2026-03-04 09:27:38 +09:00
Yasuhiro Matsumoto
8366a001c1
create pull-request
2026-03-04 09:14:31 +09:00
Yasuhiro Matsumoto
208733130e
add script to create pull-request
2026-01-16 17:19:36 +09:00
Yasuhiro Matsumoto
a5108832c7
Upgrade SQLite to version 3051002
2026-01-16 17:19:17 +09:00
Daniël Sonck
dce6b34a89
Add percentile extension
2026-01-01 23:03:41 +09:00
Yasuhiro Matsumoto
3c885a9512
Upgrade SQLite to version 3051001
2026-01-01 23:00:27 +09:00
Yasuhiro Matsumoto
3e773a9be5
update github workflows
2026-01-01 22:56:17 +09:00
Yasuhiro Matsumoto
2f6a2bbbfd
fix upgrade script
2026-01-01 22:44:09 +09:00
Yasuhiro Matsumoto
aa7cdd300f
update upgrade script
2026-01-01 22:32:40 +09:00
nautaa
a66908a543
use quote include instead of angled include for sqlite3-binding.h
2025-11-10 13:41:25 +09:00
Yasuhiro Matsumoto
8bf7a8a844
update amalgamation code
2025-08-14 21:57:30 +09:00
Eray Tufan
2e165e0718
fix syntax error
2025-08-11 23:08:54 +09:00
Yasuhiro Matsumoto
e63a0c3f5b
fix test
2025-07-30 20:51:05 +09:00
Yasuhiro Matsumoto
a9775d4d98
return error
2025-07-30 20:51:05 +09:00
Yasuhiro Matsumoto
c857a95a18
drop call of AuthEnabled()
2025-07-30 20:51:05 +09:00
Yasuhiro Matsumoto
eb86f084da
check authEnabled
2025-07-30 20:51:05 +09:00
Yasuhiro Matsumoto
4372bf2fb0
enable test for sqlite_userauth but it is dropped at least
2025-07-30 20:51:05 +09:00
Yasuhiro Matsumoto
69a843e67f
fix GitHub workflow
2025-07-30 20:51:05 +09:00
Yasuhiro Matsumoto
4c1ac1eb24
fix GitHub workflow
2025-07-30 20:51:05 +09:00
Yasuhiro Matsumoto
a8be3f8183
fix GitHub workflow
2025-07-30 20:51:05 +09:00