Search Postgresql Archives

Re: Enum on-disk format

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tom Lane wrote:
Scott Bailey <artacus@xxxxxxxxxxx> writes:
I'm trying to better understand the internals of Postgres, and I'm looking at the enum type. The docs say that an enum value is stored on disk as 4 bytes. But enum_send() returns a bytea representing the actual text of the value and not the index of that value. So what step am I missing here?

The wire format isn't necessarily the on-disk format.  In this case
we concluded that the internal OID value wouldn't be of any use to
clients.

Also, is there a way to see the raw data for the tuple on a page?

Try contrib/pageinspect, and read
http://developer.postgresql.org/pgdocs/postgres/storage-page-layout.html

			regards, tom lane


Thanks Tom that did the trick. The only I/O functions I'm aware of are send, recv, in and out. What controls converting from/to wire and on-disk formats? And why is wire format little endian and disk big endian?

And for posterity, here's how to get to the raw tuple data.

SELECT substring(page, lp_off + t_hoff + 1, lp_len - t_hoff) AS tuple_data,
  sub.*
FROM (
    SELECT (heap_page_items(page)).*, page
    FROM (
        SELECT get_raw_page('test', 0) page
    ) s
) sub



--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux