-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathCHANGES.txt
352 lines (286 loc) · 16.3 KB
/
CHANGES.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
=====================================================
MySQL Connector/Node.JS 8.0 - Release Notes & Changes
=====================================================
MySQL Connector/Node.JS
Copyright (c) 2016, 2023, Oracle and/or its affiliates.
Full release notes:
http://dev.mysql.com/doc/relnotes/connector-nodejs/en/
v8.0.35
=======
- Rows can now be inserted in a table using CRUD with an X DevAPI expression
- Date and time operators are now allowed in X DevAPI expressions
- All unsafe decimal values are now being returned as a raw string
v8.0.33
=======
- The JavaScript BigInt type can now be used to send unsafe integer values to the server
- Applications can now choose the JavaScript type (string or BigInt) to use when consuming integer values
- Using TypeScript, the "Table.select()" method now accepts arguments in the form of column names
- The full test suite can now run entirely in a Docker environment
- In TypeScript, the "getAutoIncrementValue()" in the result instance returned by "Table.select()" has been removed
- Using TypeScript, the "Collection.add()" method now accepts any type of object
- Some 3rd-party packages used as "devDependencies" have been updated
v8.0.32
=======
- X DevAPI expressions are now encapsulated in a corresponding Expr module
- The expression parser became stateless and is not re-created every time an expression is used
- X DevAPI expressions are now parsed at the stage where they are used
- All protobuf messages are now constructed only at the corresponding adapter
- Most CRUD statements using expressions are much faster
- 3rd-party dependencies with new releases compatible to Node.js v14.0.0 have been updated
- A script to run the test suite in a Docker container has been introduced
- Unsafe numeric JSON field values are now returned as JavaScript strings
- Collection.add() no longer loses precision with unsafe numeric JSON field values
v8.0.31
=======
- Revamped X DevAPI expression parser
- Precedence in expressions containing bitwise operators is now properly inferred
- Extra leading and trailing whitespaces in expression strings are now allowed and ignored
- Invalid document paths containing a globstar as the last item are now disallowed
- JSON_UNQUOTE shorthand syntax is now properly supported in X DevAPI identifier expressions
v8.0.30
=======
- TypeScript type definitions are now available in the "types" directory
- Update non-authoritative minimum required Node.js engine version to 14.0.0
- Prevent unexpected and uninformative errors for bad placeholder assignments
- Allow the MYSQLX_HOST environment variable to be used with IPv4 addresses when executing the test suite
- Accommodate DECIMAL values as JavaScript strings when the decimal part risks losing precision
- Update list of supported utf8mb4 collations
v8.0.29
=======
- Constraints for TLS connection options were relaxed
- Certificate authority validation can now be explicitly enabled with a connection string via the "VERIFY_CA" TLS mode
- Default server identity verification can now be enabled with a connection string via the "VERIFY_IDENTITY" TLS mode
- A custom server identity verification function can be provided via the "tls.checkServerIdentity" configuration option
- Allow index of DATETIME or similar column data types for document fields created from JavaScript Date instances
- Prevent closed connection pool to create extraneous connections for queued requests
- Cleanup global and private references in the API docs
- Remove extraneous 3rd-party dependency
- Update google-protobuf to v3.19.4
v8.0.28
=======
- TLSv1 and TLSv1.1 are not supported anymore
- The Certificate Authority (CA) chain can now be specified using a list of PEM files
- Certificate Revocation Lists (CRLs) can now be defined using multiple PEM files, one for each CA
- Server certificates revoked by non-root CAs can now be properly validated
v8.0.27
=======
- Test suite as been re-structured and missing relevant tests have been added
- Error and warning management logic has been centralized and improved
- Attempts to acquire connections in parallel are how properly handled by a connection pool
- Standalone connections can now be properly managed via the "Client" interface
v8.0.26
=======
- Internal connection management architecture has been re-structured and improved
- Deprecation warnings are now reported when the connection uses TLSv1 or TLSv1.1
- Pool connections that become unresponsive are now being released and can be re-used
- Network sockets are now properly closed when the client does not connect to the server due to a timeout
- Column metadata callbacks are now executed only once for each result set
- SQL statement instances created with "Session.sql()" can now be re-used with different placeholder arguments
- "Collection.replaceOne()" now fails with a non-matching replacement document "_id" property
- "Collection.addOrReplaceOne()" now fails with a non-matching replacement document "_id" property
- Expecations about column metadata in functional tests have been relaxed to avoid ongoing server changes
- Log collection script used for functional tests has been improved to avoid test flakiness
- Deprecated "Buffer()" constructor has been replaced with "Buffer.alloc()", "Buffer.allocUnsafe()" and "Buffer.from()"
- Upstream floating point values provided as JavaScript numbers or X DevAPI expression literals are now correctly rounded
v8.0.25
=======
This release contains no functional changes and is published to align the version number with the MySQL Server 8.0.25 release.
v8.0.24
=======
- Add support for handling notifications of connections closed by the server
- Fix issues preventing refused connections to be released back to a pool
- Fix behaviour of "Session.getDefaultSchema()" for undefined schemas
- Overall documentation style, structure and content improvements
- Update 3rd-party dependencies
v8.0.23
=======
- Prevent logging routines to run when not in debug mode
- Improve content of X Protocol log messages
- Fix issue causing duplicate log messages
- Rename "master" references to "trunk"
- Deprecate End-of-life Node.js version support
- Fix precision issue causing certain DOUBLE values to be truncated
- Fix inconsistent behavior with "Table.insert()" parameters
v8.0.22
=======
- Re-structure the functional test suite
- Fix behavior of "RowResult.nextResult()" for empty result sets
- Deprecate "dbUser" and "dbPassword" properties
- Remove "offset()" APIs using unsupported server features
- Fix issues causing warnings about circular dependencies
- Add support for lazy decoding of binary row fields and column metadata
- Improve memory usage for serializing/deserializing binary content
- Add support for return proper type names on "Column.getType()"
- Fix decoding of single-character SET values in result sets
- Fix decoding of non-BIGINT values stored in BIGINT columns
v8.0.21
=======
- Add support for JSON schema validation when inserting documents in collections
- Fix MySQL BIGINT downstream decoding issues
- Remove duplicated protobuf stubs
- Fix issues with dangling resources on test runs
- Fix issues with tests using the MySQL TIME data type
- Fix documentation issues regarding the TLS ciphersuite options
- Remove functional tests covering the deprecated sha256_password authentication plugin
- Replace deprecated mocha.opts file with mocha command line options
v8.0.20
=======
- Add support for TLS version and ciphersuite selection
- Improve multihost support and introduce random-based connection failover
- Fix timezone issues in tests using DATETIME
- Improve documentation and examples related to result set cursors
v8.0.19
=======
- Add support for resolving and manage connections to hosts specified as SRV records
- Fix issues with Collection.existsInDatabase() in the presence of regular tables
- Fix unexpected behavior with empty where() calls
- Re-introduce getAffectedItemsCount() method for the Session.sql() API
v8.0.18
=======
- Add devDependencies to allow users and potential contributors to generate test coverage reports
- Add devDependencies to allow users and potential contributors to enforce a formal code convention
- Introduce performance improvements for the Collection.getOne() API
- Introduce a full Promise-based buffered result set API based on the MySQL X connectors standard
- Fix issue causing incorrect padding characters to be applied for fixed-length column values
- Fix issue preventing to insert a Node.js Buffer value into a MySQL column of a binary datatype
- Fix issue causing MySQL binary datatypes to be coerced to Node.js Strings when retriving data from a table
- Add support for updating MySQL binary datatype columns using raw Node.js Buffers
v8.0.17
=======
- Re-structure the test suite and track the proper devDependencies to allow users to run it locally
- Introduce a standard set of guidelines for open source contributions
- Add support for creating multi-value indexes on document fields containing arrays
- Add support for the "OVERLAPS" and "NOT OVERLAPS" operators
- Track missing MySQL collations such as "utf8mb4_zh_0900_as_cs" and "utf8mb4_0900_bin"
- Fix issue preventing the correct collation name to be retrieved with Column.getCollationName()
- Add expression support for the "NOT" unary operator
- Add expression support for the "DIV" binary operator
- Allow Collection.dropIndex() to silently suceed when the index does not exist
- Fix issue preventing backticks from being used in table column identifiers
- Fix issue preventing JavaScript Date values to be assigned to expression placeholders
v8.0.16
=======
- Add support for autonomous prepared statements for some types of operations
- Add support for storing application-level and client-level connection attributes in the server
- Improve pool selection algorithm to prioritize re-using idle connections instead of creating new ones
- Improve usage of idle connections in a pool by properly resetting them and avoid re-authentication
- Fix issues preventing JavaScript Date objects to be properly serialized within a document
- Fix issues preventing connections to be acquired from a pool within a finite timeout
- Fix issues preventing idle pool connections to be re-used after a period of inactivity
- Fix issues preventing pool connections to be closed on the server
- Remove unsupported Table.getViewDefinition() API
v8.0.15
=======
There are no changes in this release of the product, but the version number has been raised to 8.0.15
to align with the new MySQL Server release.
v8.0.14
=======
- Add support for ignoring (and not failing with) initial X Protocol notices
- Remove deprecation notices from Collection.count() and Table.count()
- Add support for setting the default schema in the server
- Remove support for creating non-existing schemas when connecting to the server
- Allow pct-encoded default schema names in the connection string
- Allow falsy values to be used in Table.insert()
- Allow falsy values to be used in Table.update().set() and Collection.modify().set()
- Fix issue causing the client to hang when the server certificate was not valid
- Fix issue causing collection.existsInDatabase() to always return true in the presence of any collection
v8.0.13
=======
- Add support for connection pooling via the mysqlx.getClient() interface
- Add support for single-host and multi-host connection timeouts
- Fix uncaught exception thrown when calling getCollationName() for non-textual columns
- Fix support for mysql.expr() inputs in the CollectionFind.fields() method
- Fix handling of X Protocol global notices (log errors and make connections unusable if it is the case)
- Include standard "user" property in the output of Session.inspect()
- Fix documentation typos and incorrect usage examples
v8.0.12
=======
- Mysqlx.Crud message encoding performance improvements
- Expression parser performance improvements
- Add missing X DevAPI standard methods
- Remove and deprecate extraneous X DevAPI unsupported methods
- Fix issues with ESCAPE expressions
- Fix metadata-based field value padding issues
- Fix uncaught exception issue for NULL fields
- Reduce error surface and introduce sane defaults for mysqlx.getSession()
v8.0.11
=======
- Replace protobuf.js library with the official google-protobuf npm package
- Add new "SHA256_MEMORY" authentication mechanism for MySQL 8.0.11 "caching_sha2_password" authentication plugin
- Introduce new auto-generated document id format (which is now generated on the server)
- Add "NOWAIT" and "SKIP_LOCKED" modes for both shared and exclusive row locks
- Add support for sorting results on CollectionFind, CollectionRemove and CollectionModify operations
- Update Session.getSchemas(), Schema.getCollections() and Schema.getTables() to return an array of instances
- Introduce performance improvements on Collection.add()
- Fix parsing issues with escape characters in expressions
- Fix precision loss issues with the use of MySQL BIGINT type in expressions
- Update result set interface to use JavaScript Date objects for representing the MySQL DATE type
- Update result set interface to apply rounding mask for the MySQL FLOAT type
- Fix decoding issues with the MySQL UNSIGNED INTEGER and BIT types
- Fix decoding issues with large documents or document properties
v8.0.9
======
- Rollout a new and improved expression parser
- Partial rollout of a protobuf message encoder using stubs compiled by the official vendor compiler
- Add support for creating and deleting collection indexes using the DevAPI
- Add support for working with transaction savepoints via the DevAPI
- Add support for modifying multiple document properties in bulk, using the `patch()` method
- Remove relational (table and view) DDL API
- Remove persistent session configuration management API
- Fix all known expression parsing issues and caveats
- Fix duplicate UUID generation issues
- Fix document property projection issues, using the `fields()` method
v8.0.8
======
- Add support for `collection.find()` and `table.select()` row locking
- Add document-specific CRUD methods (`replaceOne()`, `addOrReplaceOne()`, `getOne()` and `removeOne()`)
- Add support for automatic or manual selection of authentication mechanisms
- Remove some dead or non-supported feature code
- Fix some flaky test cases and other some small issues in the test suite
- Refactor the database entity and operation architecture
- Add support for the SQL "IN" operator for matching values against argument lists
- Add support for using the "IN" operator to check if values exist in arrays or objects
- Fix a few pressing bugs on the existing expression parser (empty quoted strings, `NULL`, negation, zeros)
v8.0.7
======
- Add support for server connections using local UNIX sockets
- Add failover support when creating sessions by providing multiple server/router addresses
- Normalize multiple session types into a single `Session` entity
- Enable SSL/TLS on server connections by default
- Introduce a new mysql-specific UUID format for document ids
- Fix issue preventing document ids to be set to `0`
- Fix protocol issue preventing the addition of a large number of documents to a collection
- Prevent behavior of implicitely removing entire tables and collections
- Fix issue with `bind()` usage for removing documents from a collection
- Normalize dropX() methods and restrict them to the proper scope
- Fix protocol issue preventing SHA256 password users of picking the `PLAIN` authentication mechanism in MySQL 8
- Add high-level management interface to support persistent session configurations
v1.0.6
======
- Added support for single array or multiple argument function calls on the public API
- Updated behavior of `collection.add([])` to avoid confusing exceptions
- Fixed issues with `collection.bind()`
- Fixed parsing issues on URI and connection string corner-cases
- Added support for creating IPv6 sessions with a URI or connection string
- Added support for creating TLS sessions with a URI or connection string
- Added support for validating the server certificate with a given CA and/or CRL
v1.0.5
======
- Added Table creation API.
- Added APIs for Transaction handling
v1.0.4
======
- Changed package name from `mysqlx` to `@mysql/xdevapi`
- Added View DDL support
- Added support for Common URI format
- Added Collection.count() and Table.count()
- Added Schema.getCollectionAsTable()
- Added xdevapi.getVersion()
v1.0.3
======
- Improved handling of fragmented TCP packages
- BUG#23118665:C/NODEJS FAILS TO WORK WHEN SSL IS ENABLED
v1.0.2
======
- Initial public release
- Support for X DevAPI 1.0.4