Re: remove unneeded pstrdup in fetch_table_list - Mailing list pgsql-hackers

From Amit Kapila
Subject Re: remove unneeded pstrdup in fetch_table_list
Date
Msg-id CAA4eK1LBw7bhBLsXS1ozXW0rhwZqytq74j1riq2jJoVZniFHLg@mail.gmail.com
Whole thread Raw
In response to remove unneeded pstrdup in fetch_table_list  ("Hou, Zhijie" <houzj.fnst@cn.fujitsu.com>)
Responses Re: remove unneeded pstrdup in fetch_table_list  (Daniel Gustafsson <daniel@yesql.se>)
List pgsql-hackers
On Wed, Jan 13, 2021 at 8:11 AM Hou, Zhijie <houzj.fnst@cn.fujitsu.com> wrote:
>
> Hi
>
> In function fetch_table_list, it get the table names from publicer and return a list of tablenames.
> When append the name to the list, it use the following code:
>
> **
>         nspname = TextDatumGetCString(slot_getattr(slot, 1, &isnull));
>         Assert(!isnull);
>         relname = TextDatumGetCString(slot_getattr(slot, 2, &isnull));
>         rv = makeRangeVar(pstrdup(nspname), pstrdup(relname), -1);
>         tablelist = lappend(tablelist, rv);
> **
>
> the nspname and relname will be copied which seems unnecessary.
> Because nspame and relname is get from TextDatumGetCString.
> IMO, TextDatumGetCString returns a newly palloced string.
>
> **
>         result = (char *) palloc(len + 1);
>         memcpy(result, VARDATA_ANY(tunpacked), len);
>         result[len] = '\0';
>
>         if (tunpacked != t)
>                 pfree(tunpacked);
>
>         return result;
> **
>

Your observation seems correct to me, though I have not tried to test
your patch.

-- 
With Regards,
Amit Kapila.



pgsql-hackers by date:

Previous
From: "tsunakawa.takay@fujitsu.com"
Date:
Subject: RE: Disable WAL logging to speed up data loading
Next
From: Peter Smith
Date:
Subject: Re: Single transaction in the tablesync worker?