Wow, yea, the performance gains and new UX features (JSON_TABLE, MERGE improvements, etc) are huge here, but these really stand out to me:
> PostgreSQL 17 supports using identity columns and exclusion constraints on partitioned tables.
> PostgreSQL 17 also includes a built-in, platform independent, immutable collation provider that's guaranteed to be immutable and provides similar sorting semantics to the C collation except with UTF-8 encoding rather than SQL_ASCII. Using this new collation provider guarantees that your text-based queries will return the same sorted results regardless of where you run PostgreSQL.
Ironically, the information and link that you've shared is incorrect / outdated.
The newer draft proposal allows for multiple different options of time information to be added to a UUIDv7 encoding, beyond the typical 48-bits of Unix epoch millisecond data.
I appreciate you taking the time to look at the source. I used this, like I do most of my side projects, as an opportunity to learn a few things.
I wanted a generic abstraction so that multiple sources could be used. Originally I didn't want or think of the need to support multiple sources, but it quickly became apparent how necessary that was when looking at the quality of free vs paid vs personal-key-required sources.
Sorry, not trying to be a put down. Just a lot of code smells that I see reviewing other people's go at work. Things like the abundance of interfaces, defining your own IO and error handling, use of reflection, and using third party libraries for simple tasks. I'll definitely say the code is at least clean and well documented, so kudos there.
I was looking for a well made and reusable "retry" library, but all I could find were libraries with awkward interfaces/APIs, overuses of state/pointers, a lack of extensibility, or they'd somehow opinionate themselves towards a specific purpose (HTTP retry libraries are in a major abundance).
So, I figured I'd take a stab at creating a retry library that worked in a simple loop with functional composition that would allow for easy extensibility. I ended up writing an API that somewhat heavily used the functional option pattern described so well by Dave Cheney in his blog post: "Functional options for friendly APIs" (http://dave.cheney.net/2014/10/17/functional-options-for-fri...).
Ideally, the library's packages can be used separately, so you could use the `jitter` transformations even if you don't want to use the actual `retry` mechanism. That is why the library is split into a few packages.
Anyway, I'm curious as to what HN thinks about this library. Anything that I could definitely improve? Is there anything awkward about the API in particular? Something that I missed?
> PostgreSQL 17 supports using identity columns and exclusion constraints on partitioned tables.
> PostgreSQL 17 also includes a built-in, platform independent, immutable collation provider that's guaranteed to be immutable and provides similar sorting semantics to the C collation except with UTF-8 encoding rather than SQL_ASCII. Using this new collation provider guarantees that your text-based queries will return the same sorted results regardless of where you run PostgreSQL.