| From: | Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com> |
|---|---|
| To: | Japin Li <japinli(at)hotmail(dot)com> |
| Cc: | Rafia Sabih <rafia(dot)pghackers(at)gmail(dot)com>, Álvaro Herrera <alvherre(at)kurilemu(dot)de>, Euler Taveira <euler(at)eulerto(dot)com>, Amul Sul <sulamul(at)gmail(dot)com>, Andrew Dunstan <andrew(at)dunslane(dot)net>, Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com>, Quan Zongliang <quanzongliang(at)yeah(dot)net>, pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: [PATCH] Add pg_get_database_ddl() function to reconstruct CREATE DATABASE statement |
| Date: | 2026-03-09 12:08:01 |
| Message-ID: | CANxoLDf+Ak=S+V1Rx25Eqh7r6cuWZtHYiEo_AZsn9eqiWbVGEg@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
I have resolved the review comments. Removed the hardcoded 'utf-8'
encoding, the logic now retrieves the encoding dynamically. This ensures
accuracy because the default encoding for CREATE DATABASE is derived from
the template database (template1) rather than being a static value.
Attached is the *v13 patch*, now ready for further review.
On Fri, Mar 6, 2026 at 8:13 PM Japin Li <japinli(at)hotmail(dot)com> wrote:
>
> Hi, Akshay
>
> On Fri, 06 Mar 2026 at 17:21, Akshay Joshi <akshay(dot)joshi(at)enterprisedb(dot)com>
> wrote:
> > I have updated the documentation.
> > Attached is the v12 patch, now ready for further review.
> >
>
> Thanks for updating the patch.
>
> I might not have expressed myself clearly in my last email — apologies.
> Here's a diff that should make it clearer.
>
> diff --git a/src/backend/utils/adt/ruleutils.c
> b/src/backend/utils/adt/ruleutils.c
> index bbf82c1d6c0..1ed56ee71ab 100644
> --- a/src/backend/utils/adt/ruleutils.c
> +++ b/src/backend/utils/adt/ruleutils.c
> @@ -13859,7 +13859,6 @@ parse_ddl_options(FunctionCallInfo fcinfo, int
> variadic_start)
> bool *nulls;
> Oid *types;
> int nargs;
> - bool found = false;
>
> /* Extract variadic arguments */
> nargs = extract_variadic_args(fcinfo, variadic_start, true,
> @@ -13887,8 +13886,7 @@ parse_ddl_options(FunctionCallInfo fcinfo, int
> variadic_start)
> {
> char *name;
> bool bval;
> -
> - found = false;
> + bool found = false;
>
> /* Key must not be null */
> if (nulls[i])
> @@ -13925,8 +13923,8 @@ parse_ddl_options(FunctionCallInfo fcinfo, int
> variadic_start)
> if (!parse_bool(valstr, &bval))
> ereport(ERROR,
>
> (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> - errmsg("argument %d:
> invalid value \"%s\" for key \"%s\"",
> - i + 2,
> valstr, name),
> + errmsg("value for option
> \"%s\" at position %d has invalid value \"%s\"",
> + name, i +
> 2, valstr),
> errhint("Valid values
> are: true, false, yes, no, 1, 0, on, off.")));
> pfree(valstr);
> }
> @@ -13934,8 +13932,8 @@ parse_ddl_options(FunctionCallInfo fcinfo, int
> variadic_start)
> {
> ereport(ERROR,
>
> (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
> - errmsg("argument %d: value for
> key \"%s\" must be boolean or text type",
> - i + 2, name)));
> + errmsg("value for option \"%s\"
> at position %d has type %s, expected type boolean or text",
> + name, i + 2,
> format_type_be(types[i + 1]))));
> }
>
> /*
> @@ -13983,7 +13981,7 @@ parse_ddl_options(FunctionCallInfo fcinfo, int
> variadic_start)
> /*
> * pg_get_database_ddl
> *
> - * Generate a CREATE DATABASE statement for the specified database name
> or oid.
> + * Generate a CREATE DATABASE statement for the specified database oid.
> *
> * db_oid - OID of the database for which to generate the DDL.
> * options - Variadic name/value pairs to modify the output.
>
> --
> Regards,
> Japin Li
> ChengDu WenWu Information Technology Co., Ltd.
>
| Attachment | Content-Type | Size |
|---|---|---|
| v13-0001-Add-pg_get_database_ddl-function-to-reconstruct-ddl.patch | application/octet-stream | 34.3 KB |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | wenhui qiu | 2026-03-09 12:08:54 | Re: enhance wraparound warnings |
| Previous Message | Etsuro Fujita | 2026-03-09 11:41:04 | Re: Options to control remote transactions’ access/deferrable modes in postgres_fdw |