Thread: adding fields to pg_database
Hi, I'm trying to add fields to pg_database in the system catalog. As long as I add fixed-size fields before the VAR LENGTH ones, that's all fine. But adding a VAR LENGTH (text) field initdb fails at: copying template1 to template0. The child process 'postgres' fails with signal 11. Strange enough I suspect the segfault to occure at program termination (?). That is just after the following initdb commands have been executed: ... "REVOKE CREATE,TEMPORARY ON DATABASE template1 FROM public;\n", "REVOKE CREATE,TEMPORARY ON DATABASE template0 FROM public;\n", /** Finally vacuum to clean up dead rows in pg_database*/ "VACUUM FULL pg_database;\n", I've only added the fields in include/catalog/pg_database.h. Do I need to fiddle other places? Regards Markus
On 4/11/06, Markus Schiltknecht <markus@bluegap.ch> wrote: > I've only added the fields in include/catalog/pg_database.h. Do I need > to fiddle other places? Make sure you updated Natts_pg_database, the bootstrap DATA line, and the stuff in src/backend/commands/dbcommands.c. Other than that I don't know what's totally related to pg_database itself as I haven't changed it in a long time. -- Jonah H. Harris, Database Internals Architect EnterpriseDB Corporation 732.331.1324
On Tue, 2006-04-11 at 14:07 -0400, Jonah H. Harris wrote: > Make sure you updated Natts_pg_database, the bootstrap DATA line, and > the stuff in src/backend/commands/dbcommands.c. dbcommands.c was the missing peace, thank you! Markus
On 4/11/06, Markus Schiltknecht <markus@bluegap.ch> wrote: > dbcommands.c was the missing peace, thank you! No problemo :) -- Jonah H. Harris, Database Internals Architect EnterpriseDB Corporation 732.331.1324
"Jonah H. Harris" <jonah.harris@gmail.com> writes: > On 4/11/06, Markus Schiltknecht <markus@bluegap.ch> wrote: >> I've only added the fields in include/catalog/pg_database.h. Do I need >> to fiddle other places? > Make sure you updated Natts_pg_database, the bootstrap DATA line, and > the stuff in src/backend/commands/dbcommands.c. Good ways to answer this sort of question are: 1. Grep for references to some of the existing fields in the same catalog. 2. Look at the CVS diff for previous commits that added fields to the same catalog. regards, tom lane
On 4/11/06, Tom Lane <tgl@sss.pgh.pa.us> wrote: > Good ways to answer this sort of question are: > > 1. Grep for references to some of the existing fields in the same catalog. > > 2. Look at the CVS diff for previous commits that added fields to the > same catalog. True, true. -- Jonah H. Harris, Database Internals Architect EnterpriseDB Corporation 732.331.1324