Skip to content

sqlite: add StatementSync.prototype[Symbol.dispose]()#64232

Open
araujogui wants to merge 1 commit into
nodejs:mainfrom
araujogui:sqlite-statement-sync-dispose
Open

sqlite: add StatementSync.prototype[Symbol.dispose]()#64232
araujogui wants to merge 1 commit into
nodejs:mainfrom
araujogui:sqlite-statement-sync-dispose

Conversation

@araujogui

Copy link
Copy Markdown
Member

No description provided.

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>
Copilot AI review requested due to automatic review settings July 1, 2026 14:22
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/sqlite

@nodejs-github-bot nodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. needs-ci PRs that need a full CI run. sqlite Issues and PRs related to the SQLite subsystem. labels Jul 1, 2026

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds support for explicit resource management on StatementSync by implementing StatementSync.prototype[Symbol.dispose]() so prepared statements can be deterministically finalized (including via using declarations), aligning StatementSync with other sqlite objects that already support Symbol.dispose.

Changes:

  • Implement StatementSync::Dispose() and wire it up via SetProtoDispose(...).
  • Refactor statement cleanup into a shared StatementSync::Close() used by both the destructor and Symbol.dispose.
  • Add tests and API documentation for statement[Symbol.dispose]() behavior (idempotent finalize, post-finalize errors, using integration).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
test/parallel/test-sqlite-statement-sync.js Adds coverage for StatementSync disposal semantics and using integration.
src/node_sqlite.h Declares StatementSync::Dispose() and introduces a private Close() helper.
src/node_sqlite.cc Implements disposal/close behavior, hooks Symbol.dispose, and simplifies statement untracking.
doc/api/sqlite.md Documents the new statement[Symbol.dispose]() API and its no-op behavior when already finalized.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

c++ Issues and PRs that require attention from people who are familiar with C++. needs-ci PRs that need a full CI run. sqlite Issues and PRs related to the SQLite subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants