Thread

  1. Use stack-allocated StringInfoData

    Mats Kindahl <mats.kindahl@gmail.com> — 2025-11-03T07:27:12Z

    Hi all,
    
    While working on other things I noted that we have a lot of cases where 
    a StringInfo instance is allocated dynamically even when it is either 
    thrown away or destroyed at the end, which seems unnecessary, that is, 
    instead of using:
    
            StringInfo info = makeStringInfo();
            ...
            appendStringInfo(info, ...);
            ...
            return info->data;
    
    We can use
    
            StringInfoData info;
            initStringInfo(&info);
            ...
            appendStringInfo(&info, ...);
            ...
            return info.data;
    
    It was corrected in an earlier commit, but that seems to have been 
    removed so we still have a lot of these cases.
    
    I created a semantic patch to capture most of these cases, which is 
    present in [1], but this is a slightly modified version that might be 
    interesting to include regardless of other changes. The patch is applied 
    and one case that couldn't be matched is manually fixed.
    
    [1]: 
    https://www.postgresql.org/message-id/8895cba9-48cf-40fe-9c47-9b43ec6b2ab3%40gmail.com
    
    Best wishes,
    Mats Kindahl