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;
**

It may harm when there are a lot of tables are replicated.
So I try to fix this.

Best regards,
houzj






Attachment: 0001-remove-unneeded-pstrdup.patch
Description: 0001-remove-unneeded-pstrdup.patch

Reply via email to