On Mon, Dec 5, 2011 at 3:12 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: > Robert Haas <robertmh...@gmail.com> writes: >> On Mon, Dec 5, 2011 at 2:47 PM, Tom Lane <t...@sss.pgh.pa.us> wrote: >>> Peter Eisentraut <pete...@gmx.net> writes: >>>> To clarify, I believe the rule is that the first variable-length field >>>> can be accessed as a struct field. Are there any exceptions to this? > >>> If it is known not null, yes, but I wonder just how many places actually >>> depend on that. > >> My impression is that all the varlena fields also allow nulls. > > See MARKNOTNULL in bootstrap.c. I think the exceptions were designed to > protect direct accesses to pg_index.
Hmm, OK. rhaas=# select r.relname, a.attname, a.atttypid::regtype from pg_class r, pg_attribute a where relnamespace=11 and relkind='r' and attrelid = r.oid and a.attnotnull and a.attlen<0; relname | attname | atttypid ------------+--------------+------------ pg_proc | proargtypes | oidvector pg_index | indkey | int2vector pg_index | indcollation | oidvector pg_index | indclass | oidvector pg_index | indoption | int2vector pg_trigger | tgattr | int2vector (6 rows) -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers