Re: pg_get__*_ddl consolidation
David G. Johnston <david.g.johnston@gmail.com>
From: "David G. Johnston" <david.g.johnston@gmail.com>
To: Japin Li <japinli@hotmail.com>
Cc: Andrew Dunstan <andrew@dunslane.net>, Zsolt Parragi <zsolt.parragi@percona.com>, Euler Taveira <euler@eulerto.com>, Álvaro Herrera <alvherre@kurilemu.de>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-04-02T13:35:59Z
Lists: pgsql-hackers
On Thursday, April 2, 2026, Japin Li <japinli@hotmail.com> wrote:
>
> v3-0004
> ========
>
> 1.
> + append_ddl_option(&buf, pretty, 4, "WITH TEMPLATE = template0");
>
> I'm curious why WITH TEMPLATE = template0 is hardcoded. For example:
>
> [local]:1374846 postgres=# create database db01 IS_TEMPLATE true;
> CREATE DATABASE
> [local]:1374846 postgres=# create database db02 template db01;
> CREATE DATABASE
> [local]:1374846 postgres=# select pg_get_database_ddl('db02');
> pg_get_database_ddl
> ------------------------------------------------------------
> -----------------------------------------------------
> CREATE DATABASE db02 WITH TEMPLATE = template0 ENCODING = 'UTF8'
> LOCALE_PROVIDER = libc LOCALE = 'en_US.UTF-8';
> ALTER DATABASE db02 OWNER TO japin;
> (2 rows)
>
> Is this working as expected?
>
> It seems there's no way to reconstruct the WITH TEMPLATE clause, right?
> A comment here would help.
There is no way or use in constructing the original template clause, though
I agree it’s worth a comment. At the end of the day the catalog data that
was found in the db01 database already exists in the db02 database when
executing these DLL reconstruction functions against the existing db02
database. Taking nothing from the template is the correct behavior - hence
template0.
David J.
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Use named boolean parameters for pg_get_*_ddl option arguments
- d6ed87d19890 19 (unreleased) landed
-
Convert ddlutils regression tests to TAP tests.
- c529ee38b9eb 19 (unreleased) landed
-
Fix pfree crash in pg_get_role_ddl() and pg_get_database_ddl().
- 1f108fc02ece 19 (unreleased) landed
-
Fixups for a4f774cf1c7
- 6c7bce28c83f 19 (unreleased) landed
-
Add infrastructure for pg_get_*_ddl functions
- 4881981f9202 19 (unreleased) landed
-
Add pg_get_database_ddl() function
- a4f774cf1c7e 19 (unreleased) landed
-
Add pg_get_role_ddl() function
- 76e514ebb4b5 19 (unreleased) landed
-
Add pg_get_tablespace_ddl() function
- b99fd9fd7f36 19 (unreleased) landed