Skip to content

ci: test against msnodesqlv8 v6 - #1946

Merged
dhensby merged 3 commits into
tediousjs:masterfrom
dhensby:ci/msnodesqlv8-v6
Oct 26, 2026
Merged

dhensby merged 3 commits into
tediousjs:masterfrom
dhensby:ci/msnodesqlv8-v6

Conversation

@dhensby

@dhensby dhensby commented Oct 26, 2026 •

Copy link
Copy Markdown
Collaborator

What this does:

msnodesqlv8 6 is released, and npm install msnodesqlv8 now installs 6.2.0. node-mssql already works with it, but CI never tested it and the README still says v2–v5. Three commits:

  • ci: a msnodesqlv8@^6 install and test step in test-windows, on the Node 22 and 24 jobs only, after the v5 step. v6's engines needs Node 22 or later. Its Node-API binary ships inside the npm package, so the step needs no prebuild download and no source build. ^5 stays on Node 22/24 and 5.2.1 on Node 20. The range floats, so CI always tests the latest v6.
  • test: numbers read at full precision, on both drivers. It reads float, real and decimal values with digits beyond the sixth decimal place (1e-10, 1.2345678901234567, a float32 real, decimal(38,10) 1.0123456789 and −1e-10), from a column and from an output parameter.
    • msnodesqlv8 before 6 hands these over as text with six decimal places, so 1e-10 is read as 0. There the test is skipped with that reason.
    • It is gated on the major version, not a point release: only the latest v6 is supported.
    • The values are ones tedious reads exactly. tedious itself can be an ulp or two off for decimals whose unscaled value is above 2^53 or whose scale is above 22.
  • docs:
    • README lists msnodesqlv8 v2–v6.
    • It says msnodesqlv8 6 needs Node.js 22 or later, with msnodesqlv8@5 for older Node.
    • It notes that msnodesqlv8 5 and earlier round float, real and decimal values with more than six decimal places, so 1e-10 reads as 0. numeric, money and smallmoney are not affected.

Verification:

  • npm run lint and npm run test-unit pass.
  • tedious, locally against Azure SQL Edge: the new test passes. The 3 failing tests need CLR, which Edge lacks.
  • On an Azure SQL Server 2022 VM with SQL Server Native Client 11.0, using this test:
    • master's msnodesqlv8 suite passes on 6.2.0 under Node 22 and 24 (158 passing), and on 5.6.0;
    • the new test passes on 6.2.0 and tedious, and is skipped on 5.6.0;
    • forced to run, it fails on 5.6.0 (and on 6.0.0) with the six-decimal-place values.
  • This PR's own CI is the first to run the v6 step.

Known v6 issues, not covered here:

Related issues:

Pre/Post merge checklist:

  • Update change log

🤖 Generated with Claude Code

dhensby and others added 3 commits October 26, 2026 10:09
msnodesqlv8 6 is released and is what npm now installs. It needs Node
22 or later, so it is tested on the Node 22 and 24 jobs, after v5. Its
Node-API binary ships inside the npm package, so the step needs no
prebuild download and no source build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Reads float, real and decimal values with digits beyond the sixth
decimal place, from a column and from an output parameter, on both
drivers. msnodesqlv8 before 6 hands these over as text with six decimal
places, so 1e-10 is read as 0; there the test is skipped with that
reason.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Says that msnodesqlv8 6 needs Node.js 22 or later, and to install
msnodesqlv8 5 on an older one. Notes that msnodesqlv8 5 and earlier
round float, real and decimal values to six decimal places, which
msnodesqlv8 6 does not.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

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.

🟢 Approval recommended

The changes are limited to CI, tests, and documentation, with no identified blocking issues.

No open issues 🎉

What changed in this PR

Adds msnodesqlv8 v6 coverage to the SQL Server client's CI and documents its requirements, addressing part of #1940 without changing runtime adapter code.

Changes:

  • Tests the latest msnodesqlv8 v6 on Windows with Node.js 22 and 24.
  • Adds shared numeric-precision integration coverage for both drivers, skipped on msnodesqlv8 versions before v6.
  • Documents v6 support, its Node.js requirement, and older drivers’ precision limitations.
File Description
test/​tedious/​tedious.js Registers the numeric-precision test for tedious.
test/​msnodesqlv8/​msnodesqlv8.js Registers the precision test with a v6 version gate.
test/​common/​tests.js Checks numeric precision in columns and output parameters.
README.md Documents v6 support, installation requirements, and precision behavior.
.github/​workflows/​nodejs.yml Adds v6 installation and test steps on Node.js 22 and 24.

Review effort: Balanced

@dhensby
dhensby merged commit 083063f into tediousjs:master Oct 26, 2026
47 checks passed
@dhensby
dhensby deleted the ci/msnodesqlv8-v6 branch October 26, 2026 09:44
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 12.7.13 🎉

The release is available on:

Your semantic-release bot 📦🚀

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants