Skip to content

Commit 09b4709

Browse files
committed
Prepare for 6.10 release
1 parent a2a4cda commit 09b4709

File tree

10 files changed

+86
-19
lines changed

10 files changed

+86
-19
lines changed

doc/src/release_notes.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ that impact both Thin and Thick modes ('Common'), the changes that
1313
affect Thin mode (the default runtime behavior of node-oracledb from 6.0.0),
1414
and the changes that affect the optional :ref:`Thick Mode <enablingthick>`.
1515

16-
node-oracledb `v6.10.0 <https://github.com/oracle/node-oracledb/compare/v6.9.0...v6.10.0>`__ ()
17-
---------------------------------------------------------------------------------------------------------
16+
node-oracledb `v6.10.0 <https://github.com/oracle/node-oracledb/compare/v6.9.0...v6.10.0>`__ (16 Oct 2025)
17+
-----------------------------------------------------------------------------------------------------------
1818

1919
Common Changes
2020
++++++++++++++

doc/src/user_guide/aq.rst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,11 @@ Only node-oracledb :ref:`Thick mode <enablingthick>` supports the use of:
8181
- Visibility constant :data:`oracledb.AQ_VISIBILITY_IMMEDIATE` in
8282
:meth:`aqQueue.enqMany()` and :meth:`aqQueue.deqMany()` methods
8383

84+
The ``payloadType`` attribute in :meth:`connection.getQueue()` must be
85+
specified when the payload is :ref:`JSON <aqjsonexample>` or
86+
:ref:`Named Oracle Objects <aqobjexample>`. This attribute need not be
87+
specified for :ref:`RAW <aqrawexample>` payload.
88+
8489
Transactional Event Queues do not support the ``transformation``
8590
attribute of :attr:`aqQueue.enqOptions` and :attr:`aqQueue.deqOptions`, or
8691
:ref:`Recipient Lists <aqrecipientlists>`.

doc/src/user_guide/authentication_methods.rst

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -235,6 +235,41 @@ connections exceeds ``poolMin`` and connections are idle for more than
235235
the :attr:`oracledb.poolTimeout` seconds, then the number of
236236
open connections does not fall below ``poolMin``.
237237

238+
**In node-oracledb Thin mode**
239+
240+
In node-oracledb Thin mode, you can use external authentication combined with
241+
proxy authentication when using a homogeneous pool. To use this, set the
242+
``externalAuth`` property to *true* and define the proxy user in the ``user``
243+
property of the :meth:`oracledb.createPool()`.
244+
245+
In the following example, ``ssl_user`` (authenticated externally through SSL)
246+
is allowed to connect as a proxy for ``password_user``:
247+
248+
.. code-block:: sql
249+
250+
CREATE USER password_user IDENTIFIED BY <password>;
251+
GRANT CONNECT TO password_user;
252+
253+
CREATE USER ssl_user IDENTIFIED EXTERNALLY AS 'CN=ssl_user';
254+
GRANT CONNECT TO ssl_user;
255+
256+
ALTER USER password_user GRANT CONNECT THROUGH ssl_user;
257+
258+
You can then connect to Oracle Database using:
259+
260+
.. code-block:: javascript
261+
262+
const proxyUserConnectionAttributes = {
263+
walletLocation: "/opt/OracleCloud",
264+
connectString: "tcps://localhost:2484/FREEPDB1",
265+
walletPassword: wp,
266+
externalAuth: true,
267+
user: "[PASSWORD_USER]",
268+
};
269+
await oracledb.createPool(proxyUserConnectionAttributes);
270+
const connection = await pool.getConnection();
271+
await connection.close();
272+
238273
.. _tlsextauth:
239274

240275
External Authentication Using TLS

examples/aqmulti.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ if (process.env.NODE_ORACLEDB_DRIVER_MODE === 'thick') {
6363
oracledb.initOracleClient(clientOpts); // enable node-oracledb Thick mode
6464
}
6565

66+
console.log(oracledb.thin ? 'Running in thin mode' : 'Running in thick mode');
67+
6668
const queueName = "DEMO_RAW_QUEUE";
6769
const RAW_TABLE = "NODB_RAW_QUEUE_TAB";
6870
const AQ_USER = "NODB_SCHEMA_AQTEST1";

examples/aqobject.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ if (process.env.NODE_ORACLEDB_DRIVER_MODE === 'thick') {
6363
oracledb.initOracleClient(clientOpts); // enable node-oracledb Thick mode
6464
}
6565

66+
console.log(oracledb.thin ? 'Running in thin mode' : 'Running in thick mode');
67+
6668
const queueName = "ADDR_QUEUE";
6769
const ADDR_TABLE = "ADDR_QUEUE_TAB";
6870
const DB_OBJECT = "USER_ADDRESS_TYPE";

examples/aqoptions.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ if (process.env.NODE_ORACLEDB_DRIVER_MODE === 'thick') {
6363
oracledb.initOracleClient(clientOpts); // enable node-oracledb Thick mode
6464
}
6565

66+
console.log(oracledb.thin ? 'Running in thin mode' : 'Running in thick mode');
67+
6668
const queueName = "DEMO_RAW_QUEUE";
6769
const RAW_TABLE = "NODB_RAW_QUEUE_TAB";
6870
const AQ_USER = "NODB_SCHEMA_AQTEST1";

examples/aqraw.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ if (process.env.NODE_ORACLEDB_DRIVER_MODE === 'thick') {
6363
oracledb.initOracleClient(clientOpts); // enable node-oracledb Thick mode
6464
}
6565

66+
console.log(oracledb.thin ? 'Running in thin mode' : 'Running in thick mode');
67+
6668
const queueName = "DEMO_RAW_QUEUE";
6769
const RAW_TABLE = "NODB_RAW_QUEUE_TAB";
6870
const AQ_USER = "NODB_SCHEMA_AQTEST1";

test/jsonDualityViews2.js

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ describe('273. jsonDualityView2.js', function() {
7575
const pwd = testsUtil.generateRandomPassword();
7676

7777
dbaConn = await oracledb.getConnection(dbaCredential);
78+
7879
await dbaConn.execute(`CREATE USER jsonDv2 IDENTIFIED BY ${pwd}`);
7980
await dbaConn.execute(`GRANT CREATE SESSION, RESOURCE, CONNECT,
8081
UNLIMITED TABLESPACE TO jsonDv2`);
@@ -87,9 +88,12 @@ describe('273. jsonDualityView2.js', function() {
8788
after(async function() {
8889
if (!isRunnable) return;
8990

90-
await connection.close();
91-
await dbaConn.execute(`DROP USER jsonDv2 CASCADE`);
92-
await dbaConn.close();
91+
if (connection) await connection.close();
92+
93+
if (dbaConn) {
94+
await dbaConn.execute(`DROP USER jsonDv2 CASCADE`);
95+
await dbaConn.close();
96+
}
9397
});
9498

9599
it('273.1 without base table being available (use force option at view creation)', async function() {
@@ -339,6 +343,7 @@ describe('273. jsonDualityView2.js', function() {
339343
if (dbConfig.test.drcp) {
340344
this.skip();
341345
}
346+
342347
await dbaConn.execute(createUser1);
343348
await dbaConn.execute(grantPriv1);
344349
await dbaConn.execute(createUser2);
@@ -358,10 +363,15 @@ describe('273. jsonDualityView2.js', function() {
358363
if (dbConfig.test.drcp) {
359364
return;
360365
}
361-
await conn2.close();
362-
await conn1.close();
363-
await dbaConn.execute(`DROP USER njs_test1 CASCADE`);
364-
await dbaConn.execute(`DROP USER njs_test2 CASCADE`);
366+
367+
if (conn2) await conn2.close();
368+
369+
if (conn1) await conn1.close();
370+
371+
if (dbaConn) {
372+
await dbaConn.execute(`DROP USER njs_test1 CASCADE`);
373+
await dbaConn.execute(`DROP USER njs_test2 CASCADE`);
374+
}
365375
});
366376

367377
it('273.9.1 Base table in one schema and View in another schema', async function() {
@@ -508,6 +518,7 @@ describe('273. jsonDualityView2.js', function() {
508518
if (dbConfig.test.drcp) {
509519
this.skip();
510520
}
521+
511522
await dbaConn.execute(`CREATE USER njs_testuser1 IDENTIFIED BY ${pwd}`);
512523
await dbaConn.execute(`GRANT CREATE SESSION, RESOURCE, CREATE TABLE,
513524
UNLIMITED TABLESPACE TO njs_testuser1`);
@@ -518,7 +529,10 @@ describe('273. jsonDualityView2.js', function() {
518529
if (dbConfig.test.drcp) {
519530
return;
520531
}
521-
await dbaConn.execute(`DROP USER njs_testuser1 CASCADE`);
532+
533+
if (dbaConn) {
534+
await dbaConn.execute(`DROP USER njs_testuser1 CASCADE`);
535+
}
522536
});
523537

524538
it('273.10.1 redaction enabled on a base table', async function() {

test/jsonDualityViews3.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ describe('274 jsonDualityView3.js', function() {
6969
};
7070

7171
dbaConn = await oracledb.getConnection(dbaCredential);
72+
7273
await dbaConn.execute(
7374
`CREATE USER njs_jsonDv3 IDENTIFIED BY ${pwd}`
7475
);
@@ -85,9 +86,12 @@ describe('274 jsonDualityView3.js', function() {
8586
after(async function() {
8687
if (!isRunnable || dbConfig.test.isCmanTdm) return;
8788

88-
await connection.close();
89-
await dbaConn.execute(`DROP USER njs_jsonDv3 CASCADE`);
90-
await dbaConn.close();
89+
if (connection) await connection.close();
90+
91+
if (dbaConn) {
92+
await dbaConn.execute(`DROP USER njs_jsonDv3 CASCADE`);
93+
await dbaConn.close();
94+
}
9195
});
9296

9397
it('274.1 Define Columns of View with WITH READ WRITE or WITH READ ONLY annotations', async function() {

test/jsonDualityViews4.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -110,13 +110,14 @@ describe('275. jsonDualityView4.js', function() {
110110
after(async function() {
111111
if (!isRunnable || dbConfig.test.isCmanTdm) return;
112112

113-
await testsUtil.dropTable(connection, 'student_class');
114-
await testsUtil.dropTable(connection, 'student');
115-
await testsUtil.dropTable(connection, 'class');
116-
117-
await connection.close();
118-
await dbaConn.execute(`DROP USER njs_jsonDv4 CASCADE`);
113+
if (connection) {
114+
await testsUtil.dropTable(connection, 'student_class');
115+
await testsUtil.dropTable(connection, 'student');
116+
await testsUtil.dropTable(connection, 'class');
117+
await connection.close();
118+
}
119119

120+
if (dbaConn) await dbaConn.execute(`DROP USER njs_jsonDv4 CASCADE`);
120121
await dbaConn.close();
121122
});
122123

0 commit comments

Comments
 (0)