Hey hackers -
I'm having a bit of trouble with creating a new bootstrap system
table. That is, one that is created during initdb via 'create bootstrap'
in the PKI file.
I realize that for this sort of system table, I need to add tuples via
bootstrap DATA statements to pg_class.h, pg_attribute.h, and pg_type.h.
Everything seems to work: I get the right output from initdb -d, based
on analogy with all the other bootstrap tables, but the file never gets
created, as if initial data for my new table never gets commited. If I
add a bootstrap index on it (by hand editting the template1.bki file),
I get the file, but it's empty. Everything seems to be set up right,
though: I can insert data into the table once it's there.
I've tried defining the structures and hand building a reldesc, in
relcache.c, like the other bootstrap system tables, but that had no
effect. One difference between my new table and the other system tables,
perhaps, is that there is no code using the table: perhaps something
with how mdopen will substitute for mdcreate, and create files while
under bootstrapmode?
So, is there extra trick I'm missing to getting the final commit done
for an initdb bootstrap relation? If this somewhat abstract description
of my problem doesn't ring a bell for anyone, I'll go ahead and generate
a patch and ask for comment on it later. (I wanted to leave out details
because I don't really want to discuss implementation of the specific
feature until I've tried a reference implementation, myself)
Ross