-
Optimized the X DevAPI expression parser for both structure and performance. The X DevAPI expressions are now encapsulated in a corresponding
Expr
module, and are parsed at the stage where they are used. The expression parser became stateless and is no longer re-created every time an expression is used, and all protobuf messages are now only constructed at the corresponding adapter.Also,
mysqlx.expr()
now returns an X DevAPI Expr instance instead of a protobuf message instance. (WL #12019) Updated dependencies to the latest versions compatible with the minimum required Node.js engine version (v14.0.0), namely google-protobuf to 3.21.2. Also updated these devDependencies entries: chai to v4.3.6, dns2 to v2.0.5, and mocha to v10.0.0. Updated the test suite to account for breaking changes introduced by the dns2 update. (WL #15434)
On Linux and macOS, added a script that builds and runs a Docker container to execute the test suite. Only a running MySQL server is needed to run this test suite, see
CONTRIBUTING.md
for./test/docker/run.sh
usage details. (WL #15353)
A document containing a numeric value not safely represented by a JavaScript number would lose precision and convert it to the nearest value capable of being represented as a JavaScript number. This new number was potentially unsafe for performing mathematical operations. Replaced the native JavaScript JSON parser with a bespoke version that is capable of safely representing unsafe numeric values as JavaScript strings. (Bug #34767204, Bug #34728259)