Joe Conway <mail@joeconway.com> writes:
> I agree, and this brings up a question that I've pondered before. Why do
> we ever *require* and initdb when only metadata has changed (i.e. the
> contents of the system catalogs, not catalog or page structure)?
In some cases we have to do it because there is a backend code change
that's dependent on the metadata change; that is, the backend will not
function correctly if you haven't fixed the catalog contents. The
reverse direction (old backend, new catalogs) is also dangerous. The
point of having a catalog version number is to ensure that the backend
and catalogs are in sync.
It's possible that we could devise some upgrade procedure that gets from
old backend/old catalogs to new backend/new catalogs without an initdb,
but I tend to think that this is basically the problem pg_upgrade is
supposed to solve. I'm not eager to spend time on a "pg_simple_upgrade"
procedure.
regards, tom lane