Re: remove unneeded pstrdup in fetch_table_list
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: "Hou, Zhijie" <houzj.fnst@cn.fujitsu.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2021-01-13T06:10:33Z
Lists: 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.
Commits
-
Remove unnecessary pstrdup in fetch_table_list.
- c95765f47673 14.0 landed