It would be helpful if variable length catalog fields (except the first one) would not be visible on the C level in the Form_pg_* structs. We keep them listed in the include/catalog/pg_*.h files so that the BKI generating code can see them and for general documentation, but the fields are meaningless in C, and some catalog files contain free-form comments advising the reader of that. If we could hide them somehow, we would avoid random programming bugs, deconfuse compilers trying to generate useful warnings, and save occasional stack space. There are several known cases of the first and second issue, at least.
I haven't found the ideal way to implement that yet, but the general idea would be something like: CATALOG(pg_attribute,1249) BKI_BOOTSTRAP ... { ... int4 attinhcount; Oid attcollation; aclitem attacl[1]; CATVARLEN( text attoptions[1]; text attfdwoptions[1]; ) } FormData_pg_attribute; where CATVARLEN is defined empty in C, and ignored in the BKI generation code. The real trick is to find something that handles well with pgindent and indenting text editors. Ideas? -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers