Re: pg_get__*_ddl consolidation - Mailing list pgsql-hackers

From David G. Johnston
Subject Re: pg_get__*_ddl consolidation
Date
Msg-id CAKFQuwYcppypeGBwa7ZbDAfoUXSv+kLhJuAXsdwBmKrvy8wDFw@mail.gmail.com
Whole thread Raw
In response to Re: pg_get__*_ddl consolidation  (Japin Li <japinli@hotmail.com>)
Responses Re: pg_get__*_ddl consolidation
List 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.

pgsql-hackers by date:

Previous
From: Andres Freund
Date:
Subject: Re: AIO / read stream heuristics adjustments for index prefetching
Next
From: Jelte Fennema-Nio
Date:
Subject: Re: meson: Make test output much more useful on failure (both in CI and locally)