Hello, I was looking at the documentation for TOAST ( http://www.postgresql.org/docs/devel/static/storage-toast.html) and it's specified that the toast pointer occupies 18 bytes. However, the struct representing the toast pointer is defined as follows
typedef struct varatt_external { int32 va_rawsize; /* Original data size (includes header) */ int32 va_extsize; /* External saved size (doesn't) */ Oid va_valueid; /* Unique ID of value within TOAST table */ Oid va_toastrelid; /* RelID of TOAST table containing it */ } varatt_external; Assuming that the pointer is aligned to a 4 byte boundary, doesn't it sum up to 16 bytes? Could someone please explain why the documentation specifies it as 18 bytes? I am pretty new to the source code and the C language in general so I apologize if this question has an obvious answer. Thanks, Vignesh.