Thread

Commits

  1. pg_dump: Use pg_malloc_object() and pg_malloc_array()

  1. use the malloc macros in pg_dump.c

    Peter Smith <smithpb2250@gmail.com> — 2026-02-02T07:04:01Z

    Hi.
    
    I found that pg_dump.c has many pg_mallocs where the new object/array
    macros could have been used, but currently they are not. I'm not sure
    if this was a deliberate or accidental omission.
    
    In case it was accidental, here is a patch to modify/simplify all that
    allocation code.
    
    PSA v1.
    
    ======
    Kind Regards,
    Peter Smith.
    Fujitsu Australia
    
  2. Re: use the malloc macros in pg_dump.c

    Aleksander Alekseev <aleksander@tigerdata.com> — 2026-02-02T12:38:04Z

    Hi Peter,
    
    > I found that pg_dump.c has many pg_mallocs where the new object/array
    > macros could have been used, but currently they are not. I'm not sure
    > if this was a deliberate or accidental omission.
    >
    > In case it was accidental, here is a patch to modify/simplify all that
    > allocation code.
    
    Thanks for the patch. I reviewed / tested it and it looks OK. This
    being said, I see many pieces of code left that still use pg_malloc /
    pg_realloc in a similar fashion, including src/bin/pg_dump/* files.
    Would you like to address those as well, or keep the scope only to
    pg_dump.c?
    
    -- 
    Best regards,
    Aleksander Alekseev
    
    
    
    
  3. Re: use the malloc macros in pg_dump.c

    Peter Smith <smithpb2250@gmail.com> — 2026-02-02T21:19:47Z

    On Mon, Feb 2, 2026 at 11:38 PM Aleksander Alekseev
    <aleksander@tigerdata.com> wrote:
    >
    > Hi Peter,
    >
    > > I found that pg_dump.c has many pg_mallocs where the new object/array
    > > macros could have been used, but currently they are not. I'm not sure
    > > if this was a deliberate or accidental omission.
    > >
    > > In case it was accidental, here is a patch to modify/simplify all that
    > > allocation code.
    >
    > Thanks for the patch. I reviewed / tested it and it looks OK. This
    > being said, I see many pieces of code left that still use pg_malloc /
    > pg_realloc in a similar fashion, including src/bin/pg_dump/* files.
    > Would you like to address those as well, or keep the scope only to
    > pg_dump.c?
    >
    
    Hi Aleksander.
    
    Thanks for your review!
    
    At first I only changed only one file because I was unsure why these
    changes were not already made, and whether others thought it was
    worthwhile.
    
    Now you have encouraged me that the patch makes sense, so I will
    increase the scope to cover all the other pg_dump/* files. Will post
    more later.
    
    ======
    Kind Regards,
    Peter Smith.
    Fujitsu Australia
    
    
    
    
  4. Re: use the malloc macros in pg_dump.c

    Peter Smith <smithpb2250@gmail.com> — 2026-02-03T02:29:12Z

    PSA v2 with more of the same kind of malloc changes.
    
    Scope: This addresses all those I could find in the src/bin/pg_dump/* folder.
    
    Note, there were a few examples of simple char * buffer mallocs I that
    did not change, because it did not seem useful to do so.
    
    ======
    Kind Regards,
    Peter Smith.
    Fujitsu Australia
    
  5. Re: use the malloc macros in pg_dump.c

    Peter Smith <smithpb2250@gmail.com> — 2026-02-13T07:06:26Z

    Hi.
    
    PSA v3. A rebase was needed.
    
    At the same time, I combined all previous patches.
    
    ======
    Kind Regards,
    Peter Smith.
    Fujitsu Australia
    
  6. Re: use the malloc macros in pg_dump.c

    Michael Paquier <michael@paquier.xyz> — 2026-02-13T08:22:38Z

    On Fri, Feb 13, 2026 at 06:06:26PM +1100, Peter Smith wrote:
    > At the same time, I combined all previous patches.
    
    That's a practice better than sending a handful bag of patches that
    each touch one single file.  :)
    
    Seems globally clean to me, except for two changes.
    
    -   zp = gzipcs->zp = (z_streamp) pg_malloc(sizeof(z_stream));
    +   zp = gzipcs->zp = (z_streamp) pg_malloc_object(z_stream);
    [...]
    -   zp = (z_streamp) pg_malloc(sizeof(z_stream));
    +   zp = (z_streamp) pg_malloc_object(z_stream);
    
    These two defeat the purpose of the change.  _object is useful because
    we can enforce type checks based on their size.  Note that We have
    this declaration in zlib:
    zlib.h:typedef z_stream FAR *z_streamp;
    
    So we should be OK with dropping the casts entirely, with I guess
    compilers not warning if types do not match as an effect of this
    typedef declaration.  I have removed these, and things seem OK here,
    now to say if the buildfarm is entirely OK will be a different thing.
    I'll see about that if/once required.
    --
    Michael
    
  7. Re: use the malloc macros in pg_dump.c

    Peter Smith <smithpb2250@gmail.com> — 2026-02-15T22:21:55Z

    Thanks for pushing!
    
    ======
    Kind Regards,
    Peter Smith.
    Fujitsu Australia