[
https://issues.apache.org/jira/browse/SPARK-59346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18113520#comment-18113520
]
Rajesh Vakkalagadda commented on SPARK-59346:
---------------------------------------------
Based on the PR comments, not planning to work on this.
> Add tests for ProjectingInternalRow
> -----------------------------------
>
> Key: SPARK-59346
> URL: https://issues.apache.org/jira/browse/SPARK-59346
> Project: Spark
> Issue Type: Test
> Components: SQL
> Affects Versions: 4.4.0
> Reporter: Rajesh Vakkalagadda
> Priority: Minor
> Labels: pull-request-available
>
> Description:
> ProjectingInternalRow
> (sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/ProjectingInternalRow.scala)
> has no dedicated test suite. It backs the DSv2 row-level write path
> (ReplaceDataProjections / WriteDeltaProjections, used by MERGE/UPDATE/DELETE
> on V2 tables) by re-exposing an underlying InternalRow through a colOrdinals
> index remapping, via ~18 near-identical one-line accessor delegations
> (getBoolean through getVariant, plus getStruct/getArray/getMap/get). That
> repetition is exactly the shape of code where a copy-paste slip — reading the
> wrong source ordinal, or delegating to a similarly-named sibling accessor
> (e.g. getTimestampNTZNanos calling into the LTZ path) — would silently return
> the wrong value during a write, rather than fail loudly. Nothing today would
> catch that.
> h3. Proposed tests
> New suite: {{{}ProjectingInternalRowSuite{}}}, under
> {{{}sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/{}}}.
> - Every accessor (boolean, byte, short, int, long, float, double, decimal,
> UTF8String, binary, binary view, interval, timestamp NTZ nanos, timestamp LTZ
> nanos,
> variant, struct, array, map, and the generic {{{}get(ordinal, dataType){}}}),
> plus {{{}isNullAt{}}}, correctly reads through a non-identity {{colOrdinals}}
> permutation
> to the right source column — not the identity mapping, and not a
> similarly-named neighboring accessor.
> - {{project()}} lets a single {{ProjectingInternalRow}} instance be reused
> across different underlying rows (including rows of a different shape)
> without leaking
> stale state from whichever row was projected previously.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]