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.
Summary
Once the CI
osmatrix actually picks runners (#1261),windows-latestfails 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 likeC:\dir, and paths with%in them fail to parse.table: writes fail with "is a directory" because the data and metadata dirs never nest.tableorphan cleanup:file://C:/...gets turned into UNC-looking\\C:\...with%5Cleft behind.catalog/hadoop:NewCatalogrejects drive-letter warehouses, and file URIs come out with backslashes.catalog/sql: DSNs likefile://C:\...are rejected, and SQLite files can't be deleted while they're still open ("sharing violation").catalog/rest:TestSigv4ConcurrentSignersfails 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 letterC:as a scheme, which seems to be behind theio,table, and normalization failures. Thesql"sharing violation" looks like the Windows rule that you can't remove a file while it's still open. Therestfailure 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-latestis enabled in the CI matrix and runs green with no errors.