diff --git a/reverse_engineering/helpers/postgresHelpers/tableHelper.js b/reverse_engineering/helpers/postgresHelpers/tableHelper.js index 3dc7baf3..3b0a5786 100644 --- a/reverse_engineering/helpers/postgresHelpers/tableHelper.js +++ b/reverse_engineering/helpers/postgresHelpers/tableHelper.js @@ -131,13 +131,14 @@ const checkHaveJsonTypes = columns => { return _.find(columns, { type: 'json' }); }; -const getLimit = (count, recordSamplingSettings) => { - const per = recordSamplingSettings.relative.value; - const size = - recordSamplingSettings.active === 'absolute' - ? recordSamplingSettings.absolute.value - : Math.round((count / 100) * per); - return Math.min(size, 100000); +const getSampleDocSize = (count, recordSamplingSettings) => { + if (recordSamplingSettings.active === 'absolute') { + return Number(recordSamplingSettings.absolute.value); + } + + const limit = Math.ceil((count * recordSamplingSettings.relative.value) / 100); + + return Math.min(limit, recordSamplingSettings.maxValue); }; const prepareTableConstraints = (constraintsResult, attributesWithPositions, tableIndexes) => { @@ -355,6 +356,6 @@ module.exports = { prepareTableConstraints, prepareTableLevelData, prepareTableIndexes, - getLimit, + getSampleDocSize, prepareTableInheritance, }; diff --git a/reverse_engineering/helpers/postgresService.js b/reverse_engineering/helpers/postgresService.js index 284d104f..460bf505 100644 --- a/reverse_engineering/helpers/postgresService.js +++ b/reverse_engineering/helpers/postgresService.js @@ -24,7 +24,7 @@ const { prepareTablePartition, checkHaveJsonTypes, prepareTableConstraints, - getLimit, + getSampleDocSize, prepareTableLevelData, prepareTableIndexes, prepareTableInheritance, @@ -372,7 +372,7 @@ module.exports = { const fullTableName = `${schemaName}.${tableName}`; const quantity = (await db.queryTolerant(queryConstants.GET_ROWS_COUNT(fullTableName), [], true))?.quantity || 0; - const limit = getLimit(quantity, recordSamplingSettings); + const limit = getSampleDocSize(quantity, recordSamplingSettings); const jsonColumns = attributes.filter(({ type }) => _.includes(['json', 'jsonb'], type));