UNPKG

77.2 kBMarkdownView Raw
1# Change Log
2
3## node-oracledb v5.4.0 (9 Jun 2022)
4
5- Stated compatibility is now for Node.js 14, 16 and 18. Older releases
6 back to Node.js 10.16 should still work.
7
8- Added code to capture the [error
9 stack](https://oracle.github.io/node-oracledb/doc/api.html#properrstack). PR #1467
10 (Slawomir Osoba).
11
12- Added support for [token based
13 authentication](https://oracle.github.io/node-oracledb/doc/api.html#tokenbasedauth)
14 when establishing pool based connections and standalone connections.
15
16- Added code to keep the method name in internally bound functions.
17 PR #1466 (Slawomir Osoba).
18
19- Added a
20 [`connection.isHealthy()`](https://oracle.github.io/node-oracledb/doc/api.html#ishealthy)
21 function to perform a local connection health check.
22
23- Added missing support for binding as `oracledb.DB_TYPE_BINARY_INTEGER`.
24
25- Fixed crash with multiple
26 [DbObject](https://oracle.github.io/node-oracledb/doc/api.html#dbobjectclass)
27 OUT binds ([Issue #1464](https://github.com/oracle/node-oracledb/issues/1464)).
28
29- Fixed calling `initOracleClient()` with TypeScript 4.4 ([Issue
30 1462](https://github.com/oracle/node-oracledb/issues/1462)).
31
32- Fixed numeric suffix feature (for duplicate SELECT column names when using
33 `oracledb.OUT_FORMAT_OBJECT` mode) when the column name is also a JavaScript
34 property or method name.
35
36- Fixed binding string or buffer data when explicitly specifying the type as
37 `oracledb.DB_TYPE_BLOB`, `oracledb.DB_TYPE_CLOB` or `oracledb.DB_TYPE_NCLOB`.
38
39- Fixed a crash when certain errors occur during binding. ([ODPI-C
40 change](https://github.com/oracle/odpi/commit/13899afcbdf51998863d48752debc3f239f3d655)).
41
42- Fixed a bug causing ORA-25263 when dequeuing a message with a specific
43 message ID. ([ODPI-C
44 change](https://github.com/oracle/odpi/commit/68c438dd3b779e8f5eb146a0762d6cd149cdf9f1)).
45
46## node-oracledb v5.3.0 (22 Oct 2021)
47
48- Added a
49 [`keepInStmtCache`](https://oracle.github.io/node-oracledb/doc/api.html#propexeckeepinstmtcache)
50 option to `execute()`, `executeMany()`, and `queryStream()` to control
51 whether executed statements are retained in the Statement Cache.
52 ([Issue #182](https://github.com/oracle/node-oracledb/issues/182)).
53
54- Encapsulated the connection pool statistics in a [PoolStatistics
55 Class](https://oracle.github.io/node-oracledb/doc/api.html#poolstatisticsclass).
56 Added a
57 [`poolstatistics.logStatistics()`](https://oracle.github.io/node-oracledb/doc/api.html#poolstatisticslogstatistics)
58 function, equivalent to the existing `pool.logStatistics()` function. Exposed
59 pool properties `user`, `connectString`, `edition`, `events`,
60 `externalAuth`, and `homogeneous` on the Pool and PoolStatistics classes.
61
62- Added [Two-Phase Commit](https://oracle.github.io/node-oracledb/doc/api.html#twopc) support.
63
64- Fixed `queryStream()` logical error handling ([Issue
65 1391](https://github.com/oracle/node-oracledb/issues/1391)).
66
67- Prevent intermingling of `queryStream()` streaming and `getRow()`/`getRows()`
68 calls.
69
70- Made an internal change for TypeScript 4.4's imported function behavior with
71 'this' ([Issue 1408](https://github.com/oracle/node-oracledb/issues/1408)).
72
73## node-oracledb v5.2.0 (7 Jun 2021)
74
75- Connection pool changes:
76
77 - Pool attributes can be changed during application runtime with
78 [`pool.reconfigure()`](https://oracle.github.io/node-oracledb/doc/api.html#poolreconfigure).
79 This lets properties such as the pool size be changed dynamically instead
80 of having to restart the application or create a new pool.
81
82 - Formalized pool statistics with the addition of a pool creation attribute
83 [`enableStatistics`](https://oracle.github.io/node-oracledb/doc/api.html#createpoolpoolattrsstats),
84 and with the functions
85 [`pool.getStatistics()`](https://oracle.github.io/node-oracledb/doc/api.html#poolgetstatistics)
86 and
87 [`pool.logStatistics()`](https://oracle.github.io/node-oracledb/doc/api.html#poollogstatistics).
88 Pool statistics can be be enabled, disabled, or reset with
89 `pool.reconfigure()`. The older `_enableStats` attribute and
90 `_logStats()` function are aliases for the new functionality but will be
91 removed in a future version of node-oracledb.
92
93 - Added `currentQueueLength` and `poolMaxPerShard` to the pool statistics.
94
95 - Fixed connection pool statistics "minimum time in queue" and "maximum
96 time in queue" calculations.
97
98 - Fixed the statement cache size set for the initial `poolMin` connections
99 created by `oracledb.createPool()`.
100
101 - Fixed `queueTimeout` of 0 to allow pool connection requests to be queued
102 indefinitely. See [Issue
103 1338](https://github.com/oracle/node-oracledb/issues/1338).
104
105- Concurrent operations on a single connection are now queued in the JavaScript
106 layer, which can help reduce thread usage for applications that are unable to
107 do their own queuing. A new
108 [`oracledb.errorOnConcurrentExecute`](https://oracle.github.io/node-oracledb/doc/api.html#propdberrconexecute)
109 property can be used during development to throw an error if concurrent
110 operations are attempted on any single connection.
111
112- Enhanced dead connection detection. If an Oracle Database error indicates
113 that a connection is no longer usable, the error `DPI-1080: connection was
114 closed by ORA-%d` is now returned. The `%d` will be the Oracle error causing
115 the connection to be closed. Using the connection after this will give
116 `DPI-1010: not connected`. This behavior also applies for
117 [`oracle.callTimeout`](https://oracle.github.io/node-oracledb/doc/api.html#propconncalltimeout)
118 errors that result in an unusable connection. ([ODPI-C
119 change](https://github.com/oracle/odpi/commit/072739355b8b9d5a4bba3583a79ed53deb15907e)).
120
121- Enhanced
122 [`getRows()`](https://oracle.github.io/node-oracledb/doc/api.html#getrows) to
123 be able to return all rows in one call.
124
125- Added `username` as an alias for `user` in connection properties.
126
127- Enhanced the numeric suffix feature (for duplicate SELECT column names when
128 using `oracledb.OUT_FORMAT_OBJECT` mode) to also support nested cursors and
129 REF CURSORS.
130
131- Added support for caching the database version number in pooled connections
132 with Oracle Client 19 and earlier (later Oracle Clients handle this caching
133 internally). This optimization eliminates a round-trip previously often
134 required when reusing a pooled connection. ([ODPI-C
135 change](https://github.com/oracle/odpi/commit/87268e832363083c1e228922ee11e2fa7aaf8880)).
136
137- [SODA](https://oracle.github.io/node-oracledb/doc/api.html#sodaoverview) changes:
138
139 - Added [SODA metadata
140 cache](https://oracle.github.io/node-oracledb/doc/api.html#sodamdcache)
141 support to connection pools. This significantly improves the performance
142 of opening collections. Caching is available when using Oracle Client
143 version 21.3 (or later). It is also available in Oracle Client 19 from
144 19.11 onwards.
145
146 - Added a SODA
147 [`hint()`](https://oracle.github.io/node-oracledb/doc/api.html#sodaoperationclasshint)
148 SodaOperation method and equivalent hint option to
149 `sodaCollection.insertManyAndGet()`, `sodaCollection.insertOneAndGet()`,
150 and `sodaCollection.saveAndGet()` to allow monitoring and passing hints.
151
152- Fixed crashes seen with Worker threads ([ODPI-C
153 change](https://github.com/oracle/odpi/commit/09da0065409702cc28ba622951ca999a6b77d0e9)).
154
155- Fixed a failure when using JavaScript functions on OUT bind variables from
156 `executeMany()` that require the connection, for example accessing database
157 objects or streaming LOBs.
158
159- Fixed use of `oracledb.NCLOB` in `fetchAsString`. See [Issue
160 1351](https://github.com/oracle/node-oracledb/issues/1351).
161
162- Test and documentation improvements.
163
164## node-oracledb v5.1.0 (8 Dec 2020)
165
166- Added
167 [`oracledb.dbObjectAsPojo`](https://oracle.github.io/node-oracledb/doc/api.html#propdbobjpojo)
168 and a `connection.execute()` option
169 [`dbObjectAsPojo`](https://oracle.github.io/node-oracledb/doc/api.html#propexecobjpojo).
170 These specify whether Oracle Database named objects or collections that are
171 queried should be returned to the application as "plain old JavaScript
172 objects" or kept as database-backed objects. This option also applies to
173 output `BIND_OUT` bind variables.
174
175- Enhanced JSON support to work with Oracle Database 21's native JSON storage
176 format. A new type `oracledb.DB_TYPE_JSON` was added.
177
178- Numeric suffixes are now added to duplicate SELECT column names when using
179 `oracledb.OUT_FORMAT_OBJECT` mode, allowing all columns to be represented in
180 the JavaScript object.
181
182- The value of `prefetchRows` set when getting a REF CURSOR as a BIND_OUT
183 parameter is now used in the subsequent data retrieval from that cursor.
184
185- Fixed a compatibility regression affecting SODA "get" operations using older
186 Oracle Client releases.
187
188- Fixed a memory leak getting attributes of objects or elements of collections
189 that are themselves objects.
190
191## node-oracledb v5.0.0 (29 Jun 2020)
192
193- Stated compatibility is now for Node.js 10.16+, 12 and 14.
194
195- Installation Changes:
196
197 - Added an
198 [`oracledb.initOracleClient()`](https://oracle.github.io/node-oracledb/doc/api.html#odbinitoracleclient)
199 function to specify the directories that the Oracle Client libraries and
200 optional Oracle configuration files are in, and to specify other
201 configuration values, see [Initializing
202 Node-oracledb](https://oracle.github.io/node-oracledb/doc/api.html#initnodeoracledb).
203
204 - macOS Instant Client installation instructions have necessarily changed to
205 work with recent Node.js versions. Instant Client libraries in `~/lib`
206 will no longer be used. See
207 [INSTALL](https://oracle.github.io/node-oracledb/INSTALL.html#instosx).
208
209 - Fixed how the module binary is found when using Webpack.
210
211 Webpack users should copy the node-oracledb binary into a sub-directory of
212 the output directory. For example if the output directory is `dist`, then
213 the binary should be in
214 `dist/node_modules/oracledb/build/Release/oracledb-5.0.0-linux-x64.node`.
215 A copy plugin in `webpack.config.js` can do this by copying
216 `node_modules/oracledb/build` to a directory of that same name. See
217 [Issue 1156](https://github.com/oracle/node-oracledb/issues/1156).
218
219 - Updated [Docker installation
220 documentation](https://oracle.github.io/node-oracledb/INSTALL.html#docker)
221 for changes to the Node.js image ([Issue #1201](https://github.com/oracle/node-oracledb/issues/1201)).
222
223 - Removed use of git in `package/buildpackage.js` making offline builds cleaner
224 for self-hosting node-oracledb.
225
226- Connection Pool changes:
227
228 - Added
229 [`oracledb.queueMax`](https://oracle.github.io/node-oracledb/doc/api.html#propdbqueuemax)
230 and equivalent `createPool()` option attribute
231 [`queueMax`](https://oracle.github.io/node-oracledb/doc/api.html#createpoolpoolattrsqueuemax)
232 to limit the number of pending `pool.getConnection()` calls in the pool
233 queue ([Issue #514](https://github.com/oracle/node-oracledb/issues/514)).
234
235 - Made an internal change to use an Oracle Client 20 Session Pool feature
236 allowing node-oracledb connection pools to shrink to `poolMin` even when
237 there is no pool activity.
238
239- Added
240 [`oracledb.prefetchRows`](https://oracle.github.io/node-oracledb/doc/api.html#propdbprefetchrows)
241 and equivalent `execute()` option attribute
242 [`prefetchRows`](https://oracle.github.io/node-oracledb/doc/api.html#propexecprefetchrows)
243 for query row fetch tuning to optimize round-trips, or disable prefetching
244 altogether. See [Tuning Fetch
245 Performance](https://oracle.github.io/node-oracledb/doc/api.html#rowfetching).
246
247- Added support for queries containing cursor expressions that return [nested
248 cursors](https://oracle.github.io/node-oracledb/doc/api.html#nestedcursors).
249
250- Added database instance startup and shutdown functions
251[`oracledb.startup()`](https://oracle.github.io/node-oracledb/doc/api.html#odbstartup),
252[`oracledb.shutdown()`](https://oracle.github.io/node-oracledb/doc/api.html#odbshutdown),
253[`connection.startup()`](https://oracle.github.io/node-oracledb/doc/api.html#constartup),
254and
255[`connection.shutdown()`](https://oracle.github.io/node-oracledb/doc/api.html#conshutdown).
256
257- Added a new constant
258 [`oracledb.SYSPRELIM`](https://oracle.github.io/node-oracledb/doc/api.html#oracledbconstantsprivilege)
259 to allow preliminary database connections, such as required when starting a
260 database.
261
262- Added support for ResultSet IN binds to PL/SQL REF CURSOR parameters.
263
264- Added support for PL/SQL Collection Associative Arrays "index-by tables" of
265 the following types: `oracledb.DB_TYPE_NVARCHAR`, `oracledb.DB_TYPE_CHAR`,
266 `oracledb.DB_TYPE_NCHAR`, `oracledb.DB_TYPE_BINARY_FLOAT`,
267 `oracledb.DB_TYPE_BINARY_DOUBLE`, `oracledb.DB_TYPE_DATE`,
268 `oracledb.DB_TYPE_TIMESTAMP`, `oracledb.DB_TYPE_TIMESTAMP_LTZ`,
269 `oracledb.DB_TYPE_TIMESTAMP_TZ` and `oracledb.DB_TYPE_RAW`.
270
271- Refactored the module's JavaScript code layer to use async/await.
272
273- Removed support for custom Promise libraries. Use the native Node.js Promise
274 implementation instead. This change was necessitated by the refactored
275 JavaScript implementation.
276
277- NJS-005 and NJS-009 are now passed through the callback (if one is used).
278
279- Fixed a segfault that occurred when binding a database object IN/OUT without
280 providing the database object class.
281
282- Fixed OUT binds of type `oracledb.DB_TYPE_DATE`, `oracledb.DB_TYPE_TIMESTAMP`
283 and `oracledb.DB_TYPE_TIMESTAMP_TZ` to correctly return Dates.
284
285- [SODA](https://oracle.github.io/node-oracledb/doc/api.html#sodaoverview) changes:
286
287 - The value of `oracledb.fetchArraySize` now tunes SODA `getCursor()` and
288 `getDocuments()` performance when using Oracle Client 19.5. Added the
289 SODA `find()` non-terminal function
290 [`fetchArraySize()`](https://oracle.github.io/node-oracledb/doc/api.html#sodaoperationclassfetcharraysize)
291 to tune individual `find()` operations.
292
293 - Added Oracle Database 20c SODA 'upsert' functions
294 [`sodaCollection.save()`](https://oracle.github.io/node-oracledb/doc/api.html#sodacollsave)
295 and
296 [`sodaCollection.saveAndGet()`](https://oracle.github.io/node-oracledb/doc/api.html#sodacollsaveandget).
297
298 - Added Oracle Database 20c SODA function
299 [`sodaCollection.truncate()`](https://oracle.github.io/node-oracledb/doc/api.html#sodacolltruncate).
300
301- Lob Changes:
302
303 - Fixed Lob class
304 [`lob.type`](https://oracle.github.io/node-oracledb/doc/api.html#proplobtype)
305 and
306 [`metaData.fetchType`](https://oracle.github.io/node-oracledb/doc/api.html#execmetadata)
307 when streaming NCLOB data. They are now `oracledb.NCLOB` instead of
308 `oracledb.CLOB`.
309
310 - Fixed `Lob.destroy()` so it does not call the old `Lob.close()` method, which
311 emits a duplicate close event.
312
313 - Lobs being streamed to are now correctly destroyed on error.
314
315- Made an internal change to use an Oracle Client 20 feature to avoid a
316 round-trip when accessing
317 [`connection.oracleServerVersion`](https://oracle.github.io/node-oracledb/doc/api.html#propconnoracleserverversion)
318 or [`connection.oracleServerVersionString`](https://oracle.github.io/node-oracledb/doc/api.html#propconnoracleserverversionstring)
319 for the first time.
320
321- Updated examples and documentation to make more use of Node.js 8's Stream
322 `destroy()` method, allowing resources to be freed early.
323
324- Test and documentation improvements.
325
326## node-oracledb v4.2.0 (24 Jan 2020)
327
328- Added support for binding using the node-oracledb [Database Type
329 Constants](https://oracle.github.io/node-oracledb/doc/api.html#oracledbconstantsdbtype)
330 `DB_TYPE_DATE`, `DB_TYPE_CHAR`, `DB_TYPE_NCHAR`, `DB_TYPE_NVARCHAR`,
331 `DB_TYPE_NCLOB`, `DB_TYPE_BINARY_DOUBLE`, `DB_TYPE_BINARY_FLOAT`,
332 `DB_TYPE_BINARY_INTEGER`, `DB_TYPE_TIMESTAMP`, and `DB_TYPE_TIMESTAMP_TZ`.
333
334- Added support for binding using `DB_TYPE_BOOLEAN` (Diego Arce).
335
336- Added support for creating temporary NCLOBS with
337 [`connection.createLob(oracledb.NCLOB)`](https://oracle.github.io/node-oracledb/doc/api.html#connectioncreatelob).
338
339- Added [client initiated
340 connection](https://oracle.github.io/node-oracledb/doc/api.html#consubscribeoptclientinitiated)
341 support for Continuous Query Notification (CQN) and other subscription based
342 notifications.
343
344- Added
345 [`result.lastRowid`](https://oracle.github.io/node-oracledb/doc/api.html#execlastrowid)
346 to `execute()`. It contains the ROWID of the last row affected by an INSERT,
347 UPDATE, DELETE or MERGE statement.
348
349- Changed the Error object
350 [`offset`](https://oracle.github.io/node-oracledb/doc/api.html#properroffset)
351 to be 32-bit, allowing the
352 [`batchErrors`](https://oracle.github.io/node-oracledb/doc/api.html#executemanyoptbatcherrors)
353 mode of `executeMany()` to show row `offset` values up to (2^32)-1 ([ODPI-C
354 change](https://github.com/oracle/odpi/commit/294d5966cd513d0c29fdeec3bbbdfad376f81d4f)).
355
356- Avoid intermediate conversion from the database national character set to the
357 database character set when querying NCLOB columns as String.
358
359- Fixed various execution failures with Node.js 13.2 due to a Node.js NULL pointer behavior change ([ODPI-C
360 change](https://github.com/oracle/odpi/commit/7693865bb6a98568546aa319cc0fdb9e208cf9d4)).
361
362- Fixed connection pooling so sharded `pool.getConnection()` requests respect
363 `queueTimeout` when `poolMaxPerShard` has been reached.
364
365- Added a directory to the binary module search to help Webpack use, though a
366 copy plugin is still required, see
367 [here](https://github.com/oracle/node-oracledb/issues/1156#issuecomment-571554125).
368
369- Fixed some static code analysis warnings.
370
371- Updated Lob streaming documentation and examples. Applications should use the
372 `end` event (for readable streams) and `finish` event (for writeable streams)
373 instead of the `close` event. The node-oracledb `lob.close()` method is now
374 deprecated in favor of the more functional Node.js 8 Stream `destroy()`
375 method.
376
377- Test and documentation improvements.
378
379## node-oracledb v4.1.0 (26 Nov 2019)
380
381- Added end-to-end tracing attributes
382 [`connection.clientInfo`](https://oracle.github.io/node-oracledb/doc/api.html#propconnclientinfo)
383 and [`connection.dbOp`](https://oracle.github.io/node-oracledb/doc/api.html#propconndbop).
384
385- Added support for [Oracle
386 Sharding](https://oracle.github.io/node-oracledb/doc/api.html#sharding).
387
388- Fixed a [regression](https://github.com/oracle/node-oracledb/issues/1152) when
389 binding dates with alternative JavaScript frameworks.
390
391- Fixed "NJS-024: memory allocation failed" errors seen on AIX.
392
393- Fixed a JavaScript memory leak when getting Oracle Database named type
394 information, such as with `getDbObjectClass()`.
395
396- Corrected support for PLS_INTEGER and BINARY_INTEGER types when used in PL/SQL
397 records ([ODPI-C
398 change](https://github.com/oracle/odpi/commit/4e80a81257ce6e1066f4f6242fed533eaed45753)).
399
400- Corrected `queryStream()` documentation and examples to show the `'close'`
401 event should be received before closing connections. If connections are
402 closed on the `'end'` event, then significant C layer memory may be [held
403 open](https://github.com/oracle/node-oracledb/issues/1173) until the garbage
404 collector frees the associated JavaScript resource.
405
406- Reverted the
407 [`events`](https://oracle.github.io/node-oracledb/doc/api.html#propdbevents)
408 default back to pre-4.0 behavior due to connection creation timeouts in some
409 environments. It is now *false* again.
410
411- Error changes:
412
413 - Ensured that `queryStream()` errors raised during close are emitted in the
414 `'error'` event.
415
416 - Enforce only one of `connectString` or `connectionString` being used for
417 connection.
418
419 - Improved some error messages.
420
421 - Refactored implementation of function argument checking.
422
423- Test and documentation improvements.
424
425## node-oracledb v4.0.1 (19 Aug 2019)
426
427- Fixed a regression causing a segfault when setting `oracledb.connectionClass`
428 and not creating a pool ([ODPI-C change](https://github.com/oracle/odpi/commit/f945355f3e58e7337dd798cba0404ab5755f0692)).
429
430- Fixed a regression when enumerable properties were added to
431 `Object.prototype`.
432 ([#1129](https://github.com/oracle/node-oracledb/issues/1129)).
433
434- Fixed a regression with missing `metaData` from `connection.getStatementInfo()`
435
436- Fixed crashes with spurious subscription (e.g. CQN) notifications, and when
437 unsubscribing an invalid subscription.
438
439- A more meaningful error is returned when calling `connection.subscribe()` with
440 SQL that is not a SELECT statement ([ODPI-C
441 change](https://github.com/oracle/odpi/commit/f95846bef6cf70e8114cbbb59ca04fbe2e7a3903))
442
443- Fixed passing DbObjects and JavaScript objects as the `payload` attribute for
444 AQ message enqueues when using an object queue.
445
446- Made the error message for AQ `queue.deqMany(0)` the same NJS-005 given when a
447 negative number is used.
448
449- Fixed a compilation warning seen on Windows.
450
451- Improve portability of buildbinary.js, a package creation script ([#1129](https://github.com/oracle/node-oracledb/issues/1129)).
452
453## node-oracledb v4.0.0 (25 Jul 2019)
454
455- Refactored the node-oracledb implementation to use
456 [N-API](https://nodejs.org/api/n-api.html) in place of
457 [NAN](https://github.com/nodejs/nan).
458 - Node-oracledb 4 requires Node.js 8.16 or Node.js 10.16, or higher. Node.js 8.16, 10.16, 11.12 and 12 contain an important N-API performance fix.
459 - N-API allows node-oracledb binaries to be portable between Node.js versions on a given operating system, subject to N-API compatibility. Node-oracledb uses N-API version 4.
460 - Oracle Client libraries are still required at runtime. These can be from Oracle Instant Client, the full Oracle Client, or an Oracle Database installation.
461 - The string representation of classes has changed to `[object Object]` as a consequence of using N-API. Use `Object.getPrototypeOf()` to get class information.
462 - The C compiler required for building from source code no longer needs C++11 compatibility. The node-oracledb source code is now pure C.
463
464- Added support for querying and binding [Oracle Database Objects and
465 Collections](https://oracle.github.io/node-oracledb/doc/api.html#objects).
466
467- Added support for [Oracle Advanced Queuing (AQ)](https://oracle.github.io/node-oracledb/doc/api.html#aq):
468
469 - Added support for "RAW" queues, allowing String and Buffer
470 messages to be used.
471
472 - Added support for object queues, allowing Oracle Database object
473 messages to be used.
474
475 - Added support for notifications with `oracledb.SUBSCR_NAMESPACE_AQ`.
476
477- Added support for [Implicit
478 Results](https://oracle.github.io/node-oracledb/doc/api.html#implicitresults),
479 allowing query results to be returned from PL/SQL without needing
480 parameters or bind variables.
481
482- Added asynchronous method
483 [`lob.getData()`](https://oracle.github.io/node-oracledb/doc/api.html#lobgetdata)
484 to return all data from a Lob readable stream.
485
486- Added a new `dbTypeName` attribute to [`extendedMetaData`
487 output](https://oracle.github.io/node-oracledb/doc/api.html#execmetadata).
488 It contains the name of the type the column has in the database,
489 such as "VARCHAR2".
490
491- Enhanced BIND_IN of PL/SQL Collection Associative Arrays (Index-by)
492 so a bind definition object can be omitted (see
493 [#1039](https://github.com/oracle/node-oracledb/issues/1039)).
494
495- Continuous Query Notification (CQN) Improvements:
496
497 - Added support for getting the [registration
498 id](https://oracle.github.io/node-oracledb/doc/api.html#consubscribecallback)
499 for CQN subscriptions.
500
501 - Added support and message type constants for database startup
502 and shutdown events.
503
504 - Fixed a crash that occurred when unsubscribing from CQN while
505 notifications were ongoing ([ODPI-C
506 change](https://github.com/oracle/odpi/commit/b96b11b7fe58f32f011c7f7419555e40268d5bf4)).
507
508- Added
509 [`connection.currentSchema`](https://oracle.github.io/node-oracledb/doc/api.html#propconncurrentschema)
510 for setting the schema qualifier to be used when a qualifier is
511 omitted in SQL statements. This is an efficient alternative to
512 `ALTER SESSION SET CURRENT_SCHEMA`.
513
514- Renumbered [node-oracledb Type
515 Constants](https://oracle.github.io/node-oracledb/doc/api.html#oracledbconstantsnodbtype)
516 and [Oracle Database Type
517 Constants](https://oracle.github.io/node-oracledb/doc/api.html#oracledbconstantsdbtype)
518 to allow for future enhancements.
519
520- Introduced [Query `outFormat`
521 Constants](https://oracle.github.io/node-oracledb/doc/api.html#oracledbconstantsoutformat)
522 `oracledb.OUT_FORMAT_ARRAY` and `oracledb.OUT_FORMAT_OBJECT`. The
523 previous constants `oracledb.ARRAY` and `oracledb.OBJECT` are
524 deprecated but still usable.
525
526- Improved the performance of [`oracledb.outFormat`](#propdboutformat) mode `oracledb.OUT_FORMAT_OBJECT`.
527
528- Improved the fetch performance of LOBs in some cases by reducing the
529 number of round-trips required between node-oracledb and Oracle
530 Database ([ODPI-C
531 change](https://github.com/oracle/odpi/commit/58e6a07ff5bb428a09068456ef5231884fcb77db)).
532
533- Change the
534 [`events`](https://oracle.github.io/node-oracledb/doc/api.html#propdbevents)
535 default to *true*.
536
537- Updated the JavaScript syntax in class implementations.
538
539- Class methods are now configurable. For example via
540 `Object.defineProperty`.
541
542- Error handling changes:
543
544 - Corrected the error message returned when invalid types are used for
545 boolean options.
546
547 - Standardized error messages for incorrect function parameters. Now
548 NJS-005 and NJS-007 are used in place of NJS-006 and NJS-008,
549 respectively.
550
551 - Exceptions from user getters for parameter object attribute access
552 are now passed through the error callback.
553
554 - The NJS-014 error when setting a read-only property was replaced
555 with a standard JavaScript message.
556
557 - When passing 0 or a negative value for the number of iterations to
558 `connection.executeMany()`, errors now occur through the error callback.
559
560 - Some error numbers may have changed due to code refactoring.
561 Some message text was updated.
562
563- [SODA](https://oracle.github.io/node-oracledb/doc/api.html#sodaoverview) changes:
564
565 - Added SODA bulk insert methods
566 [`sodaCollection.insertMany()`](https://oracle.github.io/node-oracledb/doc/api.html#sodacollinsertmany)
567 and
568 [`sodaCollection.insertManyAndGet()`](https://oracle.github.io/node-oracledb/doc/api.html#sodacollinsertmanyandget).
569
570 - Document that the general SODA API is out of Preview status when
571 using Oracle Client 18.5 or Oracle Client 19.3, or later. The
572 new node-oracledb 4.0 methods `sodaCollection.insertMany()` and
573 `sodaCollection.insertManyAndGet()` are in Preview status and
574 should not be used in production.
575
576 - Corrected the type of
577 [`sodaCollection.metaData`](https://oracle.github.io/node-oracledb/doc/api.html#sodacollectionpropmetadata).
578 It is now an Object, as was documented.
579
580 - Corrected processing of the `force` option in SODA [`sodaCollection.dropIndex()`](https://oracle.github.io/node-oracledb/doc/api.html#sodacolldropindex).
581
582 - Corrected the error message parameter number for SODA
583 [`sodaDatabase.getCollectionNames()`](https://oracle.github.io/node-oracledb/doc/api.html#sodadbgetcollectionnames).
584
585- Fixed writing of multi-byte characters to CLOBs when multiple writes
586 are required.
587
588- Fixed a crash occurring when draining the connection pool ([ODPI-C
589 change](https://github.com/oracle/odpi/commit/https://github.com/oracle/odpi/commit/7666dc3208087383f7f0f5e49c1ee423cb154997)).
590
591- Corrected `pool.status` to be read-only, as was documented.
592
593- Updated documentation.
594
595- Added new tests.
596
597- Added new examples. Updated existing examples to the Node.js 8 Async/Await style of programming.
598
599## node-oracledb v3.1.2 (22 Feb 2019)
600
601- Fixed a bug causing CQN crashes when multiple queries are registered
602 ([ODPI-C change](https://github.com/oracle/odpi/issues/96)).
603
604- Fixed a CQN race condition to prevent a crash when a multiple
605 `connection.unsubscribe()` calls are made on the same subscription.
606
607- Improved validation of `executeMany()` arguments to prevent a crash.
608
609- Standardized error message for SODA `createCollection()` with
610 invalid metadata.
611
612- Corrected the DPI-1050 error text displayed when the Oracle Client
613 libraries are too old ([ODPI-C change](https://github.com/oracle/odpi/commit/d2fea3801286d054e18b0102e60a69907b7faa9a)).
614
615- Allow `npm run buildbinary` to succeed even if `git` is not
616 available.
617
618- Use a relative URL for the ODPI-C submodule to make cloning from
619 oss.oracle.com also use ODPI-C from oss.oracle.com
620
621## node-oracledb v3.1.1 (25 Jan 2019)
622
623- Rebuild npm package to resolve Linux binary build issue.
624
625## node-oracledb v3.1.0 (22 Jan 2019)
626
627- Support tagging of pooled connections when releasing them to the
628 connection pool. When using Oracle Client libraries 12.2 or later,
629 Oracle's multi-property tagging is used, and a PL/SQL "session"
630 state fix-up procedure can be called when a requested connection tag
631 does not match the actual tag. This removes the need to reset
632 connection session state after every `pool.getConnection()` call.
633
634- Support a Node.js callback function for connection pools. It is
635 called when a connection is newly created and has never been
636 acquired from the pool before, or when a requested connection tag
637 does not match the actual tag.
638
639- Support explicit dropping of connections from connection pools.
640
641- Support passing parameters in `oracledb.getConnection()` (such as
642 `poolAlias`, `tag` and proxy authentication credentials) for use
643 with the pool cache.
644
645- Support the combination of a user proxy and external authentication
646 with standalone connections (ODPI-C change).
647
648- Defer initialization of the Oracle Client libraries until the first
649 use of `oracledb.getConnection()`, `oracledb.createPool()`,
650 `oracledb.oracleClientVersion`, or
651 `oracledb.oracleClientVersionString`.
652
653 If the Oracle Client cannot be loaded, `getConnection()` and
654 `createPool()` will return an error via the callback. Accessing
655 `oracledb.oracleClientVersion` or
656 `oracledb.oracleClientVersionString` with throw an error.
657
658 This change allows `require('oracledb')` to always succeed, allowing
659 node-oracledb constants and other attributes to be accessed even if
660 the Oracle Client is not installed.
661
662 This makes it easier to include node-oracledb in multi-database
663 applications where not all users will be accessing Oracle Database.
664
665 It allows code generation tools to access node-oracledb constants
666 without needing Oracle Client installed (see
667 [#983](https://github.com/oracle/node-oracledb/issues/983)).
668
669 Applications now have more scope to alter Oracle environment
670 variables referenced by the Oracle Client layer. Note it is still
671 recommended that the environment be set before Node.js is executed
672 due to potential for confusion or unexpected behavior due to
673 order-of-execution issues.
674
675- Support fetching XMLTYPE columns in queries. They will return as
676 String limited to the VARCHAR2 length.
677
678- Updated install processes by bundling all pre-built binaries into
679 the https://www.npmjs.com/package/oracledb package, removing the
680 need for a separate binary package download from GitHub. At runtime
681 an appropriate binary is loaded by `require()`, if it exists,
682 allowing one `node_modules/oracledb` install to be usable in
683 different environments.
684
685 Source code is no longer included in the npm package. It is still
686 available from GitHub and oss.oracle.com.
687
688 The steps for self-hosting a node-oracledb package have changed, see
689 [INSTALL](https://oracle.github.io/node-oracledb/INSTALL.html#selfhost).
690
691- Fixed a crash with high frequency notifications from CQN
692 ([#1009](https://github.com/oracle/node-oracledb/issues/1009)).
693
694- Fixed `poolPingInterval` with Oracle client libraries 12.2 or later
695 (ODPI-C change).
696
697- Fixed an issue with `poolPingInterval` that could cause usable
698 pooled connections to be unnecessarily dropped by
699 `connection.close()`. (ODPI-C change).
700
701- Fixed a memory leak under certain cirumstances when pooled
702 connections are released back to the pool. (ODPI-C change)
703
704- Display correct error message for SODA `createIndex()` when no
705 parameter is passed.
706
707- Fixed some SODA stability issues (node-oracledb and ODPI-C changes).
708
709- Improved the statement error Allow List to avoid unnecessarily
710 dropping statements from the statement cache (ODPI-C change).
711
712- Made internal changes to fix V8 deprecation compilation warnings
713 with Node.js 10.12, and fixed other static analysis warnings.
714
715## node-oracledb v3.0.1 (15 Nov 2018)
716
717- Improve validation for SODA `createDocument()` arguments.
718
719- Stated compatibility is now for Node.js 6, 8, 10, and 11.
720
721- Upgraded NAN dependency from 2.10 to 2.11.1.
722
723## node-oracledb v3.0.0 (1 Oct 2018)
724
725- Added new APIs for Simple Oracle Document Access
726 ([SODA](https://oracle.github.io/node-oracledb/doc/api.html#sodaoverview)),
727 available when using Oracle Database 18.3 and Oracle client
728 libraries version 18.3, or later.
729
730- Added a `drainTime` argument to
731 [`pool.close()`](https://oracle.github.io/node-oracledb/doc/api.html#poolclose),
732 allowing pools to be force-closed after a specified number of
733 seconds. PR #950 (Danilo Silva).
734
735- Added a
736 [`connection.callTimeout`](https://oracle.github.io/node-oracledb/doc/api.html#propconncalltimeout)
737 property to interrupt long running database calls, available when
738 using Oracle client libraries version 18.1, or later.
739
740- Added support for specifying the number of iterations to
741 `executeMany()` instead of always requiring an input binds array.
742 This is useful when there are no binds, or only OUT binds.
743
744- Added binary installer basic proxy authentication support. Reuse
745 `npm config` proxy. PR #919 (Cemre Mengu).
746
747- Additionally enable `poolPingInterval` functionality when using
748 Oracle client libraries 12.2, or later, to aid silent pool
749 connection re-establishment after connections exceed database
750 session resource limits (e.g. ORA-02396), or are explicitly closed
751 by DBAs (e.g. ORA-00028). (ODPI-C change).
752
753- Removed the connection pool
754 [`queueRequests`](https://oracle.github.io/node-oracledb/doc/api.html#propdbqueuerequests)
755 property. Now `pool.getConnection()` calls are always queued if the
756 pool is fully in use.
757
758- Altered the internal `pool.getConnection()` logic to work better
759 with Oracle client 18 library pool changes and retain backward
760 compatibility with older Oracle clients. This prevents
761 `pool.getConnection()` returning ORA-24418 when the connection pool
762 needs to grow and Oracle client 18 libraries are being used.
763
764- Unused properties in objects such as the `execute()` result are no
765 longer set. Previously some were set to `undefined`.
766
767- On Windows, Oracle Client libraries in
768 `node_modules\oracledb\build\Release` adjacent to the oracledb.node
769 binary will now be used in preference to those in PATH. (ODPI-C
770 change).
771
772- Change the binary package filename format from '...-node-vXX...' to
773 to '...-node-abiXX...' to reduce Node version and ABI confusion.
774
775- Eliminated a memory leak when fetching LOBs and more than one
776 internal fetch occurs.
777
778- Test updates.
779
780- Documentation updates, including an attribute type correction from
781 PR #970 (Cemre Mengu)
782
783- Examples were added and updated.
784
785## node-oracledb v2.3.0 (7 Jun 2018)
786
787- The stated compatibility is now for Node.js 6, 8, and 10 due to EOL
788 of Node.js 4, and the release of Node 10.
789
790- Added support for heterogeneous connection pooling and for proxy
791 support in connection pools. This allows each connection in the
792 pool to use different database credentials.
793
794- Added support for Oracle Database Continuous Query Notifications
795 (CQN), allowing JavaScript methods to be called when database
796 changes are committed.
797
798- Added support to `fetchAsString` and `fetchInfo` for fetching RAW
799 columns as STRING (hex-encoded).
800
801- Added Windows support for building binary packages for self-hosting
802 on internal networks. PR #891 (Danilo Silva).
803
804- Eliminated a memory leak when binding LOBs as `oracledb.BIND_INOUT`.
805
806- Added an error message indicating that `batchErrors` and
807 `dmlRowCounts` can only be used with INSERT, UPDATE, DELETE and
808 MERGE statements.
809
810- Fixed a bug that caused `queryStream()` to emit multiple close
811 events in Node.js 10.
812
813- Fixed a crash when getting the list of names for an undefined object
814 with Node.js 6.
815
816- Remove deprecated `Buffer()` function in tests in order to eliminate
817 a deprecation warning with Node.js 10.
818
819- Upgraded NAN dependency from 2.8 to 2.10.
820
821- Made some internal changes to fix NAN 2.10 deprecations: Replaced
822 `v8::String::Utf8Value` with `Nan::Uft8String`. Replaced
823 `MakeCallback()` with `runInAsyncScope()`.
824
825- Mention that `queueRequests` is deprecated and will be removed in a
826 future version; connection pool queuing will always be enabled in
827 that future version.
828
829## node-oracledb v2.2.0 (3 Apr 2018)
830
831- Added
832 [`oracledb.oracleClientVersionString`](https://oracle.github.io/node-oracledb/doc/api.html#propdboracleclientversionstring)
833 and
834 [`connection.oracleServerVersionString`](https://oracle.github.io/node-oracledb/doc/api.html#propconnoracleserverversionstring)
835 to complement the existing numeric properties.
836
837- Added
838 [`oracledb.edition`](https://oracle.github.io/node-oracledb/doc/api.html#propdbedition)
839 to support Edition-Based Redefinition. This removes the need to use
840 an `ALTER SESSION` command or `ORA_EDITION` environment variable.
841
842- Added
843 [`oracledb.events`](https://oracle.github.io/node-oracledb/doc/api.html#propdbevents)
844 to allow the Oracle client library to receive Oracle Database
845 service events, such as FAN and RLB events. This removes the need
846 to use an `oraaccess.xml` file to enable event handling.
847
848- Added
849 [`connection.changePassword()`](https://oracle.github.io/node-oracledb/doc/api.html#changingpassword)
850 for changing passwords, and also added support for changing the
851 password during `oracledb.getConnection()`.
852
853- Added
854 [`connection.executeMany()`](https://oracle.github.io/node-oracledb/doc/api.html#executemany)
855 for efficient batch DML (e.g. INSERT, UPDATE and DELETE) and PL/SQL
856 execution with multiple records.
857
858- Added
859 [`connection.getStatementInfo()`](https://oracle.github.io/node-oracledb/doc/api.html#getstmtinfo)
860 to find information about a SQL statement without executing it.
861
862- Added
863 [`connection.ping()`](https://oracle.github.io/node-oracledb/doc/api.html#connectionping)
864 to support system health checks.
865
866- Added support for binding RAW types into Buffers in DML RETURNING statements.
867
868- Created GitHub 'pages' for hosting documentation. See:
869 - https://oracle.github.io/node-oracledb
870 - https://oracle.github.io/node-oracledb/INSTALL.html
871 - https://oracle.github.io/node-oracledb/doc/api.html
872
873- Simplified the binary installer messages to reduce user uncertainty.
874
875- Improved the text for the NJS-045 runtime loader failure error.
876
877- Made the implementations of `connection.close()` and `pool.close()`
878 the primary code paths in place of their respective aliases
879 `connection.release()` and `pool.terminate()`.
880
881- An empty object for `fetchInfo` no longer produces an error.
882
883- Updated database abstraction layer to ODPI-C 2.3
884
885- Fixed compilation warnings on Windows.
886
887- Updated the node-oracledb implementation to replace V8 deprecations.
888
889## node-oracledb v2.1.2 (21 Feb 2018)
890
891- Fixed regression with end-to-end tracing attributes not being set.
892
893- Fix binary installer proxy 403 (Bruno Jouhier)
894
895## node-oracledb v2.1.1 (16 Feb 2018)
896
897- Fixed regression with `queryStream()` in Node 4 & 6
898 ([#847](https://github.com/oracle/node-oracledb/issues/847)).
899
900## node-oracledb v2.1.0 (15 Feb 2018)
901
902- Added support for [privileged standalone
903 connections](https://oracle.github.io/node-oracledb/doc/api.html#privconn):
904 SYSDBA, SYSOPER, SYSASM, SYSBACKUP, SYSDG, SYSKM, and SYSRAC
905
906- Improved the
907 [Error](https://oracle.github.io/node-oracledb/doc/api.html#properror)
908 object with new `errorNum` and `offset` properties for Oracle
909 errors.
910
911- Added new
912 [`versionString`](https://oracle.github.io/node-oracledb/doc/api.html#propdbversionstring)
913 and
914 [`versionSuffix`](https://oracle.github.io/node-oracledb/doc/api.html#propdbversionsuffix)
915 attributes to aid showing node-oracledb version and release status.
916
917- Added
918 [`connectionString`](https://oracle.github.io/node-oracledb/doc/api.html#createpoolpoolattrsconnectstring)
919 as an alias for `connectString` in `oracledb.createPool()` and
920 `oracledb.getConnection()` (Sagie Gur-Ari).
921
922- Updated the ODPI-C layer:
923 - Eliminate DPI-1054 errors, allowing connections to be closed when ResultSets and Lobs are open.
924 - Avoid unnecessary roundtrips for rollbacks at connection close.
925
926- Replaced obsolete [NAN](https://github.com/nodejs/nan) API calls in
927 internal implementation and fixed other static analysis warnings.
928 This means node-oracledb 2.1 no longer builds with Node.js 0.10 or
929 Node.js 0.12.
930
931- Improved [`queryStream()`](https://oracle.github.io/node-oracledb/doc/api.html#querystream) streaming:
932
933 - Add support for the Stream `destroy()` method available with Node 8.
934
935 - Simplified the internal implementation by reusing `ResultSet.getRow()`.
936
937 - Fixed some timing and race issues.
938
939 - Made sure the 'close' event is emitted after the 'end' event.
940
941- Simplified query direct fetch implementation and improved
942 performance by reusing ResultSet code.
943
944- Exceptions are no longer raised when accessing attributes on closed
945 Connections, Pools, Lobs or ResultSets.
946
947- ResultSets are now closed on error to free resources earlier.
948
949- Improved NJS-010 message content by adding the position and invalid
950 data type number.
951
952- Fixed support for integers that are larger than Node.js's 32-bit
953 integer is capable of handling.
954
955- Updated [INSTALL](https://oracle.github.io/node-oracledb/INSTALL.html)
956 to mention:
957 - The [yum.oracle.com](http://yum.oracle.com/oracle-linux-nodejs.html) Node.js RPM Packages for Oracle Linux
958 - The [Oracle mirror](oss.oracle.com/git/oracle) of [github.com/oracle](https://github.com/oracle).
959
960- Correct the error message text when attempting to set `oracledb.oracleClientVersion`.
961
962## node-oracledb v2.0.15 (15 Dec 2017) changes since node-oracledb version 1
963
964- Release testing is now done for Node.js 4, 6, 8 and 9.
965
966- Node-oracledb now uses the [ODPI-C](https://github.com/oracle/odpi)
967 database abstraction library.
968
969- Upgraded [NAN](https://github.com/nodejs/nan) build dependency to 2.8.
970
971- Installation has significantly improved. Some pre-built binaries
972 are available for convenience, or the add-on can be continue to built
973 from source code. Refer to
974 [INSTALL](https://oracle.github.io/node-oracledb/INSTALL.html).
975
976 - Added utilities to /package for building binaries for
977 distribution, and for installing them.
978
979 - When building from source code:
980 - Oracle header files are no longer needed.
981 - The `OCI_LIB_DIR` and `OCI_INC_DIR` environment variables are not needed.
982
983 - A single node-oracledb binary now works with any of the Oracle
984 11.2, 12.1 or 12.2 clients. This improves portability when the
985 node-oracledb add-on is copied between machines. Applications
986 should be tested with their target environment to make sure
987 expected Oracle functionality is available.
988
989 - At run time, users of macOS must put the Oracle client libraries
990 in `~/lib` or `/usr/local/lib`. Linux users of Instant Client
991 RPMs must always set `LD_LIBRARY_PATH` or use ldconfig - the
992 previous RPATH linking option is not available. Other Linux users
993 should continue to use `LD_LIBRARY_PATH` or ldconfig. Windows
994 users should continue to put Oracle client libraries in `PATH`.
995
996 - On non-Windows platforms, if Oracle client libraries are not
997 located in the system library search path
998 (e.g. `LD_LIBRARY_PATH`), then node-oracledb attempts to use
999 libraries in `$ORACLE_HOME/lib`.
1000
1001 - A new [Troubleshooting
1002 section](https://oracle.github.io/node-oracledb/INSTALL.html#troubleshooting)
1003 was add to INSTALL.
1004
1005 - Improvements were made to `require('oracledb')` failure messages
1006 to help users resolve problems.
1007
1008 - Changed the installation message prefix in binding.gyp from
1009 'node-oracledb' to 'oracledb'.
1010
1011- Improved query handling:
1012
1013 - Enhanced direct fetches to allow an unlimited number of rows to be
1014 fetched. This occurs when `oracledb.maxRows = 0`
1015
1016 - Changed the default value of `oracledb.maxRows` to 0, meaning
1017 unlimited.
1018
1019 - Replaced `prefetchRows` (used for internal fetch buffering and
1020 tuning) with a new property `fetchArraySize`. This affects direct
1021 fetches, ResultSet `getRow()` and `queryStream()`.
1022
1023 - `getRows(numRows,...)` internal fetch buffering is now only tuned
1024 by the `numRows` value.
1025
1026 - Implemented `getRow()` in JavaScript for better performance.
1027
1028- Tightened up checking on in-use ResultSets and Lobs to avoid leaks
1029 and threading issues by making sure the application has closed them
1030 before connections can be closed. The error DPI-1054 may now be
1031 seen if connections are attempted to be closed too early.
1032
1033- Added support for fetching columns types LONG (as String) and LONG
1034 RAW (as Buffer). There is no support for streaming these types, so
1035 the value stored in the database may not be able to be completely
1036 fetched if Node.js and V8 memory limits are reached.
1037
1038- Added support for TIMESTAMP WITH TIME ZONE date type. These are
1039 mapped to a Date object in node-oracledb using LOCAL TIME ZONE.
1040 The TIME ZONE component is not available in the Date object.
1041
1042- Added support for ROWID data type. Data is fetched as a String.
1043
1044- Added support for UROWID data type. Data is fetched as a String.
1045
1046- Added query support for NCHAR and NVARCHAR2 columns. Note binding
1047 these types for DML may not insert data correctly, depending on the
1048 database character set and the database national character set.
1049
1050- Added query support for NCLOB columns. NCLOB data can be streamed
1051 or fetched as String. Note binding NCLOB for DML may not insert
1052 data correctly, depending on the database character set and the
1053 database national character set.
1054
1055- Removed node-oracledb size restrictions on LOB `fetchAsString` and
1056 `fetchAsBuffer` queries, and also on LOB binds. Node.js memory
1057 restrictions will still prevent large LOBs being manipulated in
1058 single chunks.
1059
1060- In LOB binds, the bind `val` can now be a String when `type` is
1061 CLOB, and `val` can now be a Buffer when `type` is BLOB.
1062
1063- Improved validation for invalid attribute and parameter values.
1064
1065- The error parameter of function callbacks is now always null if no
1066 error occurred.
1067
1068- Database error messages no longer have an extra newline.
1069
1070- Statements that generate errors are now dropped from the statement
1071 cache. Applications running while table definitions change will no
1072 longer end up with unusable SQL statements due to stale cache
1073 entries. Note that Oracle best-practice is never to change table
1074 definitions while applications are executing.
1075
1076- Prevent use of NaN with Oracle numbers to avoid data corruption.
1077
1078- For LOB streaming, make sure 'close' is the very last event, and
1079 doesn't occur before an 'error' event.
1080
1081- Fix duplicate 'close' event for error conditions when streaming LOBs
1082 in Node 8.
1083
1084- `connection.createLob()` now uses Oracle Call Interface's (OCI)
1085 underlying 'cache' mode.
1086
1087- `Lob.close()` now marks LOBs invalid immediately rather than during
1088 the asynchronous portion of the `close()` method, so that all other
1089 attempts are no-ops.
1090
1091- Relaxed the restriction preventing `oracledb.connectionClass` being
1092 used with dedicated connections; it previously gave ORA-56609. Now
1093 DRCP can now be used with dedicated connections but the
1094 `CLIENT_DRIVER` value in `V$SESSION_CONNECT_INFO` will not be set in
1095 this case. The recommendation is still to use a session pool when
1096 using DRCP.
1097
1098- Fixed a crash with LOB out binds in DML RETURNING statements when the
1099 number of rows returned exceeds the number of rows originally
1100 allocated internally.
1101
1102- Empty arrays can now be used in PL/SQL Collection Associative Array
1103 (Index-by) binds.
1104
1105- Some NJS and DPI error messages and numbers have changed. This is
1106 particularly true of DPI errors due to the use of ODPI-C.
1107
1108- Many new tests have been created.
1109
1110- Updated examples for new functionality.
1111
1112- Documentation has been updated and improved.
1113
1114## node-oracledb v2.0.15 (15 Dec 2017)
1115
1116- The stated compatibility is now for Node.js 4, 6, 8 and 9.
1117
1118- Improved query handling:
1119
1120 - Enhanced direct fetches to allow an unlimited number of rows to be
1121 fetched. This occurs when `oracledb.maxRows = 0`
1122
1123 - Changed the default value of `oracledb.maxRows` to 0, meaning
1124 unlimited.
1125
1126 - Replaced `prefetchRows` (used for internal fetch buffering and
1127 tuning) with a new property `fetchArraySize`. This affects direct
1128 fetches, ResultSet `getRow()` and `queryStream()`.
1129
1130 - `getRows(numRows,...)` internal fetch buffering is now only tuned
1131 by the `numRows` value.
1132
1133 - Implemented `getRow()` in JavaScript for better performance.
1134
1135 - Moved operations on REF CURSORS out of the main thread in order to
1136 improve performance and memory usage.
1137
1138- Fixed proxy support in the binary installer.
1139
1140- Ensured the callback error parameter is null, not undefined, when no
1141 error occurred.
1142
1143- Improvements were made to `require('oracledb')` failure messages to
1144 help users resolve installation and usage problems.
1145
1146- Fixed compiler deprecation warnings regarding `Nan::ForceSet`.
1147
1148## node-oracledb v2.0.14 Development (20 Nov 2017)
1149
1150- Added infrastructure to /package for creating binary installs.
1151 Updated INSTALL.md.
1152
1153- Improved validation for invalid attribute and parameter values.
1154
1155- In LOB binds, the bind "val" can now be a String when "type" is
1156 CLOB, and "val" can now be a Buffer when "type" is BLOB.
1157
1158- Changed binding.gyp message prefix from 'node-oracledb' to 'oracledb'.
1159
1160- Fix compiler warning with va_start
1161
1162- Eliminate memory leak when processing result sets containing LOBs
1163 that require more than one fetch operation (regression from v1).
1164
1165- Move fetch buffer allocation to reduce memory use for Result Sets
1166 (regression from v1).
1167
1168- Upgraded NAN dependency from 2.5 to 2.8.
1169
1170- Updated ODPI-C submodule:
1171 - Reinstate safe size limit for LOB bind to PL/SQL (node-oracledb regression from v1).
1172 - Fix valgrind byte overrun when loading `libclntsh` from `$ORACLE_HOME`.
1173 - Do not prevent connections from being explicitly closed when a fatal error has taken place.
1174 - Eliminate race condition on initialization. Add finalization code.
1175 - Eliminate use of OCI wrappers for use of mutexes, which improves performance (now uses native threading, e.g. pthreads).
1176 - Prevent use of NaN with Oracle numbers to avoid data corruption.
1177 - Prevent ORA-1010 during connection ping to pre 10g Oracle Database.
1178 - Improve debug trace output format.
1179 - Prevent crash for DML RETURNING of variables that require dynamic binding.
1180
1181- Updated examples to avoid "DPI-1054: connection cannot be closed
1182 when open statements or LOBs exist" and to avoid duplicate callbacks
1183 on stream errors.
1184
1185- Check for JavaScript exceptions and if one is found, ensure that the
1186 error is passed correctly to the callback and is not raised when the
1187 C++ method has finished.
1188
1189- Added code to handle invalid object properties.
1190
1191- Make sure 'close' is the very last event, and doesn't occur before
1192 an 'error' event. Also emit 'close' after 'error' event for
1193 `queryStream()`
1194
1195- Changed default sample connect string to `"localhost/orclpdb"` which
1196 is the Oracle Database 12.2 default for pluggable databases.
1197
1198- Moved NJS code from `/src/njs/src` to `/src` to remove obsolete
1199 directory nesting.
1200
1201- Perform error cleanup as soon as possible in order to avoid possible
1202 race conditions when errors take place.
1203
1204- Move operations on REF CURSORS out of the main thread in order to
1205 improve performance and memory usage.
1206
1207- Relaxed the restriction preventing `oracledb.connectionClass` being
1208 used with dedicated connections; it previously gave ORA-56609. Now
1209 DRCP can now be used with dedicated connections but the
1210 `CLIENT_DRIVER` value in `V$SESSION_CONNECT_INFO` will not be set in
1211 this case. The recommendation is still to use a session pool when
1212 using DRCP.
1213
1214- Tighten up checking on in-use ResultSets and Lobs to avoid leaks and
1215 threading issues by making sure the application has closed them
1216 before connections can be closed. The error DPI-1054 may now be
1217 seen if connections are attempted to be closed too early.
1218
1219- On Windows, disable ODPI-C thread cleanup to resolve a thread timing
1220 issue, since Node.js creates all threads at startup and never
1221 terminates them.
1222
1223- Added extra message text to NJS-045 to give potential causes for
1224 `require('oracledb')` failures when the ODPI-C layer can't detect
1225 the issue.
1226
1227- Updated ODPI-C submodule: various changes including improved
1228 initialization error messages, and runtime-enabled debug tracing.
1229
1230- Fix duplicate 'close' event for error conditions when streaming Lobs
1231 in Node 8.
1232
1233- Fix LOB streaming 'close' and 'end' event order (regression from v1).
1234
1235- Fixed crash with LOB out binds in DML RETURNING statements when the
1236 number of rows returned exceeds the number of rows originally
1237 allocated internally.
1238
1239- Improve handling of invalid `externalAuth`, `fetchAsString`, and
1240 `fetchAsBuffer` attribute values.
1241
1242- Fix support for `connectionClass` (regression from v1).
1243
1244## node-oracledb v2.0.13 Development (19 Jun 2017)
1245
1246- Node-oracledb now uses the [ODPI-C](https://github.com/oracle/odpi)
1247 database abstraction library.
1248
1249- Installation instructions have changed. Refer to
1250 [INSTALL](https://oracle.github.io/node-oracledb/INSTALL.html).
1251 Distribution is still via source code.
1252
1253 Oracle header files are no longer needed. The `OCI_LIB_DIR` and
1254 `OCI_INC_DIR` environment variables are not needed.
1255
1256 At run time, Oracle 11.2, 12.1 or 12.2 client libraries should still
1257 be in `PATH` (for Windows) or `LD_LIBRARY_PATH` (for Linux) or
1258 similar platform library loading path. Users of macOS must put the
1259 Oracle client libraries in `~/lib` or `/usr/local/lib`. Linux users
1260 of Instant Client RPMs must always set `LD_LIBRARY_PATH` or use
1261 ldconfig - the previous RPATH linking option is not available.
1262
1263 On non-Windows platforms, if Oracle client libraries are not located
1264 in the system library search path (e.g. `LD_LIBRARY_PATH`), then
1265 node-oracledb attempts to use libraries in `$ORACLE_HOME/lib`.
1266
1267 A single node-oracledb binary now works with any of the Oracle
1268 client 11.2, 12.1 or 12.2 libraries. This improves portability when
1269 node-oracledb builds are copied between machines.
1270
1271- `Lob.close()` now marks LOBs invalid immediately rather than during
1272 the asynchronous portion of the `close()` method, so that all other
1273 attempts are no-ops.
1274
1275- Incorrect application logic in version 1 that attempted to close a
1276 connection while certain LOB, ResultSet or other database operations
1277 were still occurring gave an NJS-030, NJS-031 or NJS-032 "connection
1278 cannot be released" error. Now in version 2 the connection will be
1279 closed but any operation that relied on the connection being open
1280 will fail.
1281
1282- Some NJS and DPI error messages and numbers have changed. This is
1283 particularly true of DPI errors due to the use of ODPI-C.
1284
1285- Stated compatibility is now for Node.js 4, 6 and 8.
1286
1287- Added support for fetching columns types LONG (as String) and LONG
1288 RAW (as Buffer). There is no support for streaming these types, so
1289 the value stored in the DB may not be able to be completely fetched
1290 if Node.js and V8 memory limits are reached.
1291
1292- Added support for TIMESTAMP WITH TIME ZONE date type. These are
1293 mapped to a Date object in node-oracledb using LOCAL TIME ZONE.
1294 The TIME ZONE component is not available in the Date object.
1295
1296- Added support for ROWID data type. Data is fetched as a String.
1297
1298- Added support for UROWID data type. Data is fetched as a String.
1299
1300- Added query support for NCHAR and NVARCHAR2 columns. Binding for
1301 DML may not insert data correctly, depending on the database
1302 character set and the database national character set.
1303
1304- Added query support for NCLOB columns. NCLOB data can be streamed
1305 or fetched as String. Binding for DML may not insert data
1306 correctly, depending on the database character set and the database
1307 national character set.
1308
1309- Removed node-oracledb size restrictions on LOB `fetchAsString` and
1310 `fetchAsBuffer` queries, and also on LOB binds. Node.js and V8
1311 memory restrictions will still prevent large LOBs being manipulated
1312 in single chunks.
1313
1314- Statements that generate errors are now dropped from the statement
1315 cache. Applications running while table definitions change will no
1316 longer end up with unusable SQL statements due to stale cache
1317 entries. Note that Oracle best-practice is never to change table
1318 definitions while applications are executing.
1319
1320- Empty arrays can now be used in PL/SQL Collection Associative Array
1321 (Index-by) binds.
1322
1323- `connection.createLob()` now uses OCI's underlying 'cache' mode.
1324
1325- Database errors no longer have an extra newline.
1326
1327- Upgraded NAN dependency from 2.5 to 2.6.
1328
1329## node-oracledb v1.13.1 (12 Apr 2017)
1330
1331- Fix regression with NULL values to PL/SQL procedures with multiple parameters.
1332
1333## node-oracledb v1.13.0 (15 Mar 2017)
1334
1335- Added support for fetching BLOBs as Buffers, using `fetchAsBuffer` and `fetchInfo`.
1336
1337- Improved PL/SQL Index-by array binding error messages based on PR #470 (Hariprasad Kulkarni).
1338
1339- Fixed several crashes and a memory leak using CLOBs with `fetchAsString`.
1340
1341- Fixed several issues including a crash using NULLs and empty strings for LOB `BIND_INOUT` binds.
1342
1343- Automatically clean up sessions in the connection pool when they become unusable after an ORA-56600 occurs.
1344
1345- Updated NAN dependency from 2.4 to 2.5.
1346
1347## node-oracledb v1.12.2 (21 Dec 2016)
1348
1349- Fix memory allocation with Oracle 11g client libraries when querying CLOBs using `fetchAsString` and `fetchInfo`.
1350
1351## node-oracledb v1.12.1 Development (16 Dec 2016)
1352
1353- Added support for fetching CLOBs as Strings, using `fetchAsString` and `fetchInfo`.
1354
1355- Added `BIND_INOUT` support for temporary LOBs.
1356
1357## node-oracledb v1.12.0 Development (3 Dec 2016)
1358
1359- Significantly enhanced LOB support:
1360 - Added `BIND_IN` support for DML
1361 - Added `BIND_IN`, `BIND_OUT`, `BIND_INOUT` support for PL/SQL
1362 - Added a `connection.createLob()` method to create temporary LOBs
1363 - Added a `lob.close()` method
1364 - Made enhancements to allow binding String or Buffer data as `STRING` or `BUFFER` to LOB database types
1365 - Writeable LOB Streams now conclude with a 'close' event
1366
1367- Added a connection pool 'ping' feature controlled with
1368 `oracledb.poolPingInterval` and a corresponding `createPool()`
1369 option. This validates pooled connections when they are returned
1370 from a `getConnection()` call. Values are:
1371 - zero: always ping for every pooled `getConnection()`
1372 - negative: never ping
1373 - positive: time in seconds the connection must be idle in the pool before `getConnection()` does a ping. Default is 60 seconds
1374
1375 The setting is a no-op when node-oracledb is built with Oracle
1376 Database 12.2 client libraries, where a new, lower-level OCI feature
1377 provides an always-on, lightweight connection check.
1378
1379- Upgraded NAN dependency from 2.3 to 2.4.
1380
1381- Stated compatibility is now for Node.js 0.12, 4, 6 and 7.
1382
1383- Fixed return value of the DATE type bound as `BIND_INOUT`.
1384
1385- Fixed passing NULL values bound as `BIND_INOUT` for several data types.
1386
1387- Fixed compilation warnings with newer Node.js versions due to V8 deprecations.
1388
1389- Fixed some Windows and OS X compilation warnings.
1390
1391- Linted JavaScript files, standardizing code, example and test files.
1392
1393- Updated various examples and created new ones.
1394
1395- Updated README.md and api.md introductory examples, based on a patch proposed by [Leigh Schrandt](https://github.com/stealthybox).
1396
1397- Updated README.md thanks to [Nick Heiner](https://github.com/NickHeiner).
1398
1399- Updated documentation links to point to the Oracle Database 12.2 documentation.
1400
1401- Made some internal changes to the DPI layer to avoid name space collisions
1402 and fix session tagging. These are not visible / exposed through
1403 node-oracledb.
1404
1405## node-oracledb v1.11.0 (19 Aug 2016)
1406
1407- Added a connection pool cache feature allowing pools to have aliases and be more easily used.
1408
1409- Improved the bootstrap error message when the node-oracledb binary cannot be loaded.
1410
1411- Fixed memory leaks with `DATE` and `TIMESTAMP` bind values.
1412
1413- Fixed external authentication which broke in 1.10.
1414
1415- Fixed metadata `scale` and `precision` values on AIX.
1416
1417- Made an internal change to replace `std::string.data()` with `std::string.c_str()`.
1418
1419- Made an internal change to remove an unused parameter from the `NJS_SET_EXCEPTION` macro.
1420
1421## node-oracledb v1.10.1 (21 Jul 2016)
1422
1423- Fixed a bug that prevented a null value being passed from JavaScript into an IN OUT bind.
1424
1425- Fixed a memory leak introduced in 1.10 with REF CURSORs.
1426
1427- Fixed a memory leak in error handling paths when using REF CURSORs.
1428
1429- Made an internal change for queries selecting unsupported column types allowing them to report an error earlier.
1430
1431- Made an internal change to use `std::string&` for string lengths.
1432
1433- Fixed a compilation warning on Windows.
1434
1435- Added a mocha configuration file for the test suite.
1436
1437## node-oracledb v1.10.0 (8 Jul 2016)
1438
1439- Enhanced query and REF CURSOR metadata is available when a new
1440 `oracledb.extendedMetaData` or `execute()` option `extendedMetaData`
1441 property is `true`. (Leonardo Olmi).
1442
1443- Fixed an issue preventing the garbage collector cleaning up when a
1444 query with LOBs is executed but LOB data isn't actually streamed.
1445
1446- Fixed a bug where an error event could have been emitted on a
1447 QueryStream instance prior to the underlying ResultSet having been
1448 closed. This would cause problems if the user tried to close the
1449 connection in the error event handler as the ResultSet could have
1450 prevented it.
1451
1452- Fixed a bug where the public `close()` method was invoked on the
1453 ResultSet instance that underlies the QueryStream instance if an
1454 error occurred during a call to `getRows()`. The public method would
1455 have thrown an error had the QueryStream instance been created from
1456 a ResultSet instance via the `toQueryStream()` method. Now the
1457 underlying C++ layer's `close()` method is invoked directly.
1458
1459- Updated `Pool._logStats()` to throw an error instead of printing to
1460 the console if the pool is not valid.
1461
1462- Report an error earlier when a named bind object is used in a
1463 bind-by-position context. A new error NJS-044 is returned.
1464 Previously errors like ORA-06502 were given.
1465
1466- Added GitHub Issue and Pull Request templates.
1467
1468- Some enhancements were made to the underlying DPI data access layer.
1469 **These are not exposed to node-oracledb users.**
1470
1471 - Allow SYSDBA connections
1472 - Allow session tagging
1473 - Allow the character set and national character set to be specified via parameters to the DPI layer.
1474 - Support heterogeneous pools (in addition to existing homogeneous pools)
1475
1476## node-oracledb v1.9.3 (24 May 2016)
1477
1478- Fix error with `OCI_ERROR_MAXMSG_SIZE2` when building with Oracle client 11.2.0.1 and 11.2.0.2.
1479
1480## node-oracledb v1.9.2 (23 May 2016)
1481
1482- Fix `results.metaData` for queries with `{resultSet: true}`.
1483
1484## node-oracledb v1.9.1 (18 May 2016)
1485
1486- Upgraded to NAN 2.3 for Node 6 support.
1487
1488- Added a persistent reference to JavaScript objects during Async
1489 operations to prevent crashes due to premature garbage collection.
1490
1491- Added a persistent reference to the internal Lob buffer to prevent
1492 premature garbage collection.
1493
1494- Fixed memory leaks when using ResultSets.
1495
1496- Fixed memory leak with the Pool queue timer map.
1497
1498- Fixed memory release logic when querying LOBs and an error occurs.
1499
1500- Improved some null pointer checking.
1501
1502- Altered some node-oracledb NJS-xyz error message text for consistency.
1503
1504- Improved validation for `fetchInfo` usage.
1505
1506- Increased the internal buffer size for Oracle Database error messages.
1507
1508- Call `pause()` internally when closing a query Stream with `_close()`.
1509
1510- Fixed a symbol redefinition warning for `DATA_BLOB` when compiling on Windows.
1511
1512- The test suite is no longer installed with `npm install oracledb`.
1513 The tests remain available in GitHub.
1514
1515## node-oracledb v1.9.0 Development (19 Apr 2016)
1516
1517- Added Promise support. All asynchronous functions can now return
1518 promises. By default the standard Promise library is used for Node
1519 0.12, 4 and 5. This can be overridden.
1520
1521- Added a `toQueryStream()` method for ResultSets, letting REF CURSORS
1522 be transformed into Readable Streams.
1523
1524- Added an experimental query Stream `_close()` method. It allows query
1525 streams to be closed without needing to fetch all the data. It is
1526 not for production use.
1527
1528- Added aliases `pool.close()` and `connection.close()` for
1529 `pool.terminate()` and `connection.release()` respectively.
1530
1531- Some method parameter validation checks, such as the number or types
1532 of parameters, will now throw errors synchronously instead of
1533 returning errors via the callback.
1534
1535- Removed an extra call to `getRows()` made by `queryStream()` at
1536 end-of-fetch.
1537
1538- Some random crashes caused by connections being garbage collected
1539 while still in use should no longer occur.
1540
1541- Regularized NJS error message capitalization.
1542
1543## node-oracledb v1.8.0 (24 Mar 2016)
1544
1545- Added `connection.queryStream()` for returning query results using a
1546 Node Readable Stream (Sagie Gur-Ari).
1547
1548- Connection strings requesting DRCP server can now only be used with
1549 a node-oracledb connection pool. They will give *ORA-56609* when
1550 used with `oracledb.getConnection()`.
1551
1552- Set the internal driver name to `node-oracledb : 1.8.0`. This is
1553 visible to DBAs, for example in `V$SESSION_CONNECT_INFO`.
1554
1555- Added up-time to pool queue statistics.
1556
1557- Fixed creation of Windows debug builds.
1558
1559- Bumped NAN dependency to NAN 2.2.
1560
1561- Added .editorconfig file (Sagie Gur-Ari).
1562
1563- Improved test date and time checks (Antonio Bustos).
1564
1565- Improved some parameter checks for `maxArraySize` and `maxSize`.
1566
1567## node-oracledb v1.7.1 (1 Mar 2016)
1568
1569- Made public methods over-writable in the new JavaScript layer
1570
1571## node-oracledb v1.7.0 (29 Feb 2016)
1572
1573- Added a JavaScript wrapper around the C++ API to allow for easier
1574 extension.
1575
1576- Added a connection pool queue configured with `queueRequests` and
1577 `queueTimeout` attributes. The queue is enabled by default.
1578
1579- Added connection pool option attribute `_enableStats` and method
1580 `pool._logStats()` to display pool and queue statistics. Note: these may
1581 change in future.
1582
1583- Added "bind by position" syntax for PL/SQL Index-by array binds (Dieter Oberkofler).
1584
1585- Allowed node-oracledb class instances to be tested with 'instanceof'.
1586
1587- Fixed some bind issues when bind values are not set by the database.
1588
1589- Replaced internal usage of `info.This()` with `info.Holder()` for Node.js 0.10.
1590
1591- Fixed some compilation warnings with some Windows compilers.
1592
1593## node-oracledb v1.6.0 (30 Jan 2016)
1594
1595- Added support for binding PL/SQL Collection Associative Array
1596 (Index-by) types containing numbers and strings (Dieter Oberkofler).
1597
1598- Fixed a LOB problem causing an uncaught error to be generated.
1599
1600- Removed the 'close' event that was incorrectly emitted for LOB Writable
1601 Streams. The Node.js Streams documentation specifies it only for
1602 Readable Streams.
1603
1604- Updated the LOB examples to show connection release.
1605
1606- Updated README so first-time users see pre-requisites earlier.
1607
1608- Extended the OS X install instructions with a way to install that doesn't
1609 need root access for Instant Client 11.2 on El Capitan.
1610
1611- Added RPATH link option when building on OS X in preparation for future client.
1612
1613- README updates (Kevin Sheedy)
1614
1615## node-oracledb v1.5.0 (21 Dec 2015)
1616
1617- Treat Oracle Database 'Success With Info' warnings as success (Francisco Trevino).
1618
1619- Extend rollback-on-connection-release with 11g Oracle Clients to occur for all non-query executions. (Not needed with 12c clients).
1620
1621- Updated OS X install instructions to work on El Capitan.
1622
1623- Display an error and prevent connection release while database calls are in progress.
1624
1625- Fixed intermittent crash while selecting data from CLOB column.
1626
1627- Fixed crash when trying to set invalid values for connection properties.
1628
1629## node-oracledb v1.4.0 (17 Nov 2015)
1630
1631- Upgraded NAN dependency to version 2 allowing node-oracledb to build
1632 with Node 0.10, 0.12, 4 and 5 (Richard Natal). Note: a compiler supporting C++11 is required to build with Node 4 and 5.
1633
1634- Fixed a cursor leak when statement execution fails.
1635
1636- Fixed a crash when accessing Pool properties on Windows.
1637
1638- Added a run-script 'testWindows' target for Windows testing. See [test/README.md](test/README.md)
1639
1640- Fixed compilation warnings with recent compilers.
1641
1642## node-oracledb v1.3.0 (15 Oct 2015)
1643
1644- Added a `oracledb.oracleClientVersion` property giving the version of the Oracle
1645 client library, and a `connection.oracleServerVersion` property giving the Oracle
1646 Database version.
1647
1648- Fixed `result.outBinds` corruption after PL/SQL execution.
1649
1650- Fixed null output from DML RETURNING with Oracle Database 11.2 when the string is of size 4000.
1651
1652- Fixed default bind direction to be `BIND_IN`.
1653
1654## node-oracledb v1.2.0 (25 Sep 2015)
1655
1656- Added support for RAW data type (Bruno Jouhier).
1657
1658- Added a `type` property to the Lob class to distinguish CLOB and BLOB types.
1659
1660- Changed write-only attributes of Connection objects to work with `console.log()`. Note the attribute values will show as `null`. Refer to the documentation.
1661
1662- Added a check to make sure `maxRows` is greater than zero for non-ResultSet queries.
1663
1664- Improved installer messages for Oracle client header and library detection on Linux, OS X and Solaris.
1665
1666- Optimized CLOB memory allocation to account for different database-to-client character set expansions.
1667
1668- Fixed a crash while reading a LOB from a closed connection.
1669
1670- Fixed a crash when selecting multiple rows with LOB values (Bruno Jouhier).
1671
1672- Corrected the order of Stream 'end' and 'close' events when reading a LOB (Bruno Jouhier).
1673
1674- Fixed AIX-specific REF CURSOR related failures.
1675
1676- Fixed intermittent crash while setting `fetchAsString`, and incorrect output while reading the value.
1677
1678- Added a check to return an NJS error when an invalid DML RETURN statement does not give an ORA error.
1679
1680- Removed non-portable memory allocation for queries that return NULL.
1681
1682- Fixed encoding issues with several files that caused compilation warnings in some Windows environments.
1683
1684- Made installation halt sooner for Node.js versions currently known to be unusable.
1685
1686- Fixed a typo in `examples/dbmsoutputgetline.js`
1687
1688- Windows install instruction updates (Bill Christo)
1689
1690## node-oracledb v1.1.0 (3 Sep 2015)
1691
1692- Enhanced pool.release() to drop the session if it is known to be unusable, allowing a new session to be created.
1693
1694- Optimized query memory allocation to account for different database-to-client character set expansions.
1695
1696- Fixed build warnings on Windows with VS 2015.
1697
1698- Fixed truncation issue while fetching numbers as strings.
1699
1700- Fixed AIX-specific failures with queries and RETURNING INTO clauses.
1701
1702- Fixed a crash with NULL or uninitialized REF CURSOR OUT bind variables.
1703
1704- Fixed potential memory leak when connecting throws an error.
1705
1706- Added a check to throw an error sooner when a CURSOR type is used for IN or IN OUT binds. (Support is pending).
1707
1708- Temporarily disabling setting lobPrefetchSize
1709
1710## node-oracledb v1.0.0 (17 Aug 2015)
1711
1712- Implemented Stream interface for CLOB and BLOB types, adding support for
1713 LOB queries, inserts, and PL/SQL LOB bind variables
1714
1715- Added `fetchAsString` and `execute()` option `fetchInfo` properties to allow numbers, dates and ROWIDs to be fetched as strings.
1716
1717- Added support for binding DATE, TIMESTAMP and TIMESTAMP WITH LOCAL TIME ZONE as `DATE` to DML RETURNING (aka RETURNING INTO) `type`.
1718
1719- The internal Oracle client character set is now always set to AL32UTF8.
1720
1721- The test suite and example scripts database credentials can now be set via environment variables.
1722
1723- Fixed issues with database-to-client character set conversion by allocating extra memory to allow for character expansion.
1724
1725- Fixed a crash with `ResultSet` and unsupported column data types.
1726
1727- Fixed a crash allocating memory for large `maxRows` values.
1728
1729- Fixed a bug preventing closing of a `ResultSet` when `getRow()` or `getRows()` returned an error.
1730
1731- Fixed date precision issues affecting insert and query.
1732
1733- Fixed `BIND_OUT` bind `type` not defaulting to `STRING`.
1734
1735- Fixed INSERT of a date when the SQL has a RETURNING INTO clause and the bind style is array format.
1736
1737- Improved RETURNING INTO handling of unsupported types and sizes.
1738
1739- Correctly throw an error when array and named bind syntaxes are mixed together.
1740
1741## node-oracledb v0.7.0 (20 Jul 2015)
1742
1743- Added result set support for fetching large data sets.
1744
1745- Added REF CURSOR support for returning query results from PL/SQL.
1746
1747- Added row prefetching support.
1748
1749- Added a test suite.
1750
1751- Fixed error handling for SQL statements using RETURNING INTO.
1752
1753- Fixed INSERT of a date when the SQL has a RETURNING INTO clause.
1754
1755- Renumbered the values used by the Oracledb Constants.
1756
1757## node-oracledb v0.6.0 (26 May 2015)
1758
1759- Node-oracledb now builds with Node.js 0.10, Node.js 0.12 and io.js (Richard Natal).
1760
1761- Fixed naming of `autoCommit` in examples.
1762
1763## node-oracledb v0.5.0 (5 May 2015)
1764
1765- Changed the `isAutoCommit` attribute name to `autoCommit`.
1766
1767- Changed the `isExternalAuth` attribute name to `externalAuth`.
1768
1769- Fixed `outBinds` array counting to not give empty array entries for IN binds.
1770
1771- Added support for DML RETURNING bind variables.
1772
1773- Rectified the error message for invalid type properties.
1774
1775## node-oracledb v0.4.2 (28 Mar 2015)
1776
1777- node-oracledb is now officially installable from https://www.npmjs.com/package/oracledb (Tim Branyen)
1778
1779- Added metadata support. Query column names are now provided in the `execute()` callback result object.
1780
1781- Require a more recent version of Node.js 0.10.
1782
1783- Changed the default Instant Client directory on AIX from /opt/oracle/instantclient_12_1 to /opt/oracle/instantclient.
1784
1785## node-oracledb v0.4.1 (13 Mar 2015)
1786
1787- Added support for External Authentication.
1788
1789- The `isAutoCommit` flags now works with query execution. This is useful in cases where multiple DML statements are executed followed by a SELECT statement. This can be used to avoid a round trip to the database that an explicit call to `commit()` would add.
1790
1791- Added AIX build support to package.json (Hannes Prirschl).
1792
1793- Improved errors messages when setting out of range property values.
1794
1795- Fixed a bug: When `terminate()` of a connection pool fails because connections have not yet been closed, subsequent use of `release()` to close those connections no longer gives an error "ORA-24550: Signal Received".
1796
1797- Some code refactoring (Krishna Narasimhan).
1798
1799## node-oracledb v0.3.1 (16 Feb 2015)
1800
1801- Added Windows build configuration (Rinie Kervel).
1802
1803- Added Database Resident Connection Pooling (DRCP) support.
1804
1805- Made an explicit connection `release()` do a rollback, to be consistent with the implicit release behavior.
1806
1807- Made install on Linux look for Oracle libraries in a search order.
1808
1809- Added RPATH support on Linux.
1810
1811- Changed default Oracle Instant client paths to /opt/oracle/instantclient and C:\oracle\instantclient
1812
1813- Added a compile error message "Oracle 11.2 or later client libraries are required for building" if attempting to build with older Oracle client libraries.
1814
1815- Fixed setting the `isAutoCommit` property.
1816
1817- Fixed a crash using pooled connections on Windows.
1818
1819- Fixed a crash querying object types.
1820
1821- Fixed a crash doing a release after a failed terminate. (The Pool is still unusable - this will be fixed later)
1822
1823## node-oracledb v0.2.4 (20 Jan 2015 - initial release)
1824
1825**Initial Features include**:
1826
1827- SQL and PL/SQL Execution
1828
1829- Binding using JavaScript objects or arrays
1830
1831- Query results as JavaScript objects or array
1832
1833- Conversion between JavaScript and Oracle types
1834
1835- Transaction Management
1836
1837- Connection Pooling
1838
1839- Statement Caching
1840
1841- Client Result Caching
1842
1843- End-to-end tracing
1844
1845- High Availability Features
1846
1847 - Fast Application Notification (FAN)
1848
1849 - Runtime Load Balancing (RLB)
1850
1851 - Transparent Application Failover (TAF)