diff --git a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js index a09e5a04c..f0f8edae3 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/Analyser.js +++ b/plugins/dbgate-plugin-mysql/src/backend/Analyser.js @@ -56,15 +56,21 @@ class Analyser extends DatabaseAnalyser { async getViewTexts(allViewNames) { const res = {}; - for (const viewName of this.getRequestedViewNames(allViewNames)) { - try { - const resp = await this.driver.query(this.pool, `SHOW CREATE VIEW \`${viewName}\``); - res[viewName] = resp.rows[0]['Create View']; - } catch (err) { - console.log('ERROR', err); - res[viewName] = `${err}`; - } + + const views = await this.safeQuery(this.createQuery('viewTexts', ['views'])); + for (const view of views.rows) { + res[view.pureName] = `CREATE VIEW \`${view.pureName}\` AS ${view.viewDefinition}`; } + + // for (const viewName of this.getRequestedViewNames(allViewNames)) { + // try { + // const resp = await this.driver.query(this.pool, `SHOW CREATE VIEW \`${viewName}\``); + // res[viewName] = resp.rows[0]['Create View']; + // } catch (err) { + // console.log('ERROR', err); + // res[viewName] = `${err}`; + // } + // } return res; } diff --git a/plugins/dbgate-plugin-mysql/src/backend/sql/index.js b/plugins/dbgate-plugin-mysql/src/backend/sql/index.js index 377713706..4839071e7 100644 --- a/plugins/dbgate-plugin-mysql/src/backend/sql/index.js +++ b/plugins/dbgate-plugin-mysql/src/backend/sql/index.js @@ -9,6 +9,7 @@ const programmables = require('./programmables'); const procedureModifications = require('./procedureModifications'); const functionModifications = require('./functionModifications'); const uniqueNames = require('./uniqueNames'); +const viewTexts = require('./viewTexts'); module.exports = { columns, @@ -22,4 +23,5 @@ module.exports = { functionModifications, indexes, uniqueNames, + viewTexts, }; diff --git a/plugins/dbgate-plugin-mysql/src/backend/sql/viewTexts.js b/plugins/dbgate-plugin-mysql/src/backend/sql/viewTexts.js new file mode 100644 index 000000000..a62be5ea2 --- /dev/null +++ b/plugins/dbgate-plugin-mysql/src/backend/sql/viewTexts.js @@ -0,0 +1,7 @@ +module.exports = ` +select + TABLE_NAME as pureName, + VIEW_DEFINITION as viewDefinition +from information_schema.views +where TABLE_SCHEMA = '#DATABASE#' and TABLE_NAME =OBJECT_ID_CONDITION; +`;