mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-30 04:33:57 +00:00
Column name collision resolving #1234 for postgres - commented out (not working)
This commit is contained in:
@@ -76,11 +76,16 @@ export function findForeignKeyForColumn(table: TableInfo, column: ColumnInfo | s
|
|||||||
return (table.foreignKeys || []).find(fk => fk.columns.find(col => col.columnName == column.columnName));
|
return (table.foreignKeys || []).find(fk => fk.columns.find(col => col.columnName == column.columnName));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function getConflictingColumnNames(columns: ColumnInfo[]): Set<string> {
|
||||||
|
const conflictingNames = new Set(
|
||||||
|
_uniq(columns.map(x => x.columnName).filter((item, index, arr) => arr.indexOf(item) !== index))
|
||||||
|
);
|
||||||
|
return conflictingNames;
|
||||||
|
}
|
||||||
|
|
||||||
export function makeUniqueColumnNames(res: ColumnInfo[]) {
|
export function makeUniqueColumnNames(res: ColumnInfo[]) {
|
||||||
const usedNames = new Set();
|
const usedNames = new Set();
|
||||||
const conflictingNames = new Set(
|
const conflictingNames = getConflictingColumnNames(res);
|
||||||
_uniq(res.map(x => x.columnName).filter((item, index, arr) => arr.indexOf(item) !== index))
|
|
||||||
);
|
|
||||||
for (let i = 0; i < res.length; i++) {
|
for (let i = 0; i < res.length; i++) {
|
||||||
if (
|
if (
|
||||||
conflictingNames.has(res[i].columnName) &&
|
conflictingNames.has(res[i].columnName) &&
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ const {
|
|||||||
makeUniqueColumnNames,
|
makeUniqueColumnNames,
|
||||||
extractDbNameFromComposite,
|
extractDbNameFromComposite,
|
||||||
extractErrorLogData,
|
extractErrorLogData,
|
||||||
|
getConflictingColumnNames,
|
||||||
} = global.DBGATE_PACKAGES['dbgate-tools'];
|
} = global.DBGATE_PACKAGES['dbgate-tools'];
|
||||||
|
|
||||||
let authProxy;
|
let authProxy;
|
||||||
@@ -60,7 +61,23 @@ function extractPostgresColumns(result, dbhan) {
|
|||||||
columnName: fld.name,
|
columnName: fld.name,
|
||||||
dataTypeId: fld.dataTypeID,
|
dataTypeId: fld.dataTypeID,
|
||||||
dataTypeName: typeIdToName[fld.dataTypeID],
|
dataTypeName: typeIdToName[fld.dataTypeID],
|
||||||
|
tableId: fld.tableID,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
// const conflictingNames = getConflictingColumnNames(res);
|
||||||
|
// if (conflictingNames.size > 0) {
|
||||||
|
// const requiredTableIds = res.filter(x => conflictingNames.has(x.columnName)).map(x => x.tableId);
|
||||||
|
// const tableIdResult = await dbhan.client.query(
|
||||||
|
// `SELECT DISTINCT c.oid AS table_id, c.relname AS table_name
|
||||||
|
// FROM pg_class c
|
||||||
|
// WHERE c.oid IN (${requiredTableIds.join(',')})`
|
||||||
|
// );
|
||||||
|
// const tableIdToTableName = _.fromPairs(tableIdResult.rows.map(cur => [cur.table_id, cur.table_name]));
|
||||||
|
// for (const col of res) {
|
||||||
|
// col.pureName = tableIdToTableName[col.tableId];
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
makeUniqueColumnNames(res);
|
makeUniqueColumnNames(res);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user