What graphile/crystal shipped
Generated by FoxPlug from public activity โ not affiliated with Graphile.
Week of September 14, 2026
What shipped
- WithPgClient variants now maintain full multistep equivalence with non-WithPgClient variants through internal reworking. Pull request #3187
- pgResource.get() and .find() now automatically skip empty fetches when WHERE conditions are always falsy. Pull request #3177
- Functional PostgreSQL resource execution now has result-shape typing for PgResource.execute(), executePositional(), and executeNamed(). Pull request #3174
- PgClient type is now inferred from loaded adaptors, eliminating the need for most manual casting. Pull request #3175
- @returnType decorator now works with setof functions, fixing pagination field descriptions. Pull request #3173
- pgSelect now deduplicates queries early, matching functionality already present in PgExecutor. Pull request #3181
- pgResource.get() and .find() now accept null/undefined, reducing boilerplate like inhibitOnNull. Pull request #3178
- Experimental support added for wrapping CRUD mutations. Pull request #3185
- SmartFieldPlanResolver types in wrapPlans() have been improved. Pull request #3176
- getGraphQLTypeByPgCodec and getTypeMetaByName now have stronger types. Pull request #3172
Why it matters
Type improvements and performance optimizations across multiple areas make development more reliable and reduce boilerplate. The fix for @returnType with setof functions and automatic skipping of empty fetches address real usability issues. Support for inferring PgClient types simplifies setup for new users.
Changelog entry
- WithPgClient variants reworked to maintain full multistep equivalence with non-WithPgClient variants Pull request #3187
- Experimental support for wrapping CRUD mutations Pull request #3185
- pgSelect now deduplicates queries early to reduce redundant work Pull request #3181
- pgResource.get() and .find() now accept null/undefined arguments Pull request #3178
- Automatic optimization to skip empty fetches when WHERE conditions are always falsy Pull request #3177
- Functional PostgreSQL resources now have result-shape typing for execute() methods Pull request #3174
- PgClient type inference from loaded adaptors reduces manual casting requirements Pull request #3175
- @returnType decorator now works with setof functions, improving pagination field descriptions Pull request #3173
- Stronger types for getGraphQLTypeByPgCodec and getTypeMetaByName Pull request #3172
This week: WithPgClient multistep equivalence, automatic empty fetch skipping, PgClient type inference from adaptors, @returnType now works with setof functions, and stronger types throughout.
Crystal shipped significant improvements this week focused on developer experience and type safety. WithPgClient regained full multistep equivalence, pgResource queries now automatically skip empty fetches, and PgClient types are inferred from loaded adaptors. The @returnType decorator now works correctly with setof functions. Type safety improvements landed across getGraphQLTypeByPgCodec, getTypeMetaByName, and functional resource execution results.