Antonio Garcia
07/08/2022, 6:01 PMMatt Bernstein
07/08/2022, 7:25 PM/**
*
* @param {string} sql
* @param {integer} [limit=9999999999]
* @param {integer} [pageSize=5000]
* @returns {*[]}
*/
const runQuery = ({ sql, limit, pageSize }) => {
if ( !sql ) return [];
const sqlPageSize = pageSize || 5000;
let paginatedRowBegin = 1;
const paginatedRowEnd = limit || 9999999999;
let records = [];
let isMoreRecords = true;
do {
const paginatedSQL = `SELECT * FROM (SELECT ROWNUM AS ROWNUMBER, * FROM ( ${sql} ) ) WHERE ( ROWNUMBER BETWEEN ${paginatedRowBegin} AND ${paginatedRowEnd} )`;
const queryResults = query.runSuiteQL({ query: paginatedSQL, params: [] }).asMappedResults();
records.push( ...queryResults );
if ( queryResults.length < sqlPageSize ) {
isMoreRecords = false;
}
paginatedRowBegin += sqlPageSize;
} while ( isMoreRecords );
return records;
};
Antonio Garcia
07/09/2022, 2:24 PMmichoel
07/10/2022, 12:50 AMMatt Bernstein
07/10/2022, 2:18 AMconst queryFetch = ({ sql }) => {
const queryResult = query.runSuiteQLPaged({
query: sql,
pageSize: 1000,
});
let results = [];
queryResult.pageRanges.forEach(( page, index ) => {
queryResult.fetch({ index }).data.results.forEach(( rowObj ) => {
results.push( rowObj.asMap());
});
});
return results;
};
const queryIterator = ({ sql }) => {
const queryResult = query.runSuiteQLPaged({
query: sql,
pageSize: 1000,
});
let results = [];
queryResult.iterator().each(( page ) => {
page.value.data.iterator().each(( row ) => {
results.push( row.value.asMap());
return true;
});
return true;
});
return results;
};
Shawn Talbert
07/11/2022, 2:28 PMfunction queryFetch( { sql }) {}
?Matt Bernstein
07/11/2022, 2:32 PMShawn Talbert
07/11/2022, 2:38 PMMatt Bernstein
07/11/2022, 2:42 PMShawn Talbert
07/11/2022, 2:44 PMMatt Bernstein
07/11/2022, 2:45 PMShawn Talbert
07/11/2022, 2:47 PMrunPaged()
was faster doing manual paging? Do you have a feel for how much faster it was?Matt Bernstein
07/11/2022, 2:57 PMconst queryFetch = ({ sql }) => {
const startTime = new Date().getTime();
const queryResult = query.runSuiteQLPaged({
query: sql,
pageSize: 1000,
});
let results = [];
queryResult.pageRanges.forEach(( page, index ) => {
queryResult.fetch({ index }).data.results.forEach(( rowObj ) => {
results.push( rowObj.asMap());
});
});
log.debug( "queryFetch total time", ( new Date().getTime() - startTime ) / 1000 );
return results;
};
Shawn Talbert
07/11/2022, 4:22 PMMatt Bernstein
07/11/2022, 4:23 PMbattk
07/14/2022, 5:32 AMbattk
07/14/2022, 5:34 AMquery.runSuiteQL({
query:
"SELECT * FROM (SELECT ROWNUM as row, * FROM (" +
SUITE_QL +
")) WHERE row > ? AND row <= ?",
params: [allResults.length, allResults.length + 5000],
});
This is actually slower than runSuiteQLPagedbattk
07/14/2022, 5:35 AMquery.runSuiteQL({
query: "SELECT * FROM (SELECT ROWNUM as row, * FROM (" +
SUITE_QL +
")) WHERE row > ? AND row <= ?",
params: [allResults.length, MAX_RESULTS],
});
battk
07/14/2022, 5:38 AMquery.runSuiteQL({
query: "SELECT * FROM (SELECT ROWNUM as row, * FROM (" +
SUITE_QL +
")) WHERE row > ?",
params: [allResults.length],
});
Matt Bernstein
07/14/2022, 1:31 PMMatt Bernstein
07/14/2022, 1:32 PMbattk
07/14/2022, 4:45 PMMatt Bernstein
07/14/2022, 4:48 PMbattk
07/14/2022, 4:49 PMMatt Bernstein
07/14/2022, 4:49 PMbattk
07/14/2022, 5:14 PMbattk
07/14/2022, 5:14 PMMatt Bernstein
07/14/2022, 5:14 PMAntonio Garcia
07/14/2022, 5:15 PM