diff --git a/packages/core/dialect/saphana/index.ts b/packages/core/dialect/saphana/index.ts index 5983d4241..98c462035 100644 --- a/packages/core/dialect/saphana/index.ts +++ b/packages/core/dialect/saphana/index.ts @@ -153,7 +153,7 @@ export default class SAPHana extends GenericDialect implements C } public getTables(): Promise { - return this.query(this.queries.fetchTables, [this.schema]) + return this.query(this.queries.fetchTables, [this.schema, this.schema]) .then(([queryRes]) => { return queryRes.results .reduce((prev, curr) => prev.concat(curr), []) @@ -172,7 +172,7 @@ export default class SAPHana extends GenericDialect implements C } public getColumns(): Promise { - return this.query(this.queries.fetchColumns, [this.schema]) + return this.query(this.queries.fetchColumns, [this.schema, this.schema]) .then(([queryRes]) => { return queryRes.results .reduce((prev, curr) => prev.concat(curr), []) @@ -200,6 +200,15 @@ export default class SAPHana extends GenericDialect implements C } public describeTable(prefixedTable: string) { - return this.query(this.queries.describeTable, [this.schema, prefixedTable]); + return new Promise(resolve => { + this.query(this.queries.describeTable, [this.schema, prefixedTable]).then(queryRes => { + if (queryRes[0].results.length == 0) { + this.query(this.queries.describeView, [this.schema, prefixedTable]).then(res => resolve(res)); + } else { + resolve(queryRes); + } + }) + }); } + } diff --git a/packages/core/dialect/saphana/queries.ts b/packages/core/dialect/saphana/queries.ts index 31d2acefd..e4b1e3b72 100644 --- a/packages/core/dialect/saphana/queries.ts +++ b/packages/core/dialect/saphana/queries.ts @@ -8,6 +8,12 @@ export default { TABLE_COLUMNS C WHERE C.SCHEMA_NAME = ? and C.TABLE_NAME = ?`, + describeView: ` + SELECT * + FROM + VIEW_COLUMNS C + WHERE + C.SCHEMA_NAME = ? and C.VIEW_NAME = ?`, fetchColumns: ` SELECT C.TABLE_NAME AS tableName, @@ -19,9 +25,9 @@ SELECT '' as dbName, C.DEFAULT_VALUE as defaultValue, C.IS_NULLABLE as isNullable, - 'table' as constraintType, + 'Table' as constraintType, CONCAT( CONCAT( CONCAT( - 'tables${TREE_SEP}', + 'Tables${TREE_SEP}', C.TABLE_NAME), '${TREE_SEP}'), C.COLUMN_NAME) @@ -30,11 +36,65 @@ FROM TABLE_COLUMNS C WHERE C.SCHEMA_NAME = ? -ORDER BY - C.TABLE_NAME`, + UNION + SELECT + D.VIEW_NAME AS tableName, + D.COLUMN_NAME AS columnName, + D.CS_DATA_TYPE_NAME AS type, + D.LENGTH AS size, + '' as tableSchema, + '' AS tableCatalog, + '' as dbName, + D.DEFAULT_VALUE as defaultValue, + D.IS_NULLABLE as isNullable, + 'View' as constraintType, + CONCAT( CONCAT( CONCAT( + 'Views${TREE_SEP}', + D.VIEW_NAME), + '${TREE_SEP}'), + D.COLUMN_NAME) + AS tree +FROM + VIEW_COLUMNS D +WHERE + D.SCHEMA_NAME = ?`, fetchRecords: 'SELECT TOP :limit * FROM :table', fetchTables: ` + +SELECT + A.TABLE_NAME AS tableName, + '' AS tableSchema, + '' AS tableCatalog, + 0 AS isView, + '' AS dbName, + COUNT(1) AS numberOfColumns, + CONCAT('Tables${TREE_SEP}', A.TABLE_NAME) AS tree +FROM + TABLE_COLUMNS A +WHERE + A.SCHEMA_NAME = ? +GROUP BY + A.TABLE_NAME +UNION +SELECT + B.VIEW_NAME AS tableName, + '' AS tableSchema, + '' AS tableCatalog, + 1 AS isView, + '' AS dbName, + COUNT(1) AS numberOfColumns, + CONCAT('Views${TREE_SEP}', B.VIEW_NAME) AS tree +FROM + VIEW_COLUMNS B +WHERE + B.SCHEMA_NAME = ? +GROUP BY + B.VIEW_NAME + +` + +/* ` SELECT A.TABLE_NAME AS tableName, '' AS tableSchema, @@ -51,5 +111,5 @@ FROM WHERE A.SCHEMA_NAME = ? GROUP BY - A.TABLE_NAME` + A.TABLE_NAME`*/ } as DialectQueries; \ No newline at end of file