Skip to content

Commit 225bfdb

Browse files
authored
HCK-8696: add filtering of duplicated indexes columns for case with indexes on partitioned tables (#121)
* HCK-8696: add filtering of duplicated indexes columns for case with indexes on partitioned tables * HCK-8696: removed redundant Boolean call
1 parent c05efdf commit 225bfdb

File tree

2 files changed

+26
-1
lines changed

2 files changed

+26
-1
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
const getColumnUniqueKey = ({ IndexName, TableName, schemaName, columnName }) =>
2+
`${schemaName}${IndexName}${TableName}${columnName}`;
3+
4+
const getUniqueIndexesColumns = ({ indexesColumns }) => {
5+
const uniqueKeysToColumns = {};
6+
7+
for (const indexesColumn of indexesColumns) {
8+
const columnKey = getColumnUniqueKey(indexesColumn);
9+
const isColumnUnique = !uniqueKeysToColumns[columnKey];
10+
11+
if (!isColumnUnique) {
12+
continue;
13+
}
14+
15+
uniqueKeysToColumns[columnKey] = indexesColumn;
16+
}
17+
18+
return Object.values(uniqueKeysToColumns);
19+
};
20+
21+
module.exports = {
22+
getUniqueIndexesColumns,
23+
};

reverse_engineering/reverseEngineeringService/reverseEngineeringService.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ const {
4242
getPeriodForSystemTime,
4343
} = require('./helpers');
4444
const pipe = require('../helpers/pipe');
45+
const { getUniqueIndexesColumns } = require('./helpers/getUniqueIndexesColumns');
4546

4647
const mergeCollectionsWithViews = ({ jsonSchemas }) => {
4748
const [viewSchemas, collectionSchemas] = partition(jsonSchemas, jsonSchema => jsonSchema.relatedTables);
@@ -309,7 +310,8 @@ const reverseCollectionsToJSON = logger => async (dbConnectionClient, tablesInfo
309310
rawDatabaseIndexes.map(i => i.index_id),
310311
logger,
311312
);
312-
const databaseIndexes = addTotalBucketCountToDatabaseIndexes(rawDatabaseIndexes, indexesBucketCount);
313+
const uniqueDatabaseIndexesColumns = getUniqueIndexesColumns({ indexesColumns: rawDatabaseIndexes });
314+
const databaseIndexes = addTotalBucketCountToDatabaseIndexes(uniqueDatabaseIndexesColumns, indexesBucketCount);
313315

314316
return await Object.entries(tablesInfo).reduce(async (jsonSchemas, [schemaName, tableNames]) => {
315317
logger.log('info', { message: `Fetching '${dbName}' database information` }, 'Reverse Engineering');

0 commit comments

Comments
 (0)