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');
|
logger.error(extractErrorLogData(err, { template }), 'Error running analyser query');
|
||||||
return {
|
return {
|
||||||
rows: [],
|
rows: [],
|
||||||
|
isError: true,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,7 +34,10 @@ class Analyser extends DatabaseAnalyser {
|
|||||||
this.feedback({ analysingMessage: 'Loading columns' });
|
this.feedback({ analysingMessage: 'Loading columns' });
|
||||||
const columns = await this.analyserQuery('columns', ['tables', 'views']);
|
const columns = await this.analyserQuery('columns', ['tables', 'views']);
|
||||||
this.feedback({ analysingMessage: 'Loading 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 = {
|
const res = {
|
||||||
tables: tables.rows.map((table) => ({
|
tables: tables.rows.map((table) => ({
|
||||||
@@ -64,7 +67,7 @@ class Analyser extends DatabaseAnalyser {
|
|||||||
...col,
|
...col,
|
||||||
...extractDataType(col.dataType),
|
...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 });
|
this.feedback({ analysingMessage: null });
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
const columns = require('./columns');
|
const columns = require('./columns');
|
||||||
const tables = require('./tables');
|
const tables = require('./tables');
|
||||||
const views = require('./views');
|
const views = require('./views');
|
||||||
|
const viewsNoDefinition = require('./viewsNoDefinition');
|
||||||
const tableModifications = require('./tableModifications');
|
const tableModifications = require('./tableModifications');
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
columns,
|
columns,
|
||||||
tables,
|
tables,
|
||||||
views,
|
views,
|
||||||
|
viewsNoDefinition,
|
||||||
tableModifications,
|
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