Windows support: enable `windows-latest` in CI
- Dominant language
- Go
- Stars
- 463
- Forks
- 232
- Avg merge
- 2d 11h
- Merged PRs (30d)
- 121
Description
## Summary
Once the CI `os` matrix actually picks runners (#1261), `windows-latest` fails across several packages. Opening this so Windows can be tracked and enabled. I don't have enough experience with iceberg-go's internals to be confident about the right fixes, so I'm reporting what breaks rather than proposing solutions.
## What breaks
- `io`: scheme inference rejects drive paths like `C:\dir`, and paths with `%` in them fail to parse.
- `table`: writes fail with "is a directory" because the data and metadata dirs never nest.
- `table` orphan cleanup: `file://C:/...` gets turned into UNC-looking `\\C:\...` with `%5C` left behind.
- `catalog/hadoop`: `NewCatalog` rejects drive-letter warehouses, and file URIs come out with backslashes.
- `catalog/sql`: DSNs like `file://C:\...` are rejected, and SQLite files can't be deleted while they're still open ("sharing violation").
- `catalog/rest`: `TestSigv4ConcurrentSigners` fails on windows go1.26.1 only. It passes on windows go1.25.8 and everywhere else, and isn't related to paths, so it may belong in its own issue.
## What I noticed
Most of these look like a Windows path being treated as a URL. `url.Parse("C:\\dir")` reads the drive letter `C:` as a scheme, which seems to be behind the `io`, `table`, and normalization failures. The `sql` "sharing violation" looks like the Windows rule that you can't remove a file while it's still open. The `rest` failure looks unrelated (that package isn't path-aware) and more like a go1.26 networking change or a fragile test. I'm not confident enough in the codebase to say these are the real root causes, so treat them as starting points rather than conclusions.
## Success criteria
`windows-latest` is enabled in the CI matrix and runs green with no errors.
Contributor guide
Research direction
Enable windows-latest in the CI matrix, then run the io, table, catalog/hadoop, catalog/sql, and catalog/rest tests to separate path, file-sharing, and Go 1.26 failures. Start with the reported drive-path and file-URI failures; done means the Windows CI run is green with no errors, including TestSigv4ConcurrentSigners.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- github-actions, go, sqlite
- Domain
- backend, ci-cd, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100