Prev: Add on_plperl_init and on_plperlu_init to plperl UPDATE 3 [PATCH]
Next: Backup history file should be replicated inStreaming Replication?
From: Tom Lane on 6 Feb 2010 01:20 "Jonathan Bond-Caron" <jbondc(a)gmail.com> writes: > I think part of my problem is I haven't really understood what 'Then make > sure you have the right alignment' means. > My approach currently is: > After reading HeapTupleHeaderData (23 bytes), I advance another 4 bytes > (hoff) and try to read a 32 bit integer (first attribute). No. First you start at the tuple beginning plus the number of bytes indicated by hoff (which should be at least 24). The first field will always be right there, because this position is always maximally aligned. For subsequent fields you have to advance to a multiple of the alignment requirement of the datatype. For example, assume the table's first column is of type bool (1 byte) and the second column is of type integer. The bool will be at offset hoff, but the integer will be at offset hoff + 4 ... it can't immediately follow the bool, at offset hoff + 1, because that position isn't correctly aligned. It has to start at the next offset that's a multiple of 4. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
From: "Jonathan Bond-Caron" on 7 Feb 2010 09:21
On Sat Feb 6 01:20 AM, Tom Lane wrote: > "Jonathan Bond-Caron" <jbondc(a)gmail.com> writes: > > I think part of my problem is I haven't really understood what 'Then > > make sure you have the right alignment' means. > > > My approach currently is: > > > After reading HeapTupleHeaderData (23 bytes), I advance another 4 > > bytes > > (hoff) and try to read a 32 bit integer (first attribute). > > No. First you start at the tuple beginning plus the number of bytes > indicated by hoff (which should be at least 24). Thanks, much appreciated! I was reading HeapTupleHeaderData as 23 bytes but it's 27 bytes in access/htup.h?rev=1.87. The hoff now makes sense with a 28 bytes value and I can start to read the user data. -- Sent via pgsql-hackers mailing list (pgsql-hackers(a)postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers |