From 5287a863976fa32a8c7c8fefd70eb14406cb7a6b Mon Sep 17 00:00:00 2001 From: Jan Prochazka Date: Fri, 27 Sep 2024 08:08:13 +0200 Subject: [PATCH] import from postgres dump --- packages/api/package.json | 2 +- packages/api/src/shell/importDatabase.js | 6 +++++- packages/tools/package.json | 2 +- packages/web/package.json | 2 +- plugins/dbgate-plugin-mongo/package.json | 2 +- plugins/dbgate-plugin-mssql/package.json | 2 +- plugins/dbgate-plugin-mysql/package.json | 2 +- plugins/dbgate-plugin-mysql/src/backend/drivers.js | 8 ++++++-- plugins/dbgate-plugin-oracle/package.json | 2 +- plugins/dbgate-plugin-postgres/package.json | 2 +- plugins/dbgate-plugin-redis/package.json | 2 +- plugins/dbgate-plugin-sqlite/package.json | 2 +- yarn.lock | 8 ++++---- 13 files changed, 25 insertions(+), 17 deletions(-) diff --git a/packages/api/package.json b/packages/api/package.json index 49c637aca..3badaf768 100644 --- a/packages/api/package.json +++ b/packages/api/package.json @@ -27,7 +27,7 @@ "cors": "^2.8.5", "cross-env": "^6.0.3", "dbgate-datalib": "^5.0.0-alpha.1", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-sqltree": "^5.0.0-alpha.1", "dbgate-tools": "^5.0.0-alpha.1", "debug": "^4.3.4", diff --git a/packages/api/src/shell/importDatabase.js b/packages/api/src/shell/importDatabase.js index d344527c9..fd5979079 100644 --- a/packages/api/src/shell/importDatabase.js +++ b/packages/api/src/shell/importDatabase.js @@ -19,10 +19,14 @@ class ImportStream extends stream.Transform { try { if (chunk.specialMarker == 'copy_stdin_start') { this.writeQueryStream = await this.driver.writeQueryFromStream(this.dbhan, chunk.text); - } else if (chunk.specialMarker == 'copy_stdin_data') { + } else if (chunk.specialMarker == 'copy_stdin_line') { this.writeQueryStream.write(chunk.text); } else if (chunk.specialMarker == 'copy_stdin_end') { this.writeQueryStream.end(); + await new Promise((resolve, reject) => { + this.writeQueryStream.on('finish', resolve); + this.writeQueryStream.on('error', reject); + }); this.writeQueryStream = null; } else { await this.driver.script(this.dbhan, chunk.text, { queryOptions: { importSqlDump: true } }); diff --git a/packages/tools/package.json b/packages/tools/package.json index 9c4cf1c05..bf6bf7647 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -31,7 +31,7 @@ "typescript": "^4.4.3" }, "dependencies": { - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-sqltree": "^5.0.0-alpha.1", "debug": "^4.3.4", "json-stable-stringify": "^1.0.1", diff --git a/packages/web/package.json b/packages/web/package.json index 18e38823f..09e3aa7df 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -25,7 +25,7 @@ "chartjs-adapter-moment": "^1.0.0", "cross-env": "^7.0.3", "dbgate-datalib": "^5.0.0-alpha.1", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-sqltree": "^5.0.0-alpha.1", "dbgate-tools": "^5.0.0-alpha.1", "dbgate-types": "^5.0.0-alpha.1", diff --git a/plugins/dbgate-plugin-mongo/package.json b/plugins/dbgate-plugin-mongo/package.json index 3d7c0c4d8..f2b8ca04e 100644 --- a/plugins/dbgate-plugin-mongo/package.json +++ b/plugins/dbgate-plugin-mongo/package.json @@ -33,7 +33,7 @@ "devDependencies": { "bson": "^6.8.0", "dbgate-plugin-tools": "^1.0.7", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-tools": "^5.0.0-alpha.1", "is-promise": "^4.0.0", "lodash": "^4.17.21", diff --git a/plugins/dbgate-plugin-mssql/package.json b/plugins/dbgate-plugin-mssql/package.json index 268bc7e17..d3181a7e7 100644 --- a/plugins/dbgate-plugin-mssql/package.json +++ b/plugins/dbgate-plugin-mssql/package.json @@ -33,7 +33,7 @@ "devDependencies": { "async-lock": "^1.2.6", "dbgate-plugin-tools": "^1.0.7", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-tools": "^5.0.0-alpha.1", "tedious": "^18.2.0", "webpack": "^5.91.0", diff --git a/plugins/dbgate-plugin-mysql/package.json b/plugins/dbgate-plugin-mysql/package.json index 3430e38fb..b9fcd96bb 100644 --- a/plugins/dbgate-plugin-mysql/package.json +++ b/plugins/dbgate-plugin-mysql/package.json @@ -33,7 +33,7 @@ "devDependencies": { "antares-mysql-dumper": "^0.0.1", "dbgate-plugin-tools": "^1.0.7", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-tools": "^5.0.0-alpha.1", "mysql2": "^3.11.0", "webpack": "^5.91.0", diff --git a/plugins/dbgate-plugin-mysql/src/backend/drivers.js b/plugins/dbgate-plugin-mysql/src/backend/drivers.js index af49fb6f6..35255c3d9 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/drivers.js +++ b/plugins/dbgate-plugin-mysql/src/backend/drivers.js @@ -52,7 +52,7 @@ const drivers = driverBases.map(driverBase => ({ const dbhan = { client, database, - } + }; if (isReadOnly) { await this.query(dbhan, 'SET SESSION TRANSACTION READ ONLY'); } @@ -69,7 +69,11 @@ const drivers = driverBases.map(driverBase => ({ }; } - if (options?.importSqlDump && sql.trim().startsWith('/*!') && sql.includes('character_set_client')) { + if ( + options?.importSqlDump && + (sql.trim().startsWith('/*!') || sql.trim().startsWith('/*M!')) && + (sql.includes('character_set_client') || sql.includes('NOTE_VERBOSITY')) + ) { // skip this in SQL dumps return { rows: [], diff --git a/plugins/dbgate-plugin-oracle/package.json b/plugins/dbgate-plugin-oracle/package.json index bc8ad252c..75e241c28 100644 --- a/plugins/dbgate-plugin-oracle/package.json +++ b/plugins/dbgate-plugin-oracle/package.json @@ -31,7 +31,7 @@ }, "devDependencies": { "dbgate-plugin-tools": "^1.0.8", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-tools": "^5.0.0-alpha.1", "lodash": "^4.17.21", "webpack": "^5.91.0", diff --git a/plugins/dbgate-plugin-postgres/package.json b/plugins/dbgate-plugin-postgres/package.json index 9365db573..4dbd569e7 100644 --- a/plugins/dbgate-plugin-postgres/package.json +++ b/plugins/dbgate-plugin-postgres/package.json @@ -31,7 +31,7 @@ }, "devDependencies": { "dbgate-plugin-tools": "^1.0.7", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-tools": "^5.0.0-alpha.1", "lodash": "^4.17.21", "pg": "^8.11.5", diff --git a/plugins/dbgate-plugin-redis/package.json b/plugins/dbgate-plugin-redis/package.json index dbbdff7bd..6be782def 100644 --- a/plugins/dbgate-plugin-redis/package.json +++ b/plugins/dbgate-plugin-redis/package.json @@ -30,7 +30,7 @@ }, "devDependencies": { "dbgate-plugin-tools": "^1.0.7", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "dbgate-tools": "^5.0.0-alpha.1", "lodash": "^4.17.21", "webpack": "^5.91.0", diff --git a/plugins/dbgate-plugin-sqlite/package.json b/plugins/dbgate-plugin-sqlite/package.json index 3633b9399..a12c759e3 100644 --- a/plugins/dbgate-plugin-sqlite/package.json +++ b/plugins/dbgate-plugin-sqlite/package.json @@ -32,7 +32,7 @@ "devDependencies": { "dbgate-tools": "^5.0.0-alpha.1", "dbgate-plugin-tools": "^1.0.4", - "dbgate-query-splitter": "^4.10.4", + "dbgate-query-splitter": "^4.10.5", "byline": "^5.0.0", "webpack": "^5.91.0", "webpack-cli": "^5.1.4" diff --git a/yarn.lock b/yarn.lock index 44322ced2..dab273125 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3224,10 +3224,10 @@ dbgate-plugin-xml@^5.0.0-alpha.1: resolved "https://registry.yarnpkg.com/dbgate-plugin-xml/-/dbgate-plugin-xml-5.2.7.tgz#0762af51ba6f100e75a63907ea6c679e827c9f7c" integrity sha512-gBXy4qetf7eJQW6lM01B+OKLnKB8MKesojdYKysD9oZ+YpQCX8Tq7aHJCrN14FiyIDinpX61kmFH1+LGJ2RkxQ== -dbgate-query-splitter@^4.10.4: - version "4.10.4" - resolved "https://registry.yarnpkg.com/dbgate-query-splitter/-/dbgate-query-splitter-4.10.4.tgz#38c7f98f6ce5a8c9cf34391d9f32490978bd978d" - integrity sha512-JVO0PSskF5dNnrYC8325HtEAxP3LhN1HQuKsOf4c+OXGocwWB3N7GPDc81cuyDTVCKb/oBHRE6akwAGKIyHkVA== +dbgate-query-splitter@^4.10.5: + version "4.10.5" + resolved "https://registry.yarnpkg.com/dbgate-query-splitter/-/dbgate-query-splitter-4.10.5.tgz#bef9f2c2232b14aab6d3a0d490739ad216a1b45b" + integrity sha512-AWcKcU3hbS8rAYrA52bwzdwtLv1llZgJ7Ut8AVPVWm5i38J4EdRFA2nMnx4Y5GLPqA1SRSUFsjBsNWWaHa/BAg== debug@2.6.9, debug@^2.2.0, debug@^2.3.3: version "2.6.9"