“Compared to other ways of doing parallelism, processes are very expensive, both in terms of taking CPU resources but also the amount of time it takes to spin up a new process.”
“Because it’s expensive to spin up new processes, Postgres will only do this for long-running queries.”
Also:
“There’s been years of people talking about switching Postgres from a process model to a threading model, but nothing concrete has come out of that.”
I’ve read several times that on Linux, the cost between a process and a thread is relatively small.
Where have you red that "the cost between a process and a thread is relatively small."? I would be curious to see a link because the most cursory internet search would show you that it is not true.
Well, both are true of course. You will have to put numbers on those to make sensible decisions.
Historically, creating processes in Linux has been cheaper than in other Unix-like OS (you might find results of an old Byte benchmark) and much cheaper than in Windows. Creating a thread will be undoubtedly cheaper still, but whether that will change the user experience or is worth the cost depends on details (how large the memory footprint is, pagesize, how many files are open, how many threads are to be executed, their lifetime, how many execution units are available, etc.).
The issues around the transaction ids and process per connection are well known, but the changes to the codebase to fix them would either constitute a backwards incompatible change that would change storage needs or an incredibly large rewrite of the codebase that breaks with decades of assumptions.
The json issue is a lot less of a problem as that’s net new. But some of these changes have been debated for years with no movement (and no lack of willing developers to tackle it) and at some point a fork or rewrite like this will happen. In my mind, all LLMs have done is made this work easier to do. If you have reservations about LLM’s doing this kind of work, no one is forcing you to use it, and I think it shows the utility of LLMs in that these kinds of things now can exist.
So even if they reach 100% compatibility they never get equality.
Then Vibe into that and add changes that breaks the existing coverage...
Why not reimplement the entire thing from the ground up with the changes in mind from the start instead?
The upgrade is an afterthought to a system that is not verified to be fully working and the new features will break the existing verification too.
If I had OCD it would be triggered to the max by this. But I'm just sipping a drink from the sidelines.
Maybe you should start from bug report without LLM-slop?