Remove useless pstrdups in untransformRelOptions
authorAlvaro Herrera <[email protected]>
Tue, 13 Sep 2022 09:59:31 +0000 (11:59 +0200)
committerAlvaro Herrera <[email protected]>
Tue, 13 Sep 2022 09:59:31 +0000 (11:59 +0200)
The two strings are already a single palloc'd chunk, not freed; there's
no reason to allocate separate copies that have the same lifetime.

This code is only called in short-lived memory contexts (except in some
cases in TopTransactionContext, which is still short-lived enough not to
really matter), and typically only for short arrays, so the memory or
computation saved is likely negligible.  However, let's fix it to avoid
leaving a bad example of code to copy.  This is the only place I could
find where we're doing this with makeDefElem().

Reported-by: Junwang Zhao <[email protected]>
Discussion: https://postgr.es/m/20220909142050[email protected]

src/backend/access/common/reloptions.c

index 609329bb212b8687c197778e846c3c8b4f7a37ee..0aa4b334ab0557d6a9f68710122c0b5d6a03dbdb 100644 (file)
@@ -1357,9 +1357,9 @@ untransformRelOptions(Datum options)
        if (p)
        {
            *p++ = '\0';
-           val = (Node *) makeString(pstrdup(p));
+           val = (Node *) makeString(p);
        }
-       result = lappend(result, makeDefElem(pstrdup(s), val, -1));
+       result = lappend(result, makeDefElem(s, val, -1));
    }
 
    return result;