| From: | Teodor Sigaev <teodor(at)sigaev(dot)ru> |
|---|---|
| To: | Pgsql Hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Suspicious place in heap_prepare_freeze_tuple() |
| Date: | 2017-07-05 16:29:52 |
| Message-ID: | 1a53572f-a489-7cd7-f5bf-4db05102f141@sigaev.ru |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi!
Playing around freezing tuple I found suspicious piece of code:
heap_prepare_freeze_tuple():
...
frz->t_infomask = tuple->t_infomask;
...
frz->t_infomask &= ~HEAP_XMAX_BITS;
frz->xmax = newxmax;
if (flags & FRM_MARK_COMMITTED)
frz->t_infomask &= HEAP_XMAX_COMMITTED;
Seems, in last line it should be a bitwise OR instead of AND. Now this line
cleans all bits in t_infomask which later will be copied directly in tuple.
--
Teodor Sigaev E-mail: teodor(at)sigaev(dot)ru
WWW: http://www.sigaev.ru/
| Attachment | Content-Type | Size |
|---|---|---|
| heap_prepare_freeze_tuple.diff | text/x-patch | 536 bytes |
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Alvaro Herrera | 2017-07-05 16:36:21 | Re: Suspicious place in heap_prepare_freeze_tuple() |
| Previous Message | Dang Minh Huong | 2017-07-05 15:45:17 | Re: Extra Vietnamese unaccent rules |