[ 
https://issues.apache.org/jira/browse/SPARK-59394?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

ASF GitHub Bot updated SPARK-59394:
-----------------------------------
    Labels: pull-request-available  (was: )

> UnBase64: decode the input bytes directly instead of converting to a String 
> per row
> -----------------------------------------------------------------------------------
>
>                 Key: SPARK-59394
>                 URL: https://issues.apache.org/jira/browse/SPARK-59394
>             Project: Spark
>          Issue Type: Improvement
>          Components: SQL
>    Affects Versions: 4.1.0
>            Reporter: David Mollitor
>            Priority: Minor
>              Labels: pull-request-available
>
> h2. Summary
> The {{UnBase64}} expression (SQL {{unbase64}} and {{{}try_to_binary(..., 
> 'base64'){}}}) decodes a base64 string to bytes. Both its interpreted path 
> and its generated code call {{.toString()}} on the input {{UTF8String}} 
> before decoding, which decodes the whole input from UTF-8 into a Java 
> {{String}} on every row purely to hand it to the decoder. 
> {{java.util.Base64.Decoder}} accepts a byte array directly, so passing the 
> raw UTF-8 bytes ({{{}UTF8String.getBytes(){}}}) removes that per-row 
> {{String}} allocation and UTF-8 decode.
> h2. Why this is safe (no behavior change)
> {{getMimeDecoder().decode(String)}} internally converts the string to bytes 
> with ISO-8859-1 before decoding. For valid base64 – which is always ASCII – 
> those bytes are identical to the raw UTF-8 bytes. For any non-ASCII or 
> otherwise non-base64 content, the MIME decoder ignores every byte outside the 
> base64 alphabet ({{{}A-Za-z0-9+/={}}}) under both paths, so the decoded 
> output is the same. The change therefore produces identical results for all 
> inputs.
> h2. Does this PR introduce _any_ user-facing change?
> No.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to