Re: Using Expanded Objects other than Arrays from plpgsql
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Michel Pelletier <pelletier.michel@gmail.com>
Cc: Pavel Stehule <pavel.stehule@gmail.com>,
pgsql-hackers@lists.postgresql.org
Date: 2025-01-04T19:35:47Z
Lists: pgsql-hackers
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Allow extension functions to participate in in-place updates.
- c366d2bdba7c 18.0 landed
-
Implement new optimization rule for updates of expanded variables.
- 6c7251db0ce1 18.0 landed
-
Detect whether plpgsql assignment targets are "local" variables.
- 36fb9ef269a0 18.0 landed
-
Preliminary refactoring of plpgsql expression construction.
- a654af21ae52 18.0 landed
-
Refactor pl_funcs.c to provide a usage-independent tree walker.
- 6a7283dd2f1c 18.0 landed
-
Generalize plpgsql's heuristic for importing expanded objects.
- 534d0ea6c2b9 18.0 landed
Michel Pelletier <pelletier.michel@gmail.com> writes: > I've circled back on this task to do some work improving the skeleton code, > but going back through our thread I landed on this point Tom made about > usefulness vs pure skeleton and my natural desire is to make a simple > expanded object that is also useful, so I brainstormed a bit and decided to > try something relatively simple but also (IMO) quite useful, an expanded > datum that wraps sqlite's serialize/derserialize API: > https://github.com/michelp/postgres-sqlite I think the odds that we'd accept a module with a dependency on sqlite are negligible. It's too big of a build dependency for too little return. Also, I'm sure that a module defined like that would be a pretty poor example/starting point for other expanded-object applications: there'd be too many aspects that have only to do with interfacing to sqlite, making it hard to see the expanded-object forest for the sqlite trees. I have to admit though that the forest-v-trees aspect makes it fairly hard to think of any suitable example module that would serve much real-world purpose. Likely scenarios for expanded objects just have a lot of functionality in them. For instance, I thought for a moment of suggesting that teaching contrib/hstore to work with expanded representations of hstores could be useful. But I'd forgotten how much functionality that type has. It'd be a big project and would still have a lot of baggage. regards, tom lane