mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-17 23:45:59 +00:00
clickhouse: load views for users with limited permissions #1076
This commit is contained in:
@@ -354,6 +354,7 @@ export class DatabaseAnalyser {
|
||||
logger.error(extractErrorLogData(err, { template }), 'Error running analyser query');
|
||||
return {
|
||||
rows: [],
|
||||
isError: true,
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,10 @@ class Analyser extends DatabaseAnalyser {
|
||||
this.feedback({ analysingMessage: 'Loading columns' });
|
||||
const columns = await this.analyserQuery('columns', ['tables', 'views']);
|
||||
this.feedback({ analysingMessage: 'Loading views' });
|
||||
const views = await this.analyserQuery('views', ['views']);
|
||||
let views = await this.analyserQuery('views', ['views']);
|
||||
if (views?.isError) {
|
||||
views = await this.analyserQuery('viewsNoDefinition', ['views']);
|
||||
}
|
||||
|
||||
const res = {
|
||||
tables: tables.rows.map((table) => ({
|
||||
@@ -64,7 +67,7 @@ class Analyser extends DatabaseAnalyser {
|
||||
...col,
|
||||
...extractDataType(col.dataType),
|
||||
})),
|
||||
createSql: `CREATE VIEW "${view.pureName}"\nAS\n${view.viewDefinition}`,
|
||||
createSql: view.viewDefinition ? `CREATE VIEW "${view.pureName}"\nAS\n${view.viewDefinition}` : '',
|
||||
})),
|
||||
};
|
||||
this.feedback({ analysingMessage: null });
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
const columns = require('./columns');
|
||||
const tables = require('./tables');
|
||||
const views = require('./views');
|
||||
const viewsNoDefinition = require('./viewsNoDefinition');
|
||||
const tableModifications = require('./tableModifications');
|
||||
|
||||
module.exports = {
|
||||
columns,
|
||||
tables,
|
||||
views,
|
||||
viewsNoDefinition,
|
||||
tableModifications,
|
||||
};
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
module.exports = `
|
||||
select
|
||||
tables.name as "pureName",
|
||||
tables.uuid as "objectId",
|
||||
tables.metadata_modification_time as "contentHash"
|
||||
from system.tables
|
||||
where tables.database='#DATABASE#' and tables.uuid =OBJECT_ID_CONDITION and tables.engine = 'View'
|
||||
`;
|
||||
Reference in New Issue
Block a user