Hi Amit,

In commit e7eea52b2d, you introduced a new function, 
RelationGetIdentityKeyBitmap(), which uses some odd logic for determining if a 
relation has a replica identity index.  That code segfaults under certain 
conditions.  A test case to demonstrate that is attached.  Prior to patching 
the code, this new test gets stuck waiting for replication to finish, which 
never happens.  You have to break out of the test and check 
tmp_check/log/021_no_replica_identity_publisher.log.

I believe this bit of logic in src/backend/utils/cache/relcache.c:

      indexDesc = RelationIdGetRelation(relation->rd_replidindex);
      for (i = 0; i < indexDesc->rd_index->indnatts; i++)

is unsafe without further checks, also attached.

Would you mind taking a look?
  

Attachment: v1-0001-Fixing-bug-in-logical-replication.patch
Description: Binary data


—
Mark Dilger
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



Reply via email to