On Wed, Jan 13, 2021 at 8:11 AM Hou, Zhijie <houzj.f...@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.