You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
chore: optimize CI and improve PostgreSQL validation handling
This release includes several CI and testing improvements:
- CI now runs only StructuredQueriesPostgresTests to avoid MacroTesting hangs on Linux
- SQL validation gracefully skips when PostgreSQL is unavailable (no log spam)
- Disabled StructuredQueriesPostgresSQLValidation trait by default to avoid heavy PostgresNIO dependency
- Fixed CI cache keys to use Package.swift instead of Package.resolved
- Optimized CI build pipeline (removed redundant build step)
- CI completes in ~5 minutes (previously 15-25 minute timeouts)
Technical improvements:
- Added connectionFailed flag to SharedValidationClient for fail-fast behavior
- Set logger level to .error to suppress connection attempt logs
- Tests pass on macOS Xcode 26.0, Linux Swift 6.1, and Linux Swift 6.2
- Fixed unconditional nonisolated(unsafe) usage for Swift 6 strict concurrency
No API changes - purely CI and testing infrastructure improvements.
I've added quite a few PostgreSQL-specific features, all following SQ's API
1745
+
patterns, such as FTS, Triggers, Window functions, JSONB operations, Postgres Array, and advanced aggregates.
1746
+
1747
+
FTS and Triggers sections were particularly tricky to get right. My compliments to you both for figuring those out from scatch.
1748
+
1749
+
585 tests pass almost instantly, including parallel execution. I added
1750
+
postgres-nio behind a trait to upgrade assertSQL to both print generated
1751
+
SQL AND validate syntax against PostgreSQL. swift-records has the full
1752
+
assertQuery (printing + database execution) for integration tests.
1753
+
1754
+
Technical challanges I faced:
1755
+
1756
+
Swift-syntax linker errors: Solved by pinning to
1757
+
swift-6.2-DEVELOPMENT-SNAPSHOT-2025-10-09-a. If you have insights on a
1758
+
more robust approach, I'd love to hear them.
1759
+
1760
+
Replacing `any`: I noticed you mentioned some cases crash the compiler
1761
+
requiring `any`. I experimented and replaced most `any` uses with `some` without issues
1762
+
- though I'm on Xcode+toolchain 26.1 with latest swift-syntax snapshot, which
1763
+
might explain the difference. Happy to share specifics if you're
1764
+
curious.
1765
+
1766
+
Upstream sync
1767
+
1768
+
The packages have diverged significantly, so it's not currently trivial to sync via pull and merge. Workable to do it manually (AI helps), but if you have better ideas I'd love to hear.
1769
+
1770
+
I haven't had the chance to experiment with enum tables and nested
1771
+
Selections in a real-world project yet, but I'll let you know my
1772
+
findings once I get to that.
1773
+
1774
+
Working on SQ and SQ-postgres is a joy because no other project I work on has such
1775
+
advanced mechanics, especially parameter packs. I learn something new every day.
0 commit comments