SEPURI-SAI-KRISHNA commented on issue #12620:
URL: https://github.com/apache/seatunnel/issues/12620#issuecomment-6423818815

   The baseline you asked for, @SEZ9 @DanielLeens. #12495 merged as 
`a89de9b70`, so the zero is now established on `dev`.
   
   **New `dev` commit: `7b686d838`** (was `9ab97e15f` when you asked). The 
figures below are
   identical on `cb3351ed1` and on `7b686d838`, since nothing between them 
touched this module.
   
   **Scan of `seatunnel-transforms-v2/src/main`:**
   
   | | |
   | --- | --- |
   | java files scanned | 233 |
   | bare `toLowerCase()` / `toUpperCase()` | **0** |
   | `Locale.ROOT` qualified sites | 33 |
   | `Locale.getDefault()` | 1 |
   
   The 13 `sql/` sites are gone, which is what #12495 delivered. Together with 
the 11 from #12618 the original 24 are now all accounted for.
   
   A note on method, since a sloppy zero is worthless: I extracted the tree 
with `git archive` and scanned with a multiline aware pattern rather than a 
line based grep, which would miss a newline between the parentheses. On the 
same corpus the compliant form returns 33, so the scan is finding real call 
sites rather than failing silently.
   
   **The one deliberate exception to list explicitly:** 
`SeaTunnelDataContext.java:45`, `Locale.getDefault()` passed into the Calcite 
`DataContext` contract. That is a value Calcite asks us for rather than a case 
conversion of our own, so it is outside the contract as scoped, but it should 
be named in the test rather than left for the next reader to rediscover.
   
   **One thing worth adding, because it changes a conclusion from earlier in 
this thread.** The view so far has been that the "preserve intentional 
user-data casing" carve-out has no members. It does have a candidate, and 
#12495 resolved it: SQL `LOWER` and `UPPER` at `StringFunction.java:264` and 
`:272` return **row values**, not message text, which is exactly the category 
that could have argued for the caller locale. Both are now `Locale.ROOT`. So 
the carve-out is empty **by decision rather than by absence**, which is a 
stronger basis for the contract than "no example exists". Worth stating that 
way in the guard, since it is the case a future reader is most likely to 
challenge.
   
   **Scope confirmed as you set it:** case conversion only. The 
`DateTimeFormatter.ofPattern` sites stay as separate behavioural work in #12975 
and #12976, the new shared formatter path in #12703, and `ZetaDateTimeFormat`'s 
numeric only enum stays out.
   
   Happy to send the focused test next, pinning the zero and naming the 
`SeaTunnelDataContext` exception at the call site and in the test, as 
@DanielLeens asked.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to