It is so nice having json functionality in a relational db - even if you never actually store json in your database, its useful in so many situations.
Being able to generate json in a query from your data is a big deal too.
Looking forward to really learning json_table
Bit sad the UUIDv7 PR didn't make the cut just yet:
1. Chipping away more at vacuum. Fundamentally Postgres doesn't have undo log and therefore has to have vacuum. It's a trade-off of fast recovery vs well.. having to vacuum. The unfortunate part about vacuum is that it adds load to the system exactly when the system needs all the resources. I hope one day people stop knowing that vacuum exists, we are one step closer, but not there.
2. Performance gets better and not worse. Mark Callaghan blogs about MySQL and Postgres performance changes over time and MySQL keep regressing performance while Postgres keeps improving.
https://x.com/MarkCallaghanDB https://smalldatum.blogspot.com/
3. JSON. Postgres keep improving QOL for the interop with JS and TS.
4. Logical replication is becoming a super robust way of moving data in and out. This is very useful when you move data from one instance to another especially if version numbers don't match. Recently we have been using it to move at the speed of 1Gb/s
5. Optimizer. The better the optimizer the less you think about the optimizer. According to the research community SQL Server has the best optimizer. It's very encouraging that every release PG Optimizer gets better.
> 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.
I hope to one day see Incremental View Maintenance extension (IVM) be turned into a first class feature, it's the only thing I need regularly which isn't immediately there!
SELECT random(1, 10) AS random_number;
Its not quite visible yet, but all this progres by postgres (excuse the pun) on making JSON more deeply integrated with relational principles will surely at some point enable a new paradigm, at least for full stack web frameworks?
I hope SQLite3 can implement SQL/JSON soon too. I have a library of compatability functions to generate the appropriate JSON operations depending on if it's SQLite3 or PostgreSQL. And it'd be nice to reduce the number of incompatibilities over time.
But, there's a ton of stuff in the release notes that jumped out at me too:
"COPY .. ON_ERROR" ignore is going to be nice for loading data anywhere that you don't care if you get all of it. Like a dev environment or for just exploring something. [1]
Improvements to CTE plans are always welcome. [2]
"transaction_timeout" is an amazing addition to the existing "statement_timeout" as someone who has to keep an eye on less experienced people running SQL for analytics / intelligence. [3]
There's a function to get the timestamp out of a UUID easily now, too: uuid_extract_timestamp(). This previously required a user defined function. So it's another streamlining thing that's nice. [4]
I'll use the new "--exclude-extension" option for pg_dump, too. I just got bitten by that when moving a database. [5]
"Allow unaccent character translation rules to contain whitespace and quotes". Wow. I needed this! [6]
[1] https://www.postgresql.org/docs/17/release-17.html#RELEASE-1...
[2] https://www.postgresql.org/docs/17/release-17.html#RELEASE-1...
[3] https://www.postgresql.org/docs/17/release-17.html#RELEASE-1...
[4] https://www.postgresql.org/docs/17/release-17.html#RELEASE-1...
[5] https://www.postgresql.org/docs/17/release-17.html#RELEASE-1...
[6] https://www.postgresql.org/docs/17/release-17.html#RELEASE-1...
https://repost.aws/questions/QUbIn2WmXgTbiVu_4wua9tUw/dms-wi...
Thank you contributors!
I wonder how open postgres is and what kind of pull requests postgres team considers? I'd like to learn how to contribute to PG in baby steps and eventually get to a place where I could contribute substantial features.
Massive improvements to vacuum operations:
Much needed features for backups: I'm a huge fan of FDW's and think they are an untapped-gem in Postgres, so I love seeing these improvements: