gengliangwang opened a new pull request, #59714:
URL: https://github.com/apache/spark/pull/59714

   ### What changes were proposed in this pull request?
   
   Build tpcds-kit with `-std=gnu89` (via `LINUX_CFLAGS="-O3 -std=gnu89"`) in 
the `Build tpcds-kit` step of both `build_and_test.yml` (the `Run TPC-DS 
queries with SF=1` job) and `benchmark.yml` (the `tpcds-1g-gen` job, which must 
be kept in sync).
   
   ### Why are the changes needed?
   
   The `Run TPC-DS queries with SF=1` job has been failing intermittently in 
the `Build tpcds-kit` step. GitHub's `ubuntu-latest` label is gradually moving 
to Ubuntu 26.04 (starting October 19, 2026), which ships GCC 15. GCC 14+ turns 
implicit-int into an error, and GCC 15 defaults to C23, so the old tpcds-kit C 
code no longer compiles:
   
   ```
   date.c:566:1: error: type of 'jDay' defaults to 'int' [-Wimplicit-int]
   date.c:566:1: error: type of 'nDistribution' defaults to 'int' 
[-Wimplicit-int]
   make: *** [<builtin>: date.o] Error 1
   ```
   
   Examples: 
https://github.com/ForVic/spark/actions/runs/39739475067/job/119709170091, 
https://github.com/pratham76/spark/actions/runs/39796929675/job/119898127546 
(both on image `ubuntu-26.04`). The job looks flaky because it only fails when 
it lands on a migrated runner and the TPC-DS data cache misses.
   
   Setting the C standard explicitly works on both the old and the new 
compilers and doesn't depend on which runner image the job gets.
   
   ### Does this PR introduce _any_ user-facing change?
   
   No, CI only.
   
   ### How was this patch tested?
   
   Reproduced locally in Docker:
   - `gcc:15` (GCC 15.3.0) with `make OS=LINUX`: fails with the error above.
   - `gcc:15` with `make OS=LINUX LINUX_CFLAGS="-O3 -std=gnu89"`: builds 
`dsdgen` and `dsqgen`.
   - The `call_center`, `customer`, `date_dim`, `item`, `web_sales` and 
`web_returns` data generated at SF=1 is byte-identical (same md5) between 
`gcc:13` with the default flags (what Ubuntu 24.04 runners use today) and 
`gcc:15` with `-std=gnu89`, so the expected TPC-DS query results don't change.
   
   Changing `build_and_test.yml` also changes the TPC-DS data cache key, so 
this PR's CI rebuilds tpcds-kit with the new flags.
   
   ### Was this patch authored or co-authored using generative AI tooling?
   
   Generated-by: Claude Code (Claude Opus 5.5)
   
   This pull request and its description were written by Isaac.
   


-- 
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]


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

Reply via email to