On Sat, 19 Jun 2021 at 17:18, Amit Kapila <amit.kapila16@gmail.com> wrote:
> On Fri, Jun 18, 2021 at 9:18 AM Amit Kapila <amit.kapila16@gmail.com> wrote:
>>
>> > I thought it was cheap enough to check that the relation we open is an index, because if it is not, we'll segfault
whenaccessing fields of the relation->rd_index struct. I wouldn't necessarily advocate doing any really expensive
checkshere, but a quick sanity check seemed worth the effort.
>> >
>>
>> I am not telling you anything about the cost of these sanity checks. I
>> suggest you raise elog rather than return NULL because if this happens
>> there is definitely some problem and continuing won't be a good idea.
>>
>
> Pushed, after making the above change. Additionally, I have moved the
> test case to the existing file 001_rep_changes instead of creating a
> new one as the test seems to fit there and I was not sure if the test
> for just this case deserves a new file.
Hi, Amit
Sorry for the late repay.
When we find that the relation has no replica identity index, I think we should
free the memory of the indexoidlist. Since we free the memory owned by
indexoidlist at end of RelationGetIdentityKeyBitmap().
if (!OidIsValid(relation->rd_replidindex))
{
list_free(indexoidlist);
return NULL;
}
Or we can free the memory owned by indexoidlist after check whether it is NIL,
because we do not use it in the later.
If we do not free the memory, there might be a memory leak when
relation->rd_replidindex is invalid. Am I right?
--
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.