Re: Retail DDL
От | Andrew Dunstan |
---|---|
Тема | Re: Retail DDL |
Дата | |
Msg-id | c8c2f834-5d0f-431b-90f7-3600af154c23@dunslane.net обсуждение исходный текст |
Ответ на | Re: Retail DDL (Ziga <ziga@ljudmila.org>) |
Ответы |
Re: Retail DDL
|
Список | pgsql-hackers |
On 2025-08-13 We 10:29 PM, Ziga wrote: > Hi Andrew, > > On 24/07/2025 22:26, Andrew Dunstan wrote: >> Some years ago I gave a talk about $subject, but somehow it dropped >> off my radar. Now I'm looking at it again. The idea is to have a >> function (or set of functions) that would allow the user to get the >> DDL for any database object. Obviously we already have some functions >> for things like views and triggers, but most notably we don't have >> one for tables, something users have long complained about. I have >> been trying to think of a reasonable interface for a single function, >> where we would pass in, say, a catalog oid plus an object oid, and >> maybe some optional extra arguments. That seems a bit fragile, >> though. The alternative is that we have a separate function for each >> object type, e.g. pg_get_{objecttype}_ddl. I'm kinda leaning that >> way, but I'd like some sort of consensus before any work gets done. > > $subject has been appearing on the lists every now and then, without > much great success so far. > > I have endeavored to implement such a thing as ddlx postgres > extension, https://github.com/lacanoid/pgddl > > The endeavor is somewhat far gone now already. Apparently the > extension is used by some people. It probably has some interesting > features. It needs wider and more testing. I use it a lot. It tries to > address some of the issues on $subject expressed on the lists. > > It is implemented as plain SQL functions. There are currently 89 > functions with obvious names, one for each postgres object type, as > well as functions to assemble smaller pieces together and such. I > think it implements a rather nice SQL API, also handling some of the > things discussed here. > > Of particular note is using oids only (no classid) to specify objects. > I used believe that oid are unique across a postgres database for > catalog objects, but since postgres 14 this no longer the case, see: > https://github.com/lacanoid/pgddl/issues/25 . I don't know if this is > intentional or not. In practice, it does not hinder usage. Interesting. I think there are good reasons to have this as builtin functions, though, not least that it would allow us to base some psql meta-commands on it, or possibly an SQL command (DESCRIBE ?). Builtin functions are also likely to be faster. cheers andrew -- Andrew Dunstan EDB: https://www.enterprisedb.com
В списке pgsql-hackers по дате отправления: