From: | "Tsunakawa, Takayuki" <tsunakawa(dot)takay(at)jp(dot)fujitsu(dot)com> |
---|---|
To: | "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | [bug fix??] Fishy code in tts_cirtual_copyslot() |
Date: | 2019-09-13 00:21:15 |
Message-ID: | 0A3221C70F24FB45833433255569204D1FD34C0E@G01JPEXMBYT05 |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hello,
In the following code in execTuples.c, shouldn' srcdesc point to the source slot's tuple descriptor? The attached fix passes make check. What kind of failure could this cause?
BTW, I thought that in PostgreSQL coding convention, local variables should be defined at the top of blocks, but this function writes "for (int natts;". I didn't modify it because many other source files also write in that way.
--------------------------------------------------
static void
tts_virtual_copyslot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
{
TupleDesc srcdesc = dstslot->tts_tupleDescriptor;
Assert(srcdesc->natts <= dstslot->tts_tupleDescriptor->natts);
tts_virtual_clear(dstslot);
slot_getallattrs(srcslot);
for (int natt = 0; natt < srcdesc->natts; natt++)
{
dstslot->tts_values[natt] = srcslot->tts_values[natt];
dstslot->tts_isnull[natt] = srcslot->tts_isnull[natt];
}
--------------------------------------------------
Regards
Takayuki Tsunakawa
Attachment | Content-Type | Size |
---|---|---|
virtslot_tiny_fix.patch | application/octet-stream | 520 bytes |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Geoghegan | 2019-09-13 01:04:25 | Re: [HACKERS] [WIP] Effective storage of duplicates in B-tree index. |
Previous Message | Tom Lane | 2019-09-12 21:19:29 | Re: Leakproofness of texteq()/textne() |