Re: The documentation for storage type 'plain' actually allows single byte header
От | Laurenz Albe |
---|---|
Тема | Re: The documentation for storage type 'plain' actually allows single byte header |
Дата | |
Msg-id | d99b3e0beebdde0741d28035aaea7f4af56fa050.camel@cybertec.at обсуждение исходный текст |
Ответ на | The documentation for storage type 'plain' actually allows single byte header (PG Doc comments form <noreply@postgresql.org>) |
Ответы |
Re: The documentation for storage type 'plain' actually allows single byte header
Re: The documentation for storage type 'plain' actually allows single byte header |
Список | pgsql-docs |
On Tue, 2023-01-10 at 15:53 +0000, PG Doc comments form wrote: > https://www.postgresql.org/docs/devel/storage-toast.html - This is the > development version. > > > PLAIN prevents either compression or out-of-line storage; furthermore it > > disables use of single-byte headers for varlena types. This is the only > > possible strategy for columns of non-TOAST-able data types. > > However, it does allow "single byte" headers. How to verify this? > > CREATE EXTENSION pageinspect; > CREATE TABLE test(a VARCHAR(10000) STORAGE PLAIN); > INSERT INTO test VALUES (repeat('A',10)); > > Now peek into the page with pageinspect functions > > SELECT left(encode(t_data, 'hex'), 40) FROM > heap_page_items(get_raw_page('test', 0)); > > This returned value of "1741414141414141414141". > Here the first byte 0x17 = 0001 0111 in binary. > Length + 1 is stored in the length bits (1-7). So Len = 0001011-1 = (11-1) > [base-10] = 10 [base-10] > which exactly matches the expected length. Further the data "41" repeated 10 > times also indicates character A (65 or 0x41 in ASCII) repeated 10 times. > > So....This does **not** disable 1-B header. That sentence should be removed > from the documentation unless this is a bug. I think that the documentation is wrong. The attached patch removes the offending half-sentence. Yours, Laurenz Albe
Вложения
В списке pgsql-docs по дате отправления: