Skip to content

Windows support: enable windows-latest in CI #1262

Description

@abnobdoss

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions