Trevor Burnham
76aeacf687
sqlite: keep sessions alive across SQLite callbacks
...
Session objects are weak and nothing else holds a strong reference to
them, so a garbage collection can free one while SQLite is still using
it. SQLite runs "PRAGMA table_xinfo" from inside its pre-update hook,
which reaches JavaScript, so a GC during a callback invoked from there
can collect a session the hook is still walking.
Hold a strong reference to every attached session for the duration of
each callback SQLite invokes. The trace callback now enters that guard
before building its payload, since the allocation can itself trigger a
garbage collection.
Fixes: https://github.com/nodejs/node/issues/65460
Signed-off-by: Trevor Burnham <trevorburnham@gmail.com >
PR-URL: https://github.com/nodejs/node/pull/65465
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
2026-08-28 21:19:18 +00:00
Trivikram Kamat
37e66c41a4
sqlite: remove unused column name helper
...
Remove the unused column name helper from StatementExecutionHelper.
It became unused after all() and get() switched to cached names.
Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com >
PR-URL: https://github.com/nodejs/node/pull/65401
Refs: https://github.com/nodejs/node/pull/65276
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
2026-08-21 14:19:45 +00:00
Trivikram Kamat
c2543d9301
sqlite: reject busy statement finalization in authorizer
...
An iterator can leave a statement active between sqlite3_step() calls.
Finalizing that statement from an authorizer callback can release its
locks and change the outcome of the statement being authorized.
Reject close() and Symbol.dispose when the statement is busy and the
connection is in an authorizer callback. Continue allowing idle
statements to be finalized.
Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com >
Assisted-by: codex:gpt-5.6-sol
PR-URL: https://github.com/nodejs/node/pull/65369
Fixes: https://github.com/nodejs/node/issues/65368
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com >
2026-08-21 03:30:10 +00:00
James M Snell
9f0ce45fe4
src: fixup manual new/delete usages
...
Signed-off-by: James M Snell <jasnell@gmail.com >
Assisted-by: Opencode/Opus
PR-URL: https://github.com/nodejs/node/pull/65348
Reviewed-By: Robert Nagy <ronagy@icloud.com >
Reviewed-By: Daeyeon Jeong <daeyeon.dev@gmail.com >
2026-08-20 13:03:25 -07:00
Trivikram Kamat
d6bbf5799f
sqlite: prevent reentrant session.close()
...
Reject session.close() while generating a changeset or patchset.
Closing the session at that point frees it while SQLite is still
using it, causing a use-after-free.
Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com >
Assisted-by: codex:gpt-5.6-sol
PR-URL: https://github.com/nodejs/node/pull/65349
Fixes: https://github.com/nodejs/node/issues/65347
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com >
2026-08-19 06:42:46 +00:00
Edy Silva
cf30b2e2c7
sqlite: reuse cached column names in statement all() and get()
...
Signed-off-by: geeksilva97 <edigleyssonsilva@gmail.com >
PR-URL: https://github.com/nodejs/node/pull/65276
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
2026-08-18 06:21:03 +00:00
Guilherme Araújo
c7b962c222
sqlite: add diagnostic channel
...
Signed-off-by: Guilherme Araújo <arauujogui@gmail.com >
PR-URL: https://github.com/nodejs/node/pull/62241
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com >
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
2026-08-15 19:42:37 +00:00
Trevor Burnham
c4b755ee00
sqlite: reject connection access from authorizer callbacks
...
SQLite requires that an authorizer callback not modify the connection
that invoked it, and counts sqlite3_prepare_v2() and sqlite3_step() as
modifications. node:sqlite let the callback call prepare(), exec(), the
statement execution methods, and other connection-mutating APIs on the
same DatabaseSync. Track authorizer depth on DatabaseSync with an RAII
guard around the callback and throw ERR_INVALID_STATE from the affected
entry points while it is on the stack. Covering every authorizer
invocation, including the re-prepare that SQLite can run during
sqlite3_step(), exposed a second and distinct hazard: reentering a
statement that is currently being stepped is a use-after-free rather
than a contract violation, since finalizing it frees the virtual machine
under sqlite3_step() and re-running it resets that machine
mid-execution. Any callback SQLite invokes during execution can reach
it, so a user-defined function is enough. Track the statements currently
being stepped and reject reentry into only those, which leaves a
user-defined function free to prepare, run, and finalize its own helper
statements.
Signed-off-by: Trevor Burnham <trevorburnham@gmail.com >
Fixes: https://github.com/nodejs/node/issues/63207
Assisted-by: claude:opus-5
PR-URL: https://github.com/nodejs/node/pull/65156
Reviewed-By: Xuguang Mei <meixuguang@gmail.com >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
2026-08-14 21:43:35 +00:00
Edy Silva
f46e96fe54
sqlite: expose prepared statement statistics
...
Signed-off-by: geeksilva97 <edigleyssonsilva@gmail.com >
PR-URL: https://github.com/nodejs/node/pull/64541
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
2026-08-13 13:59:56 +00:00
Guilherme Araújo
b0edc373a6
sqlite: manage sqlite3_stmt lifetime with RAII
...
Signed-off-by: Guilherme Araújo <arauujogui@gmail.com >
PR-URL: https://github.com/nodejs/node/pull/62419
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
2026-08-11 23:47:37 +00:00
Ali Hassan
347e266187
sqlite: refactor error helpers and user function pointers
...
Signed-off-by: Ali Hassan <ali-hassan27@outlook.com >
PR-URL: https://github.com/nodejs/node/pull/62794
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2026-08-08 13:54:01 +00:00
Matteo Collina
8fc73417fb
sqlite: clear SQLTagStore bindings
...
SQLTagStore reused cached statements without clearing values bound by a
previous execution. Clear bindings before binding new values and reject
parameters that do not correspond to template substitutions.
Signed-off-by: Matteo Collina <hello@matteocollina.com >
PR-URL: https://github.com/nodejs/node/pull/65041
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com >
2026-08-07 09:16:50 +00:00
Guilherme Araújo
51c0d94072
sqlite: add StatementSync.prototype.close()
...
Signed-off-by: Guilherme Araújo <arauujogui@gmail.com >
PR-URL: https://github.com/nodejs/node/pull/64232
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
2026-08-05 18:10:35 -07:00
Guilherme Araújo
04c104a725
sqlite: add StatementSync.prototype[Symbol.dispose]()
...
This extends explicit resource management support to prepared
statements, allowing a StatementSync to be deterministically
finalized via a `using` declaration, mirroring the existing
DatabaseSync and Session dispose methods.
Signed-off-by: Guilherme Araújo <arauujogui@gmail.com >
PR-URL: https://github.com/nodejs/node/pull/64232
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
2026-08-05 18:10:31 -07:00
Matteo Collina and Asroy Cristian Sitorus
5cef7673ae
sqlite: prevent database close during callbacks
...
Co-authored-by: Asroy Cristian Sitorus <asroycristiansitorus@gmail.com >
Signed-off-by: Matteo Collina <hello@matteocollina.com >
PR-URL: https://github.com/nodejs/node/pull/64743
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2026-08-04 11:05:47 +00:00
Trivikram Kamat
f00fb75051
sqlite: invalidate sessions when closing database
...
DatabaseSync::DeleteSessions() deleted native sqlite3_session handles
without clearing the pointers held by their Session wrappers. Reopening
the database allowed stale session handles to be used, crashing the
process.
Track Session wrappers and delete sessions through Session::Delete() so
the wrappers are marked closed.
Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com >
Assisted-by: codex:gpt-5.6-sol
PR-URL: https://github.com/nodejs/node/pull/64783
Fixes: https://github.com/nodejs/node/issues/64782
Reviewed-By: Aviv Keller <me@aviv.sh >
2026-08-03 19:34:01 +00:00
Mohamed Sayed
d4d35c6363
sqlite: fix crash when a session outlives its database
...
Keep the database alive while a session is open so that closing the
database before the session does not leave the session pointing at
freed memory.
Signed-off-by: Mohamed Sayed <k@3zrv.com >
PR-URL: https://github.com/nodejs/node/pull/63797
Fixes: https://github.com/nodejs/node/issues/63796
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
2026-07-26 01:43:30 +00:00
Ali Hassan
ef8f8f886c
sqlite: use OneByte for ASCII text and internalize col names
...
Use simdutf to detect ASCII text values and create them
via NewFromOneByte for compact one-byte representation.
Internalize column name strings with kInternalized so V8
shares hidden classes across row objects. Cache column
names on StatementSync for iterate(), invalidated via
SQLITE_STMTSTATUS_REPREPARE on schema changes.
Refs: https://github.com/nodejs/performance/issues/181
PR-URL: https://github.com/nodejs/node/pull/61954
Refs: https://github.com/nodejs/performance/issues/181
Reviewed-By: Robert Nagy <ronagy@icloud.com >
2026-04-11 10:37:30 +00:00
Ali Hassan
4a41a002f6
sqlite: add serialize() and deserialize()
...
Add database.serialize() and database.deserialize() methods to
DatabaseSync, wrapping the sqlite3_serialize and sqlite3_deserialize
C APIs. These allow extracting an in-memory database as a Uint8Array
and loading one back, enabling snapshots, cloning, and transfer of
databases without filesystem I/O.
Refs: https://github.com/nodejs/node/issues/62575
PR-URL: https://github.com/nodejs/node/pull/62579
Refs: https://github.com/nodejs/node/issues/62575
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
2026-04-10 20:40:01 +00:00
Guilherme Araújo
88be44db0e
sqlite: handle stmt invalidation
...
PR-URL: https://github.com/nodejs/node/pull/61877
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
2026-03-02 23:29:14 +00:00
Mert Can Altin
35d3bc8fe8
sqlite: add limits property to DatabaseSync
...
PR-URL: https://github.com/nodejs/node/pull/61298
Fixes: https://github.com/nodejs/node/issues/61268
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com >
2026-02-27 19:00:28 +00:00
Bart Louwers
f6464c57f6
sqlite: change approach to fix segfault SQLTagStore
...
PR-URL: https://github.com/nodejs/node/pull/60462
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day >
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com >
2026-01-31 06:35:30 +00:00
Bart Louwers
f475aea034
sqlite: enable defensive mode by default
...
PR-URL: https://github.com/nodejs/node/pull/61266
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com >
Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com >
2026-01-20 11:10:53 +00:00
Guilherme Araújo
efa7621132
sqlite: add sqlite prepare options args
...
PR-URL: https://github.com/nodejs/node/pull/61311
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day >
Reviewed-By: Claudio Wunder <cwunder@gnome.org >
2026-01-19 23:27:03 +00:00
Michaël Zasso
9a6e55ab3d
src: remove unused private field in SQLTagStore
...
PR-URL: https://github.com/nodejs/node/pull/61027
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk >
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day >
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Luigi Pinca <luigipinca@gmail.com >
Reviewed-By: Tobias Nießen <tniessen@tnie.de >
2025-12-20 06:22:38 +00:00
René
a1f421feb6
sqlite: make SQLTagStore.prototype.size a getter
...
Drive-by: make callback `args` parameter names consistent
PR-URL: https://github.com/nodejs/node/pull/60246
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com >
2025-12-11 02:29:09 +00:00
Bart Louwers
fd7b33e763
sqlite: allow setting defensive flag
...
PR-URL: https://github.com/nodejs/node/pull/60217
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com >
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com >
2025-10-27 14:01:16 +00:00
James M Snell
2869c1255b
src: correct the error handling in StatementExecutionHelper
...
Error handling logic was flawed in StatementExecutionHelper
methods.
PR-URL: https://github.com/nodejs/node/pull/60040
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
2025-10-04 12:51:20 -07:00
Guilherme Araújo
b217051d36
sqlite: create authorization api
...
PR-URL: https://github.com/nodejs/node/pull/59928
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
2025-10-01 11:40:45 +02:00
0hm☘️
97e55f8ea2
sqlite: add tagged template
...
This pr introduces the support for tagged templates
And an LRU to cache the templates. We introduced a
new object called SqlTagStore that holds the ref
to Lru. This acts as the main object that allows
us to use tagged templates.
PR-URL: https://github.com/nodejs/node/pull/58748
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
2025-09-17 16:54:11 +00:00
Edy Silva
961554c89d
src,sqlite: refactor value conversion
...
PR-URL: https://github.com/nodejs/node/pull/59659
Reviewed-By: Anna Henningsen <anna@addaleax.net >
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com >
2025-09-02 02:57:19 +00:00
Miguel Marcondes Filho
d08513dfc7
sqlite: add support for readBigInts option in db connection level
...
PR-URL: https://github.com/nodejs/node/pull/58697
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com >
Reviewed-By: Daniel Lemire <daniel@lemire.me >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
2025-06-24 14:26:07 +00:00
James M Snell
62ba6196d4
sqlite: cleanup ERM support and export Session class
...
Update sqlite Session to support Symbol.dispose and
move the definition of the dispose methods to c++ to
close the open TODO
PR-URL: https://github.com/nodejs/node/pull/58378
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com >
2025-05-30 17:21:30 -07:00
Edy Silva
e9b286ca4b
sqlite: add location method
...
PR-URL: https://github.com/nodejs/node/pull/57860
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
2025-04-21 14:57:15 +00:00
Colin Ihrig
2e0ec72f54
sqlite: add getter to detect transactions
...
This commit adds an isTransaction getter to the DatabaseSync
class for determining if the database is currently within a
transaction.
Fixes: https://github.com/nodejs/node/issues/57922
PR-URL: https://github.com/nodejs/node/pull/57925
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Michaël Zasso <targos@protonmail.com >
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com >
2025-04-20 15:57:42 +00:00
Edy Silva
62426a79ee
sqlite: add timeout options to DatabaseSync
...
PR-URL: https://github.com/nodejs/node/pull/57752
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
2025-04-12 16:23:01 +00:00
Edy Silva
437c6aac16
sqlite,doc,test: add aggregate function
...
PR-URL: https://github.com/nodejs/node/pull/56600
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2025-04-09 02:49:42 +00:00
Gürgün Dayıoğlu
054371dc90
sqlite: add setReturnArrays method to StatementSync
...
PR-URL: https://github.com/nodejs/node/pull/57542
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
2025-04-04 21:26:52 +00:00
Colin Ihrig
771b6829e6
sqlite: refactor prepared statement iterator
...
This commit refactors the StatementSync iterator implementation
in two primary ways:
- The iterator internal state is no longer exposed to JavaScript.
- The iterator prevents the prepared statement from being GC'ed.
Fixes: https://github.com/nodejs/node/issues/57493
PR-URL: https://github.com/nodejs/node/pull/57569
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com >
2025-04-03 14:16:24 +00:00
Colin Ihrig
ffc1cf6205
sqlite: add support for unknown named parameters
...
This commit adds a method for toggling support for unknown named
parameters in prepared statements.
Fixes: https://github.com/nodejs/node/issues/55533
PR-URL: https://github.com/nodejs/node/pull/57552
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2025-03-22 01:38:34 +00:00
Colin Ihrig
9851388468
sqlite: add DatabaseSync.prototype.isOpen
...
This commit adds a getter to indicate whether or not the database
is currently open.
Fixes: https://github.com/nodejs/node/issues/57521
PR-URL: https://github.com/nodejs/node/pull/57522
Reviewed-By: Ulises Gascón <ulisesgascongonzalez@gmail.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
Reviewed-By: Chemi Atlow <chemi@atlow.co.il >
Reviewed-By: Tobias Nießen <tniessen@tnie.de >
Reviewed-By: Michaël Zasso <targos@protonmail.com >
2025-03-19 17:01:16 +00:00
Colin Ihrig
1de917b0f7
sqlite: add StatementSync.prototype.columns()
...
This commit adds a method for retrieving column metadata from
a prepared statement.
Fixes: https://github.com/nodejs/node/issues/57457
PR-URL: https://github.com/nodejs/node/pull/57490
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com >
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com >
Reviewed-By: Edy Silva <edigleyssonsilva@gmail.com >
2025-03-18 13:22:32 +00:00
Edy Silva
16dc29d4b6
sqlite, test: expose sqlite online backup api
...
PR-URL: https://github.com/nodejs/node/pull/56253
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Vinícius Lourenço Claro Cardoso <contact@viniciusl.com.br >
2025-02-05 22:26:28 +00:00
Divy Srivastava
cebf4c8a9f
sqlite: fix use-after-free in StatementSync due to premature GC
...
PR-URL: https://github.com/nodejs/node/pull/56840
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2025-02-05 14:33:59 +00:00
Colin Ihrig
c4fb331390
sqlite: handle conflicting SQLite and JS errors
...
This commit adds support for the situation where SQLite is
trying to report an error while JavaScript already has an
exception pending.
Fixes: https://github.com/nodejs/node/issues/56772
PR-URL: https://github.com/nodejs/node/pull/56787
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Michaël Zasso <targos@protonmail.com >
2025-02-04 13:58:33 +00:00
Colin Ihrig
e5524eaefa
sqlite: add support for custom functions
...
This commit adds support to node:sqlite for defining custom
functions that can be invoked from SQL.
Fixes: https://github.com/nodejs/node/issues/54349
PR-URL: https://github.com/nodejs/node/pull/55985
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
2024-12-12 16:48:12 +00:00
Alex Yang
5c2f599712
sqlite: support db.loadExtension
...
PR-URL: https://github.com/nodejs/node/pull/53900
Reviewed-By: Matteo Collina <matteo.collina@gmail.com >
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
2024-12-11 08:50:24 -08:00
tpoisseau
bc701e90f3
sqlite: add StatementSync.prototype.iterate method
...
PR-URL: https://github.com/nodejs/node/pull/54213
Reviewed-By: Zeyu "Alex" Yang <himself65@outlook.com >
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
2024-11-22 10:21:48 +01:00
Bart Louwers
746b17e1a5
sqlite: add support for SQLite Session Extension
...
PR-URL: https://github.com/nodejs/node/pull/54181
Reviewed-By: Yagiz Nizipli <yagiz@nizipli.com >
Reviewed-By: James M Snell <jasnell@gmail.com >
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
2024-11-18 00:57:04 +00:00
Tobias Nießen
a465b206d7
sqlite: add readOnly option
...
Allow opening existing SQLite databases with SQLITE_OPEN_READONLY set.
PR-URL: https://github.com/nodejs/node/pull/55567
Reviewed-By: Colin Ihrig <cjihrig@gmail.com >
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com >
2024-10-31 11:41:14 +00:00