oracledb 5.5.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +1 -1875
  2. package/LICENSE.txt +8 -222
  3. package/NOTICE.txt +1 -1
  4. package/README.md +38 -30
  5. package/SECURITY.md +38 -0
  6. package/build/Release/oracledb-6.0.0-darwin-x64.node +0 -0
  7. package/build/Release/oracledb-6.0.0-darwin-x64.node-buildinfo.txt +1 -0
  8. package/build/Release/oracledb-6.0.0-js-buildinfo.txt +1 -0
  9. package/build/Release/oracledb-6.0.0-linux-arm64.node +0 -0
  10. package/build/Release/oracledb-6.0.0-linux-arm64.node-buildinfo.txt +1 -0
  11. package/build/Release/oracledb-6.0.0-linux-x64.node +0 -0
  12. package/build/Release/oracledb-6.0.0-linux-x64.node-buildinfo.txt +1 -0
  13. package/build/Release/oracledb-6.0.0-win32-x64.node +0 -0
  14. package/build/Release/oracledb-6.0.0-win32-x64.node-buildinfo.txt +1 -0
  15. package/examples/README.md +113 -0
  16. package/examples/dbconfig.js +100 -0
  17. package/examples/example.js +156 -0
  18. package/index.js +26 -0
  19. package/lib/aqDeqOptions.js +146 -7
  20. package/lib/aqEnqOptions.js +59 -7
  21. package/lib/aqMessage.js +118 -7
  22. package/lib/aqQueue.js +242 -53
  23. package/lib/connection.js +1324 -465
  24. package/lib/constants.js +203 -0
  25. package/lib/dbObject.js +346 -32
  26. package/lib/errors.js +781 -0
  27. package/lib/impl/aqDeqOptions.js +197 -0
  28. package/lib/impl/aqEnqOptions.js +89 -0
  29. package/lib/impl/aqMessage.js +134 -0
  30. package/lib/impl/aqQueue.js +81 -0
  31. package/lib/impl/connection.js +529 -0
  32. package/lib/impl/dbObject.js +159 -0
  33. package/lib/impl/index.js +59 -0
  34. package/lib/impl/lob.js +85 -0
  35. package/lib/impl/pool.js +195 -0
  36. package/lib/impl/resultset.js +223 -0
  37. package/lib/impl/sodaCollection.js +174 -0
  38. package/lib/impl/sodaDatabase.js +81 -0
  39. package/lib/impl/sodaDocCursor.js +63 -0
  40. package/lib/impl/sodaDocument.js +98 -0
  41. package/lib/impl/sodaOperation.js +109 -0
  42. package/lib/lob.js +156 -68
  43. package/lib/oracledb.js +1047 -345
  44. package/lib/pool.js +654 -465
  45. package/lib/poolStatistics.js +23 -9
  46. package/lib/queryStream.js +14 -7
  47. package/lib/resultset.js +291 -183
  48. package/lib/settings.js +191 -0
  49. package/lib/sodaCollection.js +214 -201
  50. package/lib/sodaDatabase.js +107 -71
  51. package/lib/sodaDocCursor.js +44 -32
  52. package/lib/sodaDocument.js +76 -14
  53. package/lib/sodaOperation.js +131 -118
  54. package/lib/thin/connection.js +1038 -0
  55. package/lib/thin/dbObject.js +629 -0
  56. package/lib/thin/index.js +40 -0
  57. package/lib/thin/lob.js +188 -0
  58. package/lib/thin/pool.js +481 -0
  59. package/lib/thin/protocol/buffer.js +1040 -0
  60. package/lib/thin/protocol/capabilities.js +116 -0
  61. package/lib/thin/protocol/constants.js +764 -0
  62. package/lib/thin/protocol/encryptDecrypt.js +185 -0
  63. package/lib/thin/protocol/messages/auth.js +348 -0
  64. package/lib/thin/protocol/messages/base.js +475 -0
  65. package/lib/thin/protocol/messages/commit.js +56 -0
  66. package/lib/thin/protocol/messages/dataType.js +382 -0
  67. package/lib/thin/protocol/messages/execute.js +312 -0
  68. package/lib/thin/protocol/messages/fetch.js +60 -0
  69. package/lib/thin/protocol/messages/index.js +53 -0
  70. package/lib/thin/protocol/messages/lobOp.js +200 -0
  71. package/lib/thin/protocol/messages/logOff.js +53 -0
  72. package/lib/thin/protocol/messages/ping.js +56 -0
  73. package/lib/thin/protocol/messages/protocol.js +78 -0
  74. package/lib/thin/protocol/messages/rollback.js +56 -0
  75. package/lib/thin/protocol/messages/sessionRelease.js +60 -0
  76. package/lib/thin/protocol/messages/withData.js +811 -0
  77. package/lib/thin/protocol/oson.js +660 -0
  78. package/lib/thin/protocol/packet.js +520 -0
  79. package/lib/thin/protocol/protocol.js +202 -0
  80. package/lib/thin/protocol/utils.js +88 -0
  81. package/lib/thin/resultSet.js +122 -0
  82. package/lib/thin/sqlnet/connStrategy.js +175 -0
  83. package/lib/thin/sqlnet/constants.js +199 -0
  84. package/lib/thin/sqlnet/ezConnectResolver.js +488 -0
  85. package/lib/thin/sqlnet/navNodes.js +870 -0
  86. package/lib/thin/sqlnet/networkSession.js +620 -0
  87. package/lib/thin/sqlnet/ntTcp.js +525 -0
  88. package/lib/thin/sqlnet/nvStrToNvPair.js +783 -0
  89. package/lib/thin/sqlnet/packet.js +405 -0
  90. package/lib/thin/sqlnet/paramParser.js +205 -0
  91. package/lib/thin/sqlnet/sessionAtts.js +160 -0
  92. package/lib/thin/statement.js +301 -0
  93. package/lib/thin/util.js +289 -0
  94. package/lib/transformer.js +250 -0
  95. package/lib/types.js +357 -0
  96. package/lib/util.js +194 -110
  97. package/lib/version.js +36 -0
  98. package/package/README.md +33 -30
  99. package/package/install.js +89 -64
  100. package/package/prunebinaries.js +60 -12
  101. package/package.json +3 -3
  102. package/build/Release/oracledb-5.5.0-darwin-x64.node +0 -0
  103. package/build/Release/oracledb-5.5.0-darwin-x64.node-buildinfo.txt +0 -1
  104. package/build/Release/oracledb-5.5.0-linux-x64.node +0 -0
  105. package/build/Release/oracledb-5.5.0-linux-x64.node-buildinfo.txt +0 -1
  106. package/build/Release/oracledb-5.5.0-win32-x64.node +0 -0
  107. package/build/Release/oracledb-5.5.0-win32-x64.node-buildinfo.txt +0 -1
package/LICENSE.txt CHANGED
@@ -1,218 +1,18 @@
1
- -------------------------------------------------------------------------------
2
- node-oracledb
3
- -------------------------------------------------------------------------------
1
+ Copyright (c) 2015, 2023 Oracle and/or its affiliates.
4
2
 
5
- You may not use the identified files except in compliance with the
6
- Apache License, Version 2.0 (the "License.")
3
+ This software is dual-licensed to you under the Universal Permissive License
4
+ (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License
5
+ 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose
6
+ either license.
7
7
 
8
- You may obtain a copy of the License at
9
- http://www.apache.org/licenses/LICENSE-2.0. A copy of the license is
10
- also reproduced below.
11
-
12
- Unless required by applicable law or agreed to in writing, software
13
- distributed under the License is distributed on an "AS IS" BASIS,
14
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
15
- implied.
16
-
17
- See the License for the specific language governing permissions and
18
- limitations under the License.
19
-
20
-
21
- Apache License
22
- Version 2.0, January 2004
23
- http://www.apache.org/licenses/
24
-
25
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
26
-
27
- 1. Definitions.
28
-
29
- "License" shall mean the terms and conditions for use, reproduction,
30
- and distribution as defined by Sections 1 through 9 of this document.
31
-
32
- "Licensor" shall mean the copyright owner or entity authorized by
33
- the copyright owner that is granting the License.
34
-
35
- "Legal Entity" shall mean the union of the acting entity and all
36
- other entities that control, are controlled by, or are under common
37
- control with that entity. For the purposes of this definition,
38
- "control" means (i) the power, direct or indirect, to cause the
39
- direction or management of such entity, whether by contract or
40
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
41
- outstanding shares, or (iii) beneficial ownership of such entity.
42
-
43
- "You" (or "Your") shall mean an individual or Legal Entity
44
- exercising permissions granted by this License.
45
-
46
- "Source" form shall mean the preferred form for making modifications,
47
- including but not limited to software source code, documentation
48
- source, and configuration files.
49
-
50
- "Object" form shall mean any form resulting from mechanical
51
- transformation or translation of a Source form, including but
52
- not limited to compiled object code, generated documentation,
53
- and conversions to other media types.
54
-
55
- "Work" shall mean the work of authorship, whether in Source or
56
- Object form, made available under the License, as indicated by a
57
- copyright notice that is included in or attached to the work
58
- (an example is provided in the Appendix below).
59
-
60
- "Derivative Works" shall mean any work, whether in Source or Object
61
- form, that is based on (or derived from) the Work and for which the
62
- editorial revisions, annotations, elaborations, or other modifications
63
- represent, as a whole, an original work of authorship. For the purposes
64
- of this License, Derivative Works shall not include works that remain
65
- separable from, or merely link (or bind by name) to the interfaces of,
66
- the Work and Derivative Works thereof.
67
-
68
- "Contribution" shall mean any work of authorship, including
69
- the original version of the Work and any modifications or additions
70
- to that Work or Derivative Works thereof, that is intentionally
71
- submitted to Licensor for inclusion in the Work by the copyright owner
72
- or by an individual or Legal Entity authorized to submit on behalf of
73
- the copyright owner. For the purposes of this definition, "submitted"
74
- means any form of electronic, verbal, or written communication sent
75
- to the Licensor or its representatives, including but not limited to
76
- communication on electronic mailing lists, source code control systems,
77
- and issue tracking systems that are managed by, or on behalf of, the
78
- Licensor for the purpose of discussing and improving the Work, but
79
- excluding communication that is conspicuously marked or otherwise
80
- designated in writing by the copyright owner as "Not a Contribution."
81
-
82
- "Contributor" shall mean Licensor and any individual or Legal Entity
83
- on behalf of whom a Contribution has been received by Licensor and
84
- subsequently incorporated within the Work.
85
-
86
- 2. Grant of Copyright License. Subject to the terms and conditions of
87
- this License, each Contributor hereby grants to You a perpetual,
88
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
89
- copyright license to reproduce, prepare Derivative Works of,
90
- publicly display, publicly perform, sublicense, and distribute the
91
- Work and such Derivative Works in Source or Object form.
92
-
93
- 3. Grant of Patent License. Subject to the terms and conditions of
94
- this License, each Contributor hereby grants to You a perpetual,
95
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
96
- (except as stated in this section) patent license to make, have made,
97
- use, offer to sell, sell, import, and otherwise transfer the Work,
98
- where such license applies only to those patent claims licensable
99
- by such Contributor that are necessarily infringed by their
100
- Contribution(s) alone or by combination of their Contribution(s)
101
- with the Work to which such Contribution(s) was submitted. If You
102
- institute patent litigation against any entity (including a
103
- cross-claim or counterclaim in a lawsuit) alleging that the Work
104
- or a Contribution incorporated within the Work constitutes direct
105
- or contributory patent infringement, then any patent licenses
106
- granted to You under this License for that Work shall terminate
107
- as of the date such litigation is filed.
108
-
109
- 4. Redistribution. You may reproduce and distribute copies of the
110
- Work or Derivative Works thereof in any medium, with or without
111
- modifications, and in Source or Object form, provided that You
112
- meet the following conditions:
113
-
114
- (a) You must give any other recipients of the Work or
115
- Derivative Works a copy of this License; and
116
-
117
- (b) You must cause any modified files to carry prominent notices
118
- stating that You changed the files; and
119
-
120
- (c) You must retain, in the Source form of any Derivative Works
121
- that You distribute, all copyright, patent, trademark, and
122
- attribution notices from the Source form of the Work,
123
- excluding those notices that do not pertain to any part of
124
- the Derivative Works; and
125
-
126
- (d) If the Work includes a "NOTICE" text file as part of its
127
- distribution, then any Derivative Works that You distribute must
128
- include a readable copy of the attribution notices contained
129
- within such NOTICE file, excluding those notices that do not
130
- pertain to any part of the Derivative Works, in at least one
131
- of the following places: within a NOTICE text file distributed
132
- as part of the Derivative Works; within the Source form or
133
- documentation, if provided along with the Derivative Works; or,
134
- within a display generated by the Derivative Works, if and
135
- wherever such third-party notices normally appear. The contents
136
- of the NOTICE file are for informational purposes only and
137
- do not modify the License. You may add Your own attribution
138
- notices within Derivative Works that You distribute, alongside
139
- or as an addendum to the NOTICE text from the Work, provided
140
- that such additional attribution notices cannot be construed
141
- as modifying the License.
142
-
143
- You may add Your own copyright statement to Your modifications and
144
- may provide additional or different license terms and conditions
145
- for use, reproduction, or distribution of Your modifications, or
146
- for any such Derivative Works as a whole, provided Your use,
147
- reproduction, and distribution of the Work otherwise complies with
148
- the conditions stated in this License.
149
-
150
- 5. Submission of Contributions. Unless You explicitly state otherwise,
151
- any Contribution intentionally submitted for inclusion in the Work
152
- by You to the Licensor shall be under the terms and conditions of
153
- this License, without any additional terms or conditions.
154
- Notwithstanding the above, nothing herein shall supersede or modify
155
- the terms of any separate license agreement you may have executed
156
- with Licensor regarding such Contributions.
157
-
158
- 6. Trademarks. This License does not grant permission to use the trade
159
- names, trademarks, service marks, or product names of the Licensor,
160
- except as required for reasonable and customary use in describing the
161
- origin of the Work and reproducing the content of the NOTICE file.
162
-
163
- 7. Disclaimer of Warranty. Unless required by applicable law or
164
- agreed to in writing, Licensor provides the Work (and each
165
- Contributor provides its Contributions) on an "AS IS" BASIS,
166
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
167
- implied, including, without limitation, any warranties or conditions
168
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
169
- PARTICULAR PURPOSE. You are solely responsible for determining the
170
- appropriateness of using or redistributing the Work and assume any
171
- risks associated with Your exercise of permissions under this License.
172
-
173
- 8. Limitation of Liability. In no event and under no legal theory,
174
- whether in tort (including negligence), contract, or otherwise,
175
- unless required by applicable law (such as deliberate and grossly
176
- negligent acts) or agreed to in writing, shall any Contributor be
177
- liable to You for damages, including any direct, indirect, special,
178
- incidental, or consequential damages of any character arising as a
179
- result of this License or out of the use or inability to use the
180
- Work (including but not limited to damages for loss of goodwill,
181
- work stoppage, computer failure or malfunction, or any and all
182
- other commercial damages or losses), even if such Contributor
183
- has been advised of the possibility of such damages.
184
-
185
- 9. Accepting Warranty or Additional Liability. While redistributing
186
- the Work or Derivative Works thereof, You may choose to offer,
187
- and charge a fee for, acceptance of support, warranty, indemnity,
188
- or other liability obligations and/or rights consistent with this
189
- License. However, in accepting such obligations, You may act only
190
- on Your own behalf and on Your sole responsibility, not on behalf
191
- of any other Contributor, and only if You agree to indemnify,
192
- defend, and hold each Contributor harmless for any liability
193
- incurred by, or claims asserted against, such Contributor by reason
194
- of your accepting any such warranty or additional liability.
195
-
196
- END OF TERMS AND CONDITIONS
197
-
198
- APPENDIX: How to apply the Apache License to your work.
199
-
200
- To apply the Apache License to your work, attach the following
201
- boilerplate notice, with the fields enclosed by brackets "[]"
202
- replaced with your own identifying information. (Don't include
203
- the brackets!) The text should be enclosed in the appropriate
204
- comment syntax for the file format. We also recommend that a
205
- file or class name and description of purpose be included on the
206
- same "printed page" as the copyright notice for easier
207
- identification within third-party archives.
208
-
209
- Copyright [yyyy] [name of copyright owner]
8
+ If you elect to accept the software under the Apache License, Version 2.0,
9
+ the following applies:
210
10
 
211
11
  Licensed under the Apache License, Version 2.0 (the "License");
212
12
  you may not use this file except in compliance with the License.
213
13
  You may obtain a copy of the License at
214
14
 
215
- http://www.apache.org/licenses/LICENSE-2.0
15
+ https://www.apache.org/licenses/LICENSE-2.0
216
16
 
217
17
  Unless required by applicable law or agreed to in writing, software
218
18
  distributed under the License is distributed on an "AS IS" BASIS,
@@ -220,20 +20,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
220
20
  See the License for the specific language governing permissions and
221
21
  limitations under the License.
222
22
 
223
- -------------------------------------------------------------------------------
224
- ODPI-C
225
- -------------------------------------------------------------------------------
226
-
227
- Copyright (c) 2016, 2022 Oracle and/or its affiliates.
228
-
229
- This program is free software: you can modify it and/or redistribute it under
230
- the terms of:
231
-
232
- (i) the Universal Permissive License v 1.0 or at your option, any
233
- later version (<http://oss.oracle.com/licenses/upl>); and/or
234
-
235
- (ii) the Apache License v 2.0. (<http://www.apache.org/licenses/LICENSE-2.0>)
236
-
237
23
 
238
24
  The Universal Permissive License (UPL), Version 1.0
239
25
  ===================================================
package/NOTICE.txt CHANGED
@@ -1 +1 @@
1
- Copyright (c) 2015, 2022, Oracle and/or its affiliates.
1
+ Copyright (c) 2015, 2023, Oracle and/or its affiliates.
package/README.md CHANGED
@@ -1,11 +1,12 @@
1
- # node-oracledb version 5.5.0
1
+ # node-oracledb version 6.0.0
2
2
 
3
3
  The node-oracledb add-on for Node.js powers high performance Oracle Database
4
4
  applications. Applications can be written in TypeScript, or directly in
5
5
  JavaScript.
6
6
 
7
- Use node-oracledb 5.5.0 to connect Node.js 14, or later, to Oracle Database.
8
- Older versions of node-oracledb may work with older versions of Node.js.
7
+ Use node-oracledb 6.0.0 to connect Node.js 14.6, or later, to Oracle
8
+ Database. Older versions of node-oracledb may work with older versions of
9
+ Node.js.
9
10
 
10
11
  Node-oracledb supports basic and advanced features of Oracle Database
11
12
  and Oracle Client. See the [homepage][4] for a list.
@@ -13,19 +14,19 @@ and Oracle Client. See the [homepage][4] for a list.
13
14
  The node-oracledb module is open source and maintained by Oracle Corp.
14
15
  It is stable, well documented, and has a comprehensive test suite.
15
16
 
16
- ## <a name="installation"></a> Installation
17
+ ## Installation
17
18
 
18
19
  See [Getting Started with Node-oracledb][1] and [Quick Start Node-oracledb Installation][2].
19
20
 
20
- ## <a name="doc"></a> Documentation
21
+ ## Documentation
21
22
 
22
23
  See [Documentation for the Oracle Database Node.js Add-on][32] and the [CHANGELOG][33].
23
24
 
24
- ## <a name="examples"></a> Examples
25
+ ## Examples
25
26
 
26
27
  See the [examples][30] directory. Start with [examples/example.js][31].
27
28
 
28
- ## <a name="help"></a> Help
29
+ ## Help
29
30
 
30
31
  Issues and questions about node-oracledb can be posted on [GitHub][3] or
31
32
  [Slack][5] ([link to join Slack][6]).
@@ -34,45 +35,52 @@ Issues and questions about node-oracledb can be posted on [GitHub][3] or
34
35
 
35
36
  To run the test suite see [test/README][34].
36
37
 
37
- ## <a name="contrib"></a> Contributing
38
+ ## Contributing
38
39
 
39
- Node-oracledb is an open source project. See [CONTRIBUTING][35] for
40
- details.
40
+ This project welcomes contributions from the community. Before submitting a
41
+ pull request, please [review our contribution guide][35].
41
42
 
42
- Oracle gratefully acknowledges the contributions to node-oracledb that
43
- have been made by the community.
43
+ Oracle gratefully acknowledges the contributions to node-oracledb that have
44
+ been made by the community.
44
45
 
45
- ## <a name="license"></a> License
46
+ ## Security
46
47
 
47
- Copyright (c) 2015, 2022, Oracle and/or its affiliates.
48
+ Please consult the [security guide](./SECURITY.md) for our responsible security
49
+ vulnerability disclosure process.
48
50
 
49
- You may not use the identified files except in compliance with the Apache
50
- License, Version 2.0 (the "License.")
51
+ ## License
51
52
 
53
+ Copyright (c) 2015, 2023, Oracle and/or its affiliates.
54
+
55
+ This software is dual-licensed to you under the Universal Permissive License
56
+ (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License
57
+ 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose
58
+ either license.
59
+
60
+ If you elect to accept the software under the Apache License, Version 2.0,
61
+ the following applies:
62
+
63
+ Licensed under the Apache License, Version 2.0 (the "License");
64
+ you may not use this file except in compliance with the License.
52
65
  You may obtain a copy of the License at
53
- [http://www.apache.org/licenses/LICENSE-2.0][36]. Unless required by
54
- applicable law or agreed to in writing, software distributed under the
55
- License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
56
- CONDITIONS OF ANY KIND, either express or implied.
57
66
 
67
+ https://www.apache.org/licenses/LICENSE-2.0
68
+
69
+ Unless required by applicable law or agreed to in writing, software
70
+ distributed under the License is distributed on an "AS IS" BASIS,
71
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
58
72
  See the License for the specific language governing permissions and
59
73
  limitations under the License.
60
74
 
61
- Developers choosing to distribute a binary implementation of this project are
62
- responsible for obtaining and providing all required licenses and copyright
63
- notices for the third-party code used in order to ensure compliance with their
64
- respective open source licenses.
65
-
66
- [1]: https://oracle.github.io/node-oracledb/doc/api.html#getstarted
67
- [2]: https://oracle.github.io/node-oracledb/INSTALL.html#quickstart
75
+ [1]: https://node-oracledb.readthedocs.io/en/latest/user_guide/introduction.html#getstarted
76
+ [2]: https://node-oracledb.readthedocs.io/en/latest/user_guide/installation.html#quickstart
68
77
  [3]: https://github.com/oracle/node-oracledb/issues
69
78
  [4]: https://oracle.github.io/node-oracledb
70
79
  [5]: https://node-oracledb.slack.com/
71
80
  [6]: https://join.slack.com/t/node-oracledb/shared_invite/enQtNDU4Mjc2NzM5OTA2LWMzY2ZlZDY5MDdlMGZiMGRkY2IzYjI5OGU4YTEzZWM5YjQ3ODUzMjcxNWQyNzE4MzM5YjNkYjVmNDk5OWU5NDM
72
81
  [30]: https://github.com/oracle/node-oracledb/blob/main/examples
73
- [31]: https://github.com/oracle/node-oracledb/blob/main/examples/example.js#L32
74
- [32]: https://oracle.github.io/node-oracledb/doc/api.html
82
+ [31]: https://github.com/oracle/node-oracledb/blob/main/examples/example.js
83
+ [32]: https://node-oracledb.readthedocs.io/en/latest/
75
84
  [33]: https://github.com/oracle/node-oracledb/blob/main/CHANGELOG.md
76
85
  [34]: https://github.com/oracle/node-oracledb/blob/main/test/README.md
77
86
  [35]: https://github.com/oracle/node-oracledb/blob/main/CONTRIBUTING.md
78
- [36]: http://www.apache.org/licenses/LICENSE-2.0
package/SECURITY.md ADDED
@@ -0,0 +1,38 @@
1
+ # Reporting security vulnerabilities
2
+
3
+ Oracle values the independent security research community and believes that
4
+ responsible disclosure of security vulnerabilities helps us ensure the security
5
+ and privacy of all our users.
6
+
7
+ Please do NOT raise a GitHub Issue to report a security vulnerability. If you
8
+ believe you have found a security vulnerability, please submit a report to
9
+ [secalert_us@oracle.com][1] preferably with a proof of concept. Please review
10
+ some additional information on [how to report security vulnerabilities to Oracle][2].
11
+ We encourage people who contact Oracle Security to use email encryption using
12
+ [our encryption key][3].
13
+
14
+ We ask that you do not use other channels or contact the project maintainers
15
+ directly.
16
+
17
+ Non-vulnerability related security issues including ideas for new or improved
18
+ security features are welcome on GitHub Issues.
19
+
20
+ ## Security updates, alerts and bulletins
21
+
22
+ Security updates will be released on a regular cadence. Many of our projects
23
+ will typically release security fixes in conjunction with the
24
+ [Oracle Critical Patch Update][3] program. Additional
25
+ information, including past advisories, is available on our [security alerts][4]
26
+ page.
27
+
28
+ ## Security-related information
29
+
30
+ We will provide security related information such as a threat model, considerations
31
+ for secure use, or any known security issues in our documentation. Please note
32
+ that labs and sample code are intended to demonstrate a concept and may not be
33
+ sufficiently hardened for production use.
34
+
35
+ [1]: mailto:secalert_us@oracle.com
36
+ [2]: https://www.oracle.com/corporate/security-practices/assurance/vulnerability/reporting.html
37
+ [3]: https://www.oracle.com/security-alerts/encryptionkey.html
38
+ [4]: https://www.oracle.com/security-alerts/
@@ -0,0 +1 @@
1
+ oracledb-6.0.0-darwin-x64.node v16.20.0 860028aa05a0de50f81df433ab99d4f907f9a99a ccbaddf0256153ecfa6702c6ae1a4e5003e3775e Tue, 16 May 2023 11:28:59 GMT
@@ -0,0 +1 @@
1
+ 860028aa05a0de50f81df433ab99d4f907f9a99a
@@ -0,0 +1 @@
1
+ oracledb-6.0.0-linux-arm64.node v16.20.0 860028aa05a0de50f81df433ab99d4f907f9a99a ccbaddf0256153ecfa6702c6ae1a4e5003e3775e Tue, 16 May 2023 11:56:16 GMT
@@ -0,0 +1 @@
1
+ oracledb-6.0.0-linux-x64.node v16.20.0 860028aa05a0de50f81df433ab99d4f907f9a99a ccbaddf0256153ecfa6702c6ae1a4e5003e3775e Tue, 16 May 2023 13:29:42 GMT
@@ -0,0 +1 @@
1
+ oracledb-6.0.0-win32-x64.node v16.19.0 860028aa05a0de50f81df433ab99d4f907f9a99a ccbaddf0256153ecfa6702c6ae1a4e5003e3775e Tue, 16 May 2023 13:40:01 GMT
@@ -0,0 +1,113 @@
1
+ # Node-oracledb Examples
2
+
3
+ The directory in node-oracledb's [Github repository](https://github.com/oracle/node-oracledb/tree/main/examples) contains a lot of [node-oracledb](https://www.npmjs.com/package/oracledb)
4
+ examples. Documentation is
5
+ [here](https://node-oracledb.readthedocs.io/en/latest/).
6
+
7
+ To run the examples:
8
+
9
+ - [Install node-oracledb](https://node-oracledb.readthedocs.io/en/latest/user_guide/installation.html#quickstart).
10
+
11
+ - Ensure that you navigate to the `examples` directory in your terminal window
12
+ or IDE, where you are running the samples.
13
+
14
+ - Review `dbconfig.js`. In your terminal window or IDE, set the environment
15
+ variables. For example, set `NODE_ORACLEDB_PASSWORD` to the value of your
16
+ database password.
17
+
18
+ - Review the samples and then run them individually. For example, to see what
19
+ the file `example.js` does, use:
20
+
21
+ ```
22
+ node example.js
23
+ ```
24
+
25
+ - After running examples, the demonstration objects can be dropped with
26
+ `demodrop.js`:
27
+
28
+ ```
29
+ node demodrop.js
30
+ ```
31
+
32
+ Many examples can be run in either node-oracledb Thin (the default) or Thick
33
+ modes. Thin mode is a pure JavaScript implementation of node-oracledb.
34
+ Setting the environment variable `NODE_ORACLEDB_DRIVER_MODE` to `'thick'` will
35
+ make examples use Thick mode.
36
+
37
+ ## Example Overview
38
+
39
+ If this is your first time with node-oracledb, start with
40
+ [`example.js`](example.js).
41
+
42
+ File Name | Description
43
+ ----------------------------------------------------------|----------------------------------------------------------------------------------
44
+ [`aqmulti.js`](aqmulti.js) | Oracle Advanced Queuing (AQ) example passing multiple messages
45
+ [`aqobject.js`](aqobject.js) | Oracle Advanced Queuing (AQ) example passing an Oracle Database object
46
+ [`aqoptions.js`](aqoptions.js) | Oracle Advanced Queuing (AQ) example setting options and message attributes
47
+ [`aqraw.js`](aqraw.js) | Basic Oracle Advanced Queuing (AQ) example passing text messages
48
+ [`blobhttp.js`](blobhttp.js) | Simple web app that streams an image
49
+ [`calltimeout.js`](calltimeout.js) | Shows how to cancel a SQL statement if it doesn't complete in a specified time
50
+ [`connect.js`](connect.js) | Basic example for creating a standalone (non-pooled) connection
51
+ [`connectionpool.js`](connectionpool.js) | Basic example creating a pool of connections
52
+ [`cqn1.js`](cqn1.js) | Basic Continuous Query Notification (CQN) example
53
+ [`cqn2.js`](cqn2.js) | Continuous Query Notification with notification grouping
54
+ [`date_timestamp1.js`](date_timestamp1.js) | Show some basic DATE and TIMESTAMP behaviors
55
+ [`date_timestamp2.js`](date_timestamp2.js) | Show some DATE and TIMESTAMP behaviors with timezones
56
+ [`dbconfig.js`](dbconfig.js) | Common file used by examples for setting connection credentials
57
+ [`dbmsoutputgetline.js`](dbmsoutputgetline.js) | Show fetching DBMS_OUTPUT by binding buffers
58
+ [`dbmsoutputpipe.js`](dbmsoutputpipe.js) | Show fetching DBMS_OUTPUT by using a pipelined table
59
+ [`demodrop.js`](demodrop.js) | Drops the schema objects created by the examples
60
+ [`demosetup.js`](demosetup.js) | Used to create common schema objects for the examples
61
+ [`dmlrupd.js`](dmlrupd.js) | Example of DML RETURNING where multiple rows are matched
62
+ [`em_batcherrors.js`](em_batcherrors.js) | `executeMany()` example showing handling data errors
63
+ [`em_dmlreturn1.js`](em_dmlreturn1.js) | `executeMany()` example of DML RETURNING that returns single values
64
+ [`em_dmlreturn2.js`](em_dmlreturn2.js) | `executeMany()` example of DML RETURNING that returns multiple values
65
+ [`em_insert1.js`](em_insert1.js) | Array DML example using `executeMany()` with bind-by-name syntax
66
+ [`em_insert2.js`](em_insert2.js) | Array DML example using `executeMany()` with bind by position
67
+ [`em_plsql.js`](em_plsql.js) | `executeMany()` example calling PL/SQL multiple times with one call
68
+ [`em_rowcounts.js`](em_rowcounts.js) | `executeMany()` example showing how to find the number of rows affected by each input row
69
+ [`endtoend.js`](endtoend.js) | Example showing setting tracing attributes
70
+ [`example.js`](example.js) | Basic example showing creating a table, inserting multiple rows, and querying rows
71
+ [`impres.js`](impres.js) | Shows PL/SQL 'Implict Results' returning multiple query results from PL/SQL code.
72
+ [`insert1.js`](insert1.js) | Basic example creating a table and inserting data. Shows DDL and DML
73
+ [`insert2.js`](insert2.js) | Basic example showing auto commit behavior
74
+ [`lastinsertid.js`](lastinsertid.js) | Shows inserting a row and getting its ROWID.
75
+ [`lobbinds.js`](lobbinds.js) | Demonstrates how to bind and query LOBs
76
+ [`lobinsert1.js`](lobinsert1.js) | Shows inserting a file into a CLOB column
77
+ [`lobinsert2.js`](lobinsert2.js) | Inserts text into a CLOB column using the RETURNING INTO method.
78
+ [`lobinserttemp.js`](lobinserttemp.js) | Writes data to a Temporary CLOB and then inserts it into the database
79
+ [`lobplsqltemp.js`](lobplsqltemp.js) | Streams data into a Temporary CLOB and then passes it to PL/SQL
80
+ [`lobselect.js`](lobselect.js) | Shows basic, non-streaming CLOB and BLOB queries
81
+ [`lobstream1.js`](lobstream1.js) | Shows how to stream LOBs to files
82
+ [`lobstream2.js`](lobstream2.js) | Shows using Stream data events to fetch a CLOB
83
+ [`lowercasecolumns.js`](lowercasecolumns.js) | Shows how a type handler can convert column names to lower case
84
+ [`metadata.js`](metadata.js) | Shows the metadata available after executing SELECT statements
85
+ [`plsqlarray.js`](plsqlarray.js) | Examples of binding PL/SQL "INDEX BY" tables
86
+ [`plsqlfunc.js`](plsqlfunc.js) | How to call a PL/SQL function
87
+ [`plsqlproc.js`](plsqlproc.js) | How to call a PL/SQL procedure
88
+ [`plsqlrecord.js`](plsqlrecord.js) | Shows binding of PL/SQL RECORDS
89
+ [`plsqlvarrayrecord.js`](plsqlvarrayrecord.js) | Shows binding a VARRAY of RECORD in PL/SQL
90
+ [`raw.js`](raw.js) | Shows using a Buffer to insert and select a RAW
91
+ [`refcursor.js`](refcursor.js) | Shows using a ResultSet to fetch rows from a REF CURSOR
92
+ [`refcursortoquerystream.js`](refcursortoquerystream.js) | Converts a REF CURSOR returned from `execute()` to a query stream.
93
+ [`resultset1.js`](resultset1.js) | Executes a query and uses a ResultSet to fetch rows with `getRow()`
94
+ [`resultset2.js`](resultset2.js) | Executes a query and uses a ResultSet to fetch batches of rows with `getRows()`
95
+ [`resultsettoquerystream.js`](resultsettoquerystream.js) | Converts a ResultSet returned from `execute()` into a Readable Stream.
96
+ [`rowlimit.js`](rowlimit.js) | Shows ways to limit the number of records fetched by queries
97
+ [`select1.js`](select1.js) | Executes a basic query without using a connection pool or ResultSet
98
+ [`select2.js`](select2.js) | Executes queries to show array and object output formats
99
+ [`selectgeometry.js`](selectgeometry.js) | Insert and query Oracle Spatial geometries
100
+ [`selectjson.js`](selectjson.js) | Shows some JSON features of Oracle Database 21c
101
+ [`selectjsonblob.js`](selectjsonblob.js) | Shows how to use a BLOB as a JSON column store
102
+ [`selectobject.js`](selectobject.js) | Insert and query a named Oracle database object
103
+ [`selectnestedcursor.js`](selectnestedcursor.js) | Shows selecting from a nested cursor
104
+ [`selectstream.js`](selectstream.js) | Executes a basic query using a Readable Stream
105
+ [`selectvarray.js`](selectvarray.js) | Shows inserting and selecting from a VARRAY column
106
+ [`sessionfixup.js`](sessionfixup.js) | Shows a pooled connection callback to efficiently set session state
107
+ [`sessiontagging1.js`](sessiontagging1.js) | Simple pooled connection tagging for setting session state
108
+ [`sessiontagging2.js`](sessiontagging2.js) | More complex example of pooled connection tagging for setting session state
109
+ [`soda1.js`](soda1.js) | Basic Simple Oracle Document Access (SODA) example
110
+ [`typehandlerdate.js`](typehandlerdate.js) | Show how a type handler can format a queried date in a locale-specific way
111
+ [`typehandlernum.js`](typehandlernum.js) | Show how a type handler can format a queried number in a locale-specific way
112
+ [`version.js`](version.js) | Shows the node-oracledb version attributes
113
+ [`webapp.js`](webapp.js) | A simple web application using a connection pool
@@ -0,0 +1,100 @@
1
+ /* Copyright (c) 2015, 2023, Oracle and/or its affiliates. */
2
+
3
+ /******************************************************************************
4
+ *
5
+ * This software is dual-licensed to you under the Universal Permissive License
6
+ * (UPL) 1.0 as shown at https://oss.oracle.com/licenses/upl and Apache License
7
+ * 2.0 as shown at http://www.apache.org/licenses/LICENSE-2.0. You may choose
8
+ * either license.
9
+ *
10
+ * If you elect to accept the software under the Apache License, Version 2.0,
11
+ * the following applies:
12
+ *
13
+ * Licensed under the Apache License, Version 2.0 (the "License");
14
+ * you may not use this file except in compliance with the License.
15
+ * You may obtain a copy of the License at
16
+ *
17
+ * https://www.apache.org/licenses/LICENSE-2.0
18
+ *
19
+ * Unless required by applicable law or agreed to in writing, software
20
+ * distributed under the License is distributed on an "AS IS" BASIS,
21
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22
+ * See the License for the specific language governing permissions and
23
+ * limitations under the License.
24
+ *
25
+ * NAME
26
+ * dbconfig.js
27
+ *
28
+ * DESCRIPTION
29
+ * Holds the credentials used by node-oracledb examples to connect
30
+ * to the database. Production applications should consider using
31
+ * External Authentication to avoid hard coded credentials.
32
+ *
33
+ * To create a database user see
34
+ * https://blogs.oracle.com/sql/post/how-to-create-users-grant-them-privileges-and-remove-them-in-oracle-database
35
+ *
36
+ * Applications can set the connectString value to an Easy Connect
37
+ * string, or a Net Service Name from a tnsnames.ora file or
38
+ * external naming service, or it can be the name of a local Oracle
39
+ * database instance.
40
+ *
41
+ * If node-oracledb is linked with Instant Client, then an Easy
42
+ * Connect string is generally appropriate. The basic syntax is:
43
+ *
44
+ * [//]host_name[:port][/service_name][:server_type][/instance_name]
45
+ *
46
+ * Commonly just the host_name and service_name are needed
47
+ * e.g. "localhost/orclpdb1" or "example.com/XEPDB1"
48
+ *
49
+ * The Easy Connect syntax was enhanced in Oracle Database 19c to
50
+ * allow more options, refer to the documentation:
51
+ * https://www.oracle.com/pls/topic/lookup?ctx=dblatest&id=GUID-B0437826-43C1-49EC-A94D-B650B6A4A6EE
52
+ *
53
+ * If using a tnsnames.ora file, the file can be in a default
54
+ * location such as $ORACLE_HOME/network/admin/tnsnames.ora or
55
+ * /etc/tnsnames.ora. Alternatively set the TNS_ADMIN environment
56
+ * variable and put the file in $TNS_ADMIN/tnsnames.ora.
57
+ *
58
+ * If connectString is not specified, the empty string "" is used
59
+ * which indicates to connect to the local, default database.
60
+ *
61
+ * External Authentication can be used by setting the optional
62
+ * property externalAuth to true. External Authentication allows
63
+ * applications to use an external password store such as Oracle
64
+ * Wallet so passwords do not need to be hard coded into the
65
+ * application. The user and password properties for connecting or
66
+ * creating a pool should not be set when externalAuth is true.
67
+ *
68
+ * TROUBLESHOOTING
69
+ * Errors like:
70
+ * ORA-12541: TNS:no listener
71
+ * or
72
+ * ORA-12154: TNS:could not resolve the connect identifier specified
73
+ * indicate connectString is invalid.
74
+ *
75
+ * The error:
76
+ * ORA-12514: TNS:listener does not currently know of requested in connect descriptor
77
+ * indicates connectString is invalid. You are reaching a computer
78
+ * with Oracle installed but the service name isn't known.
79
+ * Use 'lsnrctl services' on the database server to find available services
80
+ *
81
+ *****************************************************************************/
82
+
83
+ module.exports = {
84
+ user : process.env.NODE_ORACLEDB_USER,
85
+
86
+ // Get the password from the environment variable
87
+ // NODE_ORACLEDB_PASSWORD. The password could also be a hard coded
88
+ // string (not recommended), or it could be prompted for.
89
+ // Alternatively use External Authentication so that no password is
90
+ // needed.
91
+ password : process.env.NODE_ORACLEDB_PASSWORD,
92
+
93
+ // For information on connection strings see:
94
+ // https://node-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html#connectionstrings
95
+ connectString : process.env.NODE_ORACLEDB_CONNECTIONSTRING,
96
+
97
+ // Setting externalAuth is optional. It defaults to false. See:
98
+ // https://node-oracledb.readthedocs.io/en/latest/user_guide/connection_handling.html#extauth
99
+ externalAuth : process.env.NODE_ORACLEDB_EXTERNALAUTH ? true : false,
100
+ };