Обсуждение: strange warning sign relating to storage manager

Поиск
Список
Период
Сортировка

strange warning sign relating to storage manager

От
Will Childs-Klein
Дата:
Hello All,
I've been doing some extensive modifications of the storage manager (md.c) in postgres. My code all compiles just fine, but when i run initdb, i receive the following output:

"creating template1 database in /home/accts/wdc22/pgdata/base/1 ... ok
initializing pg_authid ... WARNING:  no roles are defined in this database system
HINT:  You should immediately run CREATE USER "wdc22" SUPERUSER;.
FATAL:  database "template1" does not exist
child process exited with exit code 1"

I've searched around for what this means, but I can't find anything. My guess is that the system creates template1 and writes it to disk, but an issue occurs on reading it back out (or it was written badly, but no error was thrown). Can anyone help give me some insight into what is happening here and why I'm getting these weird errors?


Sincerely,
Will Childs-Klein

Re: strange warning sign relating to storage manager

От
Tom Lane
Дата:
Will Childs-Klein <willck93@gmail.com> writes:
> I've been doing some extensive modifications of the storage manager (md.c)
> in postgres. My code all compiles just fine, but when i run initdb, i
> receive the following output:

> "creating template1 database in /home/accts/wdc22/pgdata/base/1 ... ok
> initializing pg_authid ... WARNING:  no roles are defined in this database
> system
> HINT:  You should immediately run CREATE USER "wdc22" SUPERUSER;.
> FATAL:  database "template1" does not exist
> child process exited with exit code 1"

> I've searched around for what this means, but I can't find anything.

A few moments with grep would've showed you that the WARNING means no
rows were found in a seqscan of pg_authid.  The system is able to plow
ahead anyway in single-user mode, but then it evidently also can't find
the row that should exist in pg_database for template1.  So yeah,
something is wrong with your storage stuff; the rows inserted during
bootstrap aren't getting found, or aren't visible, or some such, during
a subsequent single-user-mode run.

I'd suggest running initdb with --noclean and then trying to start a
standalone backend by hand under gdb, so you can trace through things
and see why it's not seeing the rows.  You could also eyeball the
so-far-created files to see if they contain what you expect.
        regards, tom lane