diff --git a/packages/web/src/widgets/StatusBar.svelte b/packages/web/src/widgets/StatusBar.svelte
index 04a361dc3..ff0a684ae 100644
--- a/packages/web/src/widgets/StatusBar.svelte
+++ b/packages/web/src/widgets/StatusBar.svelte
@@ -65,7 +65,7 @@
- {$serverVersion.version}
+ {$serverVersion.versionText || $serverVersion.version}
{/if}
diff --git a/plugins/dbgate-plugin-mongo/src/backend/driver.js b/plugins/dbgate-plugin-mongo/src/backend/driver.js
index 9379c8892..81d885590 100644
--- a/plugins/dbgate-plugin-mongo/src/backend/driver.js
+++ b/plugins/dbgate-plugin-mongo/src/backend/driver.js
@@ -178,7 +178,10 @@ const driver = {
},
async getVersion(pool) {
const status = await pool.__getDatabase().admin().serverInfo();
- return status;
+ return {
+ ...status,
+ versionText: `MongoDB ${status.version}`,
+ };
},
async listDatabases(pool) {
const res = await pool.__getDatabase().admin().listDatabases();
diff --git a/plugins/dbgate-plugin-mssql/src/backend/driver.js b/plugins/dbgate-plugin-mssql/src/backend/driver.js
index 2b6151424..15ea84471 100644
--- a/plugins/dbgate-plugin-mssql/src/backend/driver.js
+++ b/plugins/dbgate-plugin-mssql/src/backend/driver.js
@@ -11,6 +11,24 @@ const { tediousConnect, tediousQueryCore, tediousReadQuery, tediousStream } = re
const { nativeConnect, nativeQueryCore, nativeReadQuery, nativeStream } = nativeDriver;
let msnodesqlv8;
+const versionQuery = `
+SELECT
+ @@VERSION AS version,
+ SERVERPROPERTY ('productversion') as productVersion,
+ CASE
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '8%' THEN 'SQL Server 2000'
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '9%' THEN 'SQL Server 2005'
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '10.0%' THEN 'SQL Server 2008'
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '10.5%' THEN 'SQL Server 2008 R2'
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '11%' THEN 'SQL Server 2012'
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '12%' THEN 'SQL Server 2014'
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '13%' THEN 'SQL Server 2016'
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '14%' THEN 'SQL Server 2017'
+ WHEN CONVERT(VARCHAR(128), SERVERPROPERTY ('productversion')) like '15%' THEN 'SQL Server 2019'
+ ELSE 'Unknown'
+ END AS versionText
+`;
+
const windowsAuthTypes = [
{
title: 'Windows',
@@ -79,18 +97,16 @@ const driver = {
}
},
async getVersion(pool) {
- const { version } = (await this.query(pool, 'SELECT @@VERSION AS version')).rows[0];
+ const res = (await this.query(pool, versionQuery)).rows[0];
- const { productVersion } = (
- await this.query(pool, "SELECT SERVERPROPERTY ('productversion') as productVersion")
- ).rows[0];
- let productVersionNumber = 0;
- if (productVersion) {
- const splitted = productVersion.split('.');
+ if (res.productVersion) {
+ const splitted = res.productVersion.split('.');
const number = parseInt(splitted[0]) || 0;
- productVersionNumber = number;
+ res.productVersionNumber = number;
+ } else {
+ res.productVersionNumber = 0;
}
- return { version, productVersion, productVersionNumber };
+ return res;
},
async listDatabases(pool) {
const { rows } = await this.query(pool, 'SELECT name FROM sys.databases order by name');
diff --git a/plugins/dbgate-plugin-mysql/src/backend/driver.js b/plugins/dbgate-plugin-mysql/src/backend/driver.js
index 3a3120836..760bac900 100644
--- a/plugins/dbgate-plugin-mysql/src/backend/driver.js
+++ b/plugins/dbgate-plugin-mysql/src/backend/driver.js
@@ -171,7 +171,10 @@ const driver = {
async getVersion(connection) {
const { rows } = await this.query(connection, "show variables like 'version'");
const version = rows[0].Value;
- return { version };
+ return {
+ version,
+ versionText: `MySQL ${version}`,
+ };
},
async listDatabases(connection) {
const { rows } = await this.query(connection, 'show databases');
diff --git a/plugins/dbgate-plugin-postgres/src/backend/driver.js b/plugins/dbgate-plugin-postgres/src/backend/driver.js
index 087c9a332..0373c8dda 100644
--- a/plugins/dbgate-plugin-postgres/src/backend/driver.js
+++ b/plugins/dbgate-plugin-postgres/src/backend/driver.js
@@ -141,7 +141,10 @@ const driver = {
async getVersion(client) {
const { rows } = await this.query(client, 'SELECT version()');
const { version } = rows[0];
- return { version };
+ return {
+ version,
+ versionText: (version || '').replace(/\s*\(.*$/, ''),
+ };
},
// async analyseFull(pool) {
// const analyser = new PostgreAnalyser(pool, this);