From b706a986c9ab7bae809039b1e432f26ae24dc037 Mon Sep 17 00:00:00 2001 From: Danylo Strelets Date: Thu, 13 Jul 2023 14:46:31 +0300 Subject: [PATCH] HCK-3553: standardize record sampling limitation --- .../helpers/postgresHelpers/tableHelper.js | 17 +++++++++-------- reverse_engineering/helpers/postgresService.js | 4 ++-- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/reverse_engineering/helpers/postgresHelpers/tableHelper.js b/reverse_engineering/helpers/postgresHelpers/tableHelper.js index 3dc7baf..3b0a578 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 284d104..460bf50 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));