Re: Small memory fixes for pg_createsubcriber

Ranier Vilela <ranier.vf@gmail.com>

From: Ranier Vilela <ranier.vf@gmail.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Andres Freund <andres@anarazel.de>, Euler Taveira <euler@eulerto.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2025-02-25T11:54:31Z
Lists: pgsql-hackers

Attachments

Em ter., 25 de fev. de 2025 às 03:02, Michael Paquier <michael@paquier.xyz>
escreveu:

> On Thu, Feb 13, 2025 at 01:50:29PM +0900, Michael Paquier wrote:
> > On Wed, Feb 12, 2025 at 07:08:31PM -0500, Tom Lane wrote:
> >> I spent a little time earlier today seeing what I could do with the
> >> use-dmalloc patch I posted earlier.  It turns out you can get through
> >> initdb after s/free/PQfreemem/ in just two places, and then the
> >> backend works fine.  But psql is a frickin' disaster --- there's
> >> free's of strings made with PQExpBuffer all over its backslash-command
> >> handling, and no easy way to clean it up.  Maybe other clients will
> >> be less of a mess, but I'm not betting on that.
> >
> > Hmm.  Okay.  It sounds like it would be better to group everything
> > that has been pointed together towards what should be a more generic
> > solution than what I have posted.  So I am holding on touching
> > anything.
>
> Two weeks later.  Would there be any objections for doing something in
> the lines of [1] for pg_upgrade and pg_amcheck?

I prefer not to mix api.

We already have a branch for decision.
Let's use it then.

diff --git a/src/bin/pg_upgrade/pg_upgrade.c
b/src/bin/pg_upgrade/pg_upgrade.c
index d95c491fb5..b2c8e8e420 100644
--- a/src/bin/pg_upgrade/pg_upgrade.c
+++ b/src/bin/pg_upgrade/pg_upgrade.c
@@ -455,7 +455,9 @@ set_locale_and_encoding(void)
  locale->db_locale,
  strlen(locale->db_locale));
  else
- datlocale_literal = pg_strdup("NULL");
+ datlocale_literal = PQescapeLiteral(conn_new_template1,
+ "NULL",
+ strlen("NULL"));

best regards,
Ranier Vilela

Commits

  1. pg_upgrade: Fix inconsistency in memory freeing

  2. pg_amcheck: Fix inconsistency in memory freeing

  3. Fix some inconsistencies with memory freeing in pg_createsubscriber

  4. Drop pre-existing subscriptions from the converted subscriber.