Re: [PATCH] Add pg_get_database_ddl() function to reconstruct CREATE DATABASE statement - Mailing list pgsql-hackers
| From | Akshay Joshi |
|---|---|
| Subject | Re: [PATCH] Add pg_get_database_ddl() function to reconstruct CREATE DATABASE statement |
| Date | |
| Msg-id | CANxoLDeP1_mxdEUVwW3o=tjoWwpOVUs0mMh-mdV23hT5FTSqpg@mail.gmail.com Whole thread |
| In response to | Re: [PATCH] Add pg_get_database_ddl() function to reconstruct CREATE DATABASE statement (Kirill Reshke <reshkekirill@gmail.com>) |
| Responses |
Re: [PATCH] Add pg_get_database_ddl() function to reconstruct CREATE DATABASE statement
|
| List | pgsql-hackers |
Thanks for the review. I wasn't aware of this change, as I'm still new to PostgreSQL development.
Attached is the v14 patch, now ready for further review.
Attached is the v14 patch, now ready for further review.
On Tue, Mar 10, 2026 at 3:46 PM Kirill Reshke <reshkekirill@gmail.com> wrote:
On Mon, 9 Mar 2026 at 17:08, Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
>
> 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@hotmail.com> wrote:
>>
>>
>> Hi, Akshay
>>
>> On Fri, 06 Mar 2026 at 17:21, Akshay Joshi <akshay.joshi@enterprisedb.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.
Hi!
I noticed this in v13: DDLOptionDef is missing from typedefs.list.
This results in pgident to incorrectly format sources.
--
Best regards,
Kirill Reshke
Attachment
pgsql-hackers by date: