Push operation rows in a loop, not a spread
Spreading a large RETURNING * result into push() overflowed the call stack on scale, recode and clone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
f8b935d03f
commit
1c40e5b7b0
@ -905,7 +905,7 @@ module.exports = function(pool) {
|
|||||||
for (const unit of units) {
|
for (const unit of units) {
|
||||||
const incr = await resolveIncrs(client, ctx, unit.where, excludeClause, req.body);
|
const incr = await resolveIncrs(client, ctx, unit.where, excludeClause, req.body);
|
||||||
// no rows, or already at the target — nothing to write for this slice
|
// no rows, or already at the target — nothing to write for this slice
|
||||||
if (incr.value === 0 && incr.units === 0) { skipped.push(...unit.slices); continue; }
|
if (incr.value === 0 && incr.units === 0) { for (const s of unit.slices) skipped.push(s); continue; }
|
||||||
applied++;
|
applied++;
|
||||||
|
|
||||||
const loggedSlice = unit.slices.length === 1 ? unit.slices[0] : unit.slices;
|
const loggedSlice = unit.slices.length === 1 ? unit.slices[0] : unit.slices;
|
||||||
@ -933,7 +933,7 @@ module.exports = function(pool) {
|
|||||||
for (const r of result.rows) {
|
for (const r of result.rows) {
|
||||||
if (r.pf_logid != null) sqlByLogId.set(r.pf_logid, sql);
|
if (r.pf_logid != null) sqlByLogId.set(r.pf_logid, sql);
|
||||||
}
|
}
|
||||||
allRows.push(...result.rows);
|
for (const r of result.rows) allRows.push(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (allRows.length === 0) {
|
if (allRows.length === 0) {
|
||||||
@ -1041,7 +1041,7 @@ module.exports = function(pool) {
|
|||||||
for (const r of result.rows) {
|
for (const r of result.rows) {
|
||||||
if (r.pf_logid != null) sqlByLogId.set(r.pf_logid, sql);
|
if (r.pf_logid != null) sqlByLogId.set(r.pf_logid, sql);
|
||||||
}
|
}
|
||||||
allRows.push(...result.rows);
|
for (const r of result.rows) allRows.push(r);
|
||||||
}
|
}
|
||||||
// Every coordinate in the selection nets to zero -- nothing to move.
|
// Every coordinate in the selection nets to zero -- nothing to move.
|
||||||
// Refused like scale's no-op rather than committing an empty log
|
// Refused like scale's no-op rather than committing an empty log
|
||||||
@ -1161,7 +1161,7 @@ module.exports = function(pool) {
|
|||||||
for (const r of result.rows) {
|
for (const r of result.rows) {
|
||||||
if (r.pf_logid != null) sqlByLogId.set(r.pf_logid, sql);
|
if (r.pf_logid != null) sqlByLogId.set(r.pf_logid, sql);
|
||||||
}
|
}
|
||||||
allRows.push(...result.rows);
|
for (const r of result.rows) allRows.push(r);
|
||||||
}
|
}
|
||||||
await client.query('COMMIT');
|
await client.query('COMMIT');
|
||||||
committed = true;
|
committed = true;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user