apache / apache/iceberg-go

Windows support: enable `windows-latest` in CI

Open
#1,262 1 comment 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.