diff --git a/CHANGELOG.md b/CHANGELOG.md
index 2c375e3..3f1b2ca 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,40 @@
# Changelog
+
+## 2.1.0 (2024-10-11)
+
+### Added
+
+- ✨ Improve connection error handling [[fab2784](https://github.com/Tomas2D/knex-firebird-dialect/commit/fab278443fcf196cd3eed27092f88e34adcf75da)]
+
+### Miscellaneous
+
+- Merge pull request [#390](https://github.com/Tomas2D/knex-firebird-dialect/issues/390) from Tomas2D/dependabot/npm_and_yarn/babel/preset-env-7.25.8 [[d6043fe](https://github.com/Tomas2D/knex-firebird-dialect/commit/d6043fe72732a316e1401fe766f74c0b0d1647b9)]
+- Merge pull request [#388](https://github.com/Tomas2D/knex-firebird-dialect/issues/388) from Tomas2D/dependabot/npm_and_yarn/babel/cli-7.25.7 [[14535ce](https://github.com/Tomas2D/knex-firebird-dialect/commit/14535ce028ef12e1d67b50d29e4f2b6c60d61bf5)]
+- Merge pull request [#383](https://github.com/Tomas2D/knex-firebird-dialect/issues/383) from Tomas2D/dependabot/npm_and_yarn/babel/core-7.25.7 [[0e5f3f5](https://github.com/Tomas2D/knex-firebird-dialect/commit/0e5f3f57c2318e035dab98c571f749807e48b651)]
+- Merge pull request [#389](https://github.com/Tomas2D/knex-firebird-dialect/issues/389) from Tomas2D/dependabot/npm_and_yarn/eslint-9.12.0 [[52900de](https://github.com/Tomas2D/knex-firebird-dialect/commit/52900de87be123ae0e804bb4d670010f9e5a2a52)]
+- Bump @babel/preset-env from 7.25.4 to 7.25.8 [[e8151a8](https://github.com/Tomas2D/knex-firebird-dialect/commit/e8151a86a7216c71dd11beaf34532437b1eedce3)]
+- Bump eslint from 9.11.1 to 9.12.0 [[6c6b760](https://github.com/Tomas2D/knex-firebird-dialect/commit/6c6b7603df8ffd275d67528d25c8f7f44902dc39)]
+- Bump @babel/cli from 7.25.6 to 7.25.7 [[6140b5e](https://github.com/Tomas2D/knex-firebird-dialect/commit/6140b5e37807596c30bc8f6029465f71ecedf89a)]
+- Merge pull request [#385](https://github.com/Tomas2D/knex-firebird-dialect/issues/385) from Tomas2D/dependabot/npm_and_yarn/babel/plugin-transform-runtime-7.25.7 [[9bc2e16](https://github.com/Tomas2D/knex-firebird-dialect/commit/9bc2e16a3d7ee86ae782751dffbcf781da67b5c1)]
+- Merge pull request [#382](https://github.com/Tomas2D/knex-firebird-dialect/issues/382) from Tomas2D/dependabot/npm_and_yarn/babel/runtime-7.25.7 [[163adef](https://github.com/Tomas2D/knex-firebird-dialect/commit/163adef4fe983207aaddcc8e25ea5bca03865c57)]
+- Merge pull request [#386](https://github.com/Tomas2D/knex-firebird-dialect/issues/386) from Tomas2D/dependabot/npm_and_yarn/babel/plugin-transform-modules-commonjs-7.25.7 [[b2c6b8d](https://github.com/Tomas2D/knex-firebird-dialect/commit/b2c6b8d28b3dbe6662d469b9f8575c650f3468a1)]
+- Bump @babel/plugin-transform-modules-commonjs from 7.24.8 to 7.25.7 [[f7cab49](https://github.com/Tomas2D/knex-firebird-dialect/commit/f7cab49c441251ff5607d091cebbfcf10e0744bb)]
+- Bump @babel/plugin-transform-runtime from 7.25.4 to 7.25.7 [[4e4aba8](https://github.com/Tomas2D/knex-firebird-dialect/commit/4e4aba8c16efcf04b02ad41d37f10070006b0f9d)]
+- Bump @babel/core from 7.25.2 to 7.25.7 [[c6b8f8f](https://github.com/Tomas2D/knex-firebird-dialect/commit/c6b8f8f7dcb7cbb09aeb135be89c5c0faf12f496)]
+- Bump @babel/runtime from 7.25.6 to 7.25.7 [[3d5d45c](https://github.com/Tomas2D/knex-firebird-dialect/commit/3d5d45c787a45632af229138e242cb5de53cc104)]
+- Merge pull request [#381](https://github.com/Tomas2D/knex-firebird-dialect/issues/381) from Tomas2D/dependabot/npm_and_yarn/eslint-9.11.1 [[4f85e3f](https://github.com/Tomas2D/knex-firebird-dialect/commit/4f85e3f8243caf1446a3d14bffd34a2d398733ed)]
+- Bump eslint from 9.11.0 to 9.11.1 [[6d6b21a](https://github.com/Tomas2D/knex-firebird-dialect/commit/6d6b21a37e4ab9648233b80b9680e1910ad2b8a6)]
+- Merge pull request [#380](https://github.com/Tomas2D/knex-firebird-dialect/issues/380) from Tomas2D/dependabot/npm_and_yarn/eslint-9.11.0 [[66c2248](https://github.com/Tomas2D/knex-firebird-dialect/commit/66c2248d1f5dcd3bf7c1e670a21277f5b3f6c465)]
+- Bump eslint from 9.10.0 to 9.11.0 [[a8e4ba3](https://github.com/Tomas2D/knex-firebird-dialect/commit/a8e4ba3a72a36544e718906b1e9d027d203ab670)]
+- Merge pull request [#378](https://github.com/Tomas2D/knex-firebird-dialect/issues/378) from Tomas2D/dependabot/npm_and_yarn/eslint-9.10.0 [[09d9dfe](https://github.com/Tomas2D/knex-firebird-dialect/commit/09d9dfe930c3c7e911e9b8bae1be31c09f878e99)]
+- Merge pull request [#379](https://github.com/Tomas2D/knex-firebird-dialect/issues/379) from Tomas2D/dependabot/npm_and_yarn/husky-9.1.6 [[8929cd0](https://github.com/Tomas2D/knex-firebird-dialect/commit/8929cd002eeb8003f9570daa0484bdc94e4702bf)]
+- Bump eslint from 9.9.1 to 9.10.0 [[eb1675f](https://github.com/Tomas2D/knex-firebird-dialect/commit/eb1675f1a4b4e7486e0ad24439e39ab08202e2d4)]
+- Bump husky from 9.1.5 to 9.1.6 [[2a16d81](https://github.com/Tomas2D/knex-firebird-dialect/commit/2a16d819b47538e8f8527829dcd6b16c0a143bb2)]
+- Merge pull request [#377](https://github.com/Tomas2D/knex-firebird-dialect/issues/377) from Tomas2D/dependabot/npm_and_yarn/eslint-plugin-jest-28.8.3 [[fa23a39](https://github.com/Tomas2D/knex-firebird-dialect/commit/fa23a391a68a0343271563740de989cb579e7067)]
+- Bump eslint-plugin-jest from 28.8.2 to 28.8.3 [[c87e7e4](https://github.com/Tomas2D/knex-firebird-dialect/commit/c87e7e4375899bcad7d1749e0a0ff88fe874c97c)]
+
+
## 2.0.4 (2024-09-04)
diff --git a/package.json b/package.json
index ab0bbe3..2774a1c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "knex-firebird-dialect",
- "version": "2.0.4",
+ "version": "2.1.0",
"description": "Knex dialect for Firebird",
"main": "lib/index.js",
"scripts": {
@@ -64,5 +64,6 @@
},
"files": [
"lib"
- ]
+ ],
+ "packageManager": "yarn@1.22.22+sha1.ac34549e6aa8e7ead463a7407e1c7390f61a6610"
}
diff --git a/src/index.js b/src/index.js
index 3b994f8..8b7e7e3 100644
--- a/src/index.js
+++ b/src/index.js
@@ -10,7 +10,7 @@ import Transaction from "./transaction";
import SchemaCompiler from "./schema/compiler";
import Firebird_Formatter from "./formatter";
import Firebird_DDL from "./schema/ddl";
-
+import { isFirebirdConnectionError } from './utils'
import * as driver from 'node-firebird-driver-native'
class Client_Firebird extends Client {
@@ -176,7 +176,7 @@ class Client_Firebird extends Client {
await transaction.rollback().catch(noop);
transaction = null
}
- if (String(e).includes('Error writing data to the connection.')) {
+ if (isFirebirdConnectionError(e)) {
await this.destroyRawConnection(connection)
}
throw e
diff --git a/src/utils.js b/src/utils.js
index 26fe972..978cee3 100644
--- a/src/utils.js
+++ b/src/utils.js
@@ -1,7 +1,34 @@
-export function toArrayFromPrimitive(val) {
- if (Array.isArray(val)) {
- return val;
+// Source: https://github.com/hgourvest/node-firebird/blob/master/lib/firebird.msg.json
+export const FirebirdConnectionErrors = {
+ "335544324": "Invalid database handle (no active connection)",
+ "335544365": "Request referenced an unavailable database",
+ "335544375": "Unavailable database",
+ "335544421": "Connection rejected by remote interface",
+ "335544648": "Connection lost to pipe server",
+ "335544721": "Unable to complete network request to host",
+ "335544722": "Failed to establish a connection",
+ "335544723": "Error while listening for an incoming connection",
+ "335544724": "Failed to establish a secondary connection for event processing",
+ "335544725": "Error while listening for an incoming event connection request",
+ "335544726": "Error reading data from the connection",
+ "335544727": "Error writing data to the connection",
+ "335544741": "Connection lost to database",
+ "335544856": "Connection shutdown"
+}
+
+export function isFirebirdConnectionError(error) {
+ if (!error || !(error instanceof Error)) {
+ return false
+ }
+ if (String(error.code) in FirebirdConnectionErrors) {
+ return true
}
- return [val];
+ const msg = String(error)
+ for (const err in FirebirdConnectionErrors) {
+ if (msg.includes(err)) {
+ return true
+ }
+ }
+ return false
}