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 <[email protected]> wrote:

>
> Hi, Akshay
>
> On Fri, 06 Mar 2026 at 17:21, Akshay Joshi <[email protected]>
> 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: v13-0001-Add-pg_get_database_ddl-function-to-reconstruct-ddl.patch
Description: Binary data

Reply via email to