Re: Something's been bugging me
От | Tom Lane |
---|---|
Тема | Re: Something's been bugging me |
Дата | |
Msg-id | 6388.1191087661@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Something's been bugging me (Gregory Stark <stark@enterprisedb.com>) |
Ответы |
Re: Something's been bugging me
|
Список | pgsql-hackers |
Gregory Stark <stark@enterprisedb.com> writes: > "Tom Lane" <tgl@sss.pgh.pa.us> writes: >> The idea that I recall mentioning was to expend another byte in TOAST >> pointers to make them self-identifying, ie, instead of 0x80 or 0x01 >> signaling something that *must* be a 17-byte toast pointer, that bit >> pattern signals "something else" and the content of the next byte >> lets you know what. So TOAST pointers would take 18 bytes instead of >> 17, and there would be room for additions of other sorts of pointers. > Here's a patch that does all of the above. I'd be inclined to make the second byte be the length and have VARSIZE_1B_E depend on that --- any objection? > 2) the test in tuptoaster.c could be > if (toast_isnull[i] || > !VARATT_IS_EXTERNAL(new_value) || > VARSIZE_EXTERNAL(old_value) != VARSIZE_EXTERNAL(new_value) || > memcmp(VARDATA_SHORT(old_value), > VARDATA_SHORT(new_value), > VARSIZE_EXTERNAL(old_value)) != 0) Yeah, I'd go with this just to avoid having hardwired knowledge of the datum size here. regards, tom lane
В списке pgsql-hackers по дате отправления: