Column name collision resolving #1234 for postgres - commented out (not working)

This commit is contained in:
SPRINX0\prochazka
2025-11-03 16:56:58 +01:00
parent 0919f4c85b
commit a324cf0fcd
2 changed files with 25 additions and 3 deletions

View File

@@ -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));
}
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[]) {
const usedNames = new Set();
const conflictingNames = new Set(
_uniq(res.map(x => x.columnName).filter((item, index, arr) => arr.indexOf(item) !== index))
);
const conflictingNames = getConflictingColumnNames(res);
for (let i = 0; i < res.length; i++) {
if (
conflictingNames.has(res[i].columnName) &&

View File

@@ -13,6 +13,7 @@ const {
makeUniqueColumnNames,
extractDbNameFromComposite,
extractErrorLogData,
getConflictingColumnNames,
} = global.DBGATE_PACKAGES['dbgate-tools'];
let authProxy;
@@ -60,7 +61,23 @@ function extractPostgresColumns(result, dbhan) {
columnName: fld.name,
dataTypeId: 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);
return res;
}