SEPURI-SAI-KRISHNA commented on issue #12620: URL: https://github.com/apache/seatunnel/issues/12620#issuecomment-6386282781
**Scan update, re-run on `dev` `9ab97e15f`.** The 24 are now **13**, exactly the `sql/` set #12495 covers. `calcite`, `nlpmodel` and `validator` are at **zero**, so #12618 delivered its 11 when it merged on 2026-10-12. Confirmed zero now waits on #12495 alone. **1. Agreed on "always a fixed locale".** The carve-out still has no members. One surviving caller-locale case does exist, and it reads as a bug rather than a carve-out: `FORMATDATETIME` and `FROM_UNIXTIME` build their formatter with `DateTimeFormatter.ofPattern(format)` and no locale (`DateTimeFunction:616,799`), on a user-supplied pattern, and return the result as a **row value**, not a message. Measured, varying only the FORMAT locale: ``` pattern und tr-TR ja-JP yyyy-MM-dd 2026-10-24 2026-10-24 2026-10-24 MMM d yyyy Oct 24 2026 Eki 24 2026 10月 24 2026 EEEE Sat Cumartesi 土曜日 ``` Numeric patterns are unaffected, which I would not have guessed; only text varies. Two workers with different locales emit different values for the same row, so the rule stays "always fixed". Filed as #12975, fix in #12976. **3. Scope it to what exists.** In this module's `src/main`: `String.format` has 103 sites, only **6** with numeric conversions, all 6 message text. `SimpleDateFormat`, `Calendar.getInstance`, `Collator` and `java.text.NumberFormat` are all at **0**, so three of your four APIs have no members here, like the carve-out. `DateTimeFormatter.ofPattern` has **3**. Two are the pair above. The third, `ZetaDateTimeFormat:51`, is a closed enum of numeric-only patterns, so it is provably safe; the contract should say so rather than ban the call. Open #12703 adds a fourth that **parses** a user pattern and caches the formatter by pattern alone, which is worse: that path swallows `DateTimeException` into NULL, so the row silently loses its value. I am raising it there. **2. Nothing exists to hang a suppression on.** No pom in the repo declares checkstyle, forbidden-apis, spotbugs or errorprone; PMD appears only as three orphan version properties in the root `pom.xml`, with no plugin, ruleset or CI step. The repo's real mechanism is the one #12495 and #12618 use: a test pinning and restoring the JVM default, as `SQLDateTimeFunctionsTest#testAtTimeZone` does for `TimeZone`. A deliberate exception fits a one-line comment at the site; `Locale.getDefault()` appears exactly once here, `SeaTunnelDataContext:45`, feeding the Calcite `DataContext` contract. -- 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]
