From 2a8648b40afc33d8048526d98caf0b888de5d5ad Mon Sep 17 00:00:00 2001 From: Allan Amstadt Date: Thu, 13 Feb 2020 17:55:30 +0100 Subject: [PATCH 1/2] fix(package): Fixed Bug where mssql Driver can not handle multiple tables with same name but different schemas. --- src/drivers/MssqlDriver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/MssqlDriver.ts b/src/drivers/MssqlDriver.ts index 3e9e1ab..b8a1111 100644 --- a/src/drivers/MssqlDriver.ts +++ b/src/drivers/MssqlDriver.ts @@ -88,7 +88,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG entities.forEach(ent => { response .filter(filterVal => { - return filterVal.TABLE_NAME === ent.tscName; + return filterVal.TABLE_NAME === ent.tscName && ent.schema === schema; }) .forEach(resp => { const tscName = resp.COLUMN_NAME; From 50574e056534758744fdb39cc42adff5bdcf4a92 Mon Sep 17 00:00:00 2001 From: Allan Amstadt Date: Thu, 13 Feb 2020 19:02:46 +0100 Subject: [PATCH 2/2] fix(package): Fixed Bug where mssql Driver can not handle multiple tables with same name but different schemas. --- src/drivers/MssqlDriver.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/drivers/MssqlDriver.ts b/src/drivers/MssqlDriver.ts index b8a1111..14709e1 100644 --- a/src/drivers/MssqlDriver.ts +++ b/src/drivers/MssqlDriver.ts @@ -58,6 +58,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG const response: { TABLE_NAME: string; COLUMN_NAME: string; + TABLE_SCHEMA: string; COLUMN_DEFAULT: string; IS_NULLABLE: string; DATA_TYPE: string; @@ -67,7 +68,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG IsIdentity: number; IsUnique: number; }[] = ( - await request.query(`SELECT TABLE_NAME,COLUMN_NAME,COLUMN_DEFAULT,IS_NULLABLE, + await request.query(`SELECT TABLE_NAME,TABLE_SCHEMA,COLUMN_NAME,COLUMN_DEFAULT,IS_NULLABLE, DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,NUMERIC_PRECISION,NUMERIC_SCALE, COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity') IsIdentity, (SELECT count(*) @@ -88,7 +89,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG entities.forEach(ent => { response .filter(filterVal => { - return filterVal.TABLE_NAME === ent.tscName && ent.schema === schema; + return filterVal.TABLE_NAME === ent.tscName && filterVal.TABLE_SCHEMA === ent.schema; }) .forEach(resp => { const tscName = resp.COLUMN_NAME; @@ -252,6 +253,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG const request = new MSSQL.Request(this.Connection); const response: { TableName: string; + TableSchema: string; IndexName: string; ColumnName: string; is_unique: boolean; @@ -262,6 +264,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG await this.UseDB(dbName); const resp: { TableName: string; + TableSchema: string; IndexName: string; ColumnName: string; is_unique: boolean; @@ -269,6 +272,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG }[] = ( await request.query(`SELECT TableName = t.name, + TableSchema = s.name, IndexName = ind.name, ColumnName = col.name, ind.is_unique, @@ -294,7 +298,7 @@ WHERE TABLE_TYPE='BASE TABLE' and TABLE_SCHEMA in (${schema}) AND TABLE_CATALOG entities.forEach(ent => { const entityIndices = response.filter( - filterVal => filterVal.TableName === ent.tscName + filterVal => filterVal.TableName === ent.tscName && filterVal.TableSchema === ent.schema ); const indexNames = new Set(entityIndices.map(v => v.IndexName)); indexNames.forEach(indexName => {