On 22/04/17 21:16, Andres Freund wrote:
> Hi,
> 
> On 2017-04-22 21:08:18 +0200, Petr Jelinek wrote:
>> Thanks, here is patch to fix that - I also removed the individual
>> settings of everything to NULL/0/InvalidOid etc and just replaced it all
>> with memset.
> 
> Cool.
> 
>> diff --git a/src/backend/replication/logical/relation.c 
>> b/src/backend/replication/logical/relation.c
>> index 875a081..5bc54dd 100644
>> --- a/src/backend/replication/logical/relation.c
>> +++ b/src/backend/replication/logical/relation.c
>> @@ -141,19 +141,10 @@ logicalrep_relmap_free_entry(LogicalRepRelMapEntry 
>> *entry)
>>              pfree(remoterel->attnames);
>>              pfree(remoterel->atttyps);
>>      }
>> -    remoterel->attnames = NULL;
>> -    remoterel->atttyps = NULL;
>> -
>>      bms_free(remoterel->attkeys);
>> -    remoterel->attkeys = NULL;
>>  
>>      if (entry->attrmap)
>>              pfree(entry->attrmap);
>> -
> 
> Btw, I think it's a good pattern to zero things like attrmap after
> freeing.  Based on a minute of looking it's unclear to me if
> logicalrep_relmap_update() could be called again, if e.g. one of the
> pallocs after the logicalrep_relmap_free_entry() errors out.  I think
> you essentially addressed that with the memset, so that's good.
> 

Yes, memset is called immediately after logicalrep_relmap_free_entry()
which is why I found it redundant to set things to NULL there. We could
put the memset directly inside logicalrep_relmap_free_entry() and the
call either logicalrep_relmap_free_entry() or memset in the caller if
that would make you feel better about it.

-- 
  Petr Jelinek                  http://www.2ndQuadrant.com/
  PostgreSQL Development, 24x7 Support, Training & Services


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to