diff --git a/lib/helpers.js b/lib/helpers.js index e78b9c1..c371e80 100644 --- a/lib/helpers.js +++ b/lib/helpers.js @@ -91,9 +91,12 @@ async function getQueryResultsFromS3(params) { } else if (Boolean(params.config.pagination)) { //user wants DML response paginated + + const paginationFactor = Boolean(params.config.NextToken) ? 0 : 1 + let paginationParams = { QueryExecutionId: params.config.QueryExecutionId, - MaxResults: params.config.pagination + 1, + MaxResults: params.config.pagination + paginationFactor, NextToken: params.config.NextToken, }; @@ -102,7 +105,7 @@ async function getQueryResultsFromS3(params) { .promise(); if (params.config.formatJson) { return { - items: await cleanUpPaginatedDML(queryResults), + items: await cleanUpPaginatedDML(queryResults, paginationFactor), nextToken: queryResults.NextToken, }; } else { @@ -124,14 +127,14 @@ async function getQueryResultsFromS3(params) { } } -async function cleanUpPaginatedDML(queryResults) { +async function cleanUpPaginatedDML(queryResults, paginationFactor) { const dataTypes = await getDataTypes(); const columnNames = Object.keys(dataTypes).reverse(); let rowObject = {}; let unformattedS3RowArray = null; let formattedArray = []; - for (let i = 1; i < queryResults.ResultSet.Rows.length; i++) { + for (let i = paginationFactor; i < queryResults.ResultSet.Rows.length; i++) { unformattedS3RowArray = queryResults.ResultSet.Rows[i].Data; for (let j = 0; j < unformattedS3RowArray.length; j++) { diff --git a/package.json b/package.json index 35bc163..1977656 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "athena-express", - "version": "7.0.3", + "version": "7.1.0", "description": "Athena-Express makes it easier to execute SQL queries on Amazon Athena by consolidating & astracting several methods in the AWS SDK", "main": "./lib/index.js", "types": "./index.d.ts",