Skip to content

Commit 2cb2ff1

Browse files
committed
chore: replace deep copies with shallow spreads in cqn4sql
\`copy()\` in \`getTransformedColumn\`, the ORDER BY / GROUP BY transformer, and \`getTransformedFrom\` all only mutate top-level properties on the result, making a full recursive deep copy unnecessary. Shallow spread suffices. \`calculateOnCondition\` still uses \`copy()\` — it mutates nested token objects in-place during iteration, so a shallow copy would corrupt the original token stream.
1 parent f75e32b commit 2cb2ff1

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

db-service/lib/cqn4sql.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -643,7 +643,7 @@ function cqn4sql(originalQuery, model, useTechnicalAlias = true) {
643643
if (col.cast) ret.cast = resolveEnumCastType(col.cast)
644644
return ret
645645
}
646-
return copy(col)
646+
return { ...col }
647647
}
648648

649649
function handleEmptyColumns(columns) {
@@ -1322,7 +1322,7 @@ function cqn4sql(originalQuery, model, useTechnicalAlias = true) {
13221322
else if (col.xpr) transformedColumn = { xpr: getTransformedTokenStream(col.xpr) }
13231323
else if (col.func) transformedColumn = { args: getTransformedFunctionArgs(col.args), func: col.func }
13241324
// val
1325-
else transformedColumn = copy(col)
1325+
else transformedColumn = { ...col }
13261326
if (col.sort) transformedColumn.sort = col.sort
13271327
if (col.nulls) transformedColumn.nulls = col.nulls
13281328
res.push(transformedColumn)
@@ -2014,7 +2014,7 @@ function cqn4sql(originalQuery, model, useTechnicalAlias = true) {
20142014
*/
20152015
function getTransformedFrom(from, existingWhere = []) {
20162016
const transformedWhere = []
2017-
let transformedFrom = copy(from) // REVISIT: too expensive!
2017+
let transformedFrom = { ...from }
20182018
if (from.$refLinks) defineProperty(transformedFrom, '$refLinks', [...from.$refLinks])
20192019
if (from.args) {
20202020
transformedFrom.args = []

0 commit comments

Comments
 (0)