Re: Retail DDL - Mailing list pgsql-hackers

From Andrew Dunstan
Subject Re: Retail DDL
Date
Msg-id c8c2f834-5d0f-431b-90f7-3600af154c23@dunslane.net
Whole thread Raw
In response to Re: Retail DDL  (Ziga <ziga@ljudmila.org>)
List 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 by date:

Previous
From: Peter Geoghegan
Date:
Subject: Re: index prefetching
Next
From: Corey Huinker
Date:
Subject: Re: Import Statistics in postgres_fdw before resorting to sampling.