Subject: Re: Small omission in type_sanity.sql

From: Tom Lane <[email-masked]>
Date: Fri, 27 Jan 2023 20:39:04 -0500

Andres Freund <[email-masked]> writes:
> Tom, is there a reason we run the various sanity tests early-ish in the
> schedule? It does seem to reduce their effectiveness a bit...

Originally, those tests were mainly needed to sanity-check the
hand-maintained initial catalog data, so it made sense to run them
early.  Since we taught genbki.pl to do a bunch more work, that's
perhaps a bit less pressing.

There's at least one test that intentionally sets up a bogus btree
opclass, which we'd have to drop again if we wanted to run the
sanity checks later.  Not sure what other issues might surface.
You could find out easily enough, of course ...

> Problems:
> - "Cross-check against pg_type entry" is far too strict about legal combinations
>   of typstorage

Perhaps, but it's enforcing policy about what we want in the
initial catalog data, not what is possible to support.  So
there's a bit of divergence of goals here too.  Maybe we need
to split up the tests into initial-data-only tests (run early)
and tests that should hold for user-created objects too
(run late)?

			regards, tom lane

---

From: Andres Freund <[email-masked]>
Date: Fri, 27 Jan 2023 18:30:54 -0800

Hi,

On 2023-01-27 20:39:04 -0500, Tom Lane wrote:
> early.

It's also kinda useful to have some basic validity testing early on, because
if there's something wrong with the catalog values, it'll cause lots of issues
later.

> initial catalog data, not what is possible to support.

True in generaly, but I don't think it matters much in this specific case. We
don't gain much by forbidding 'e' -> 'x' mismatches, given that we allow 'x'
-> 'p'.

There's a lot more such cases in opr_sanity. There's a lot of tests in it that
only make sense for validating the initial catalog contents. It might be
useful to run a more lenient version of it later though.

> So there's a bit of divergence of goals here too.  Maybe we need to split up
> the tests into initial-data-only tests (run early) and tests that should
> hold for user-created objects too (run late)?

Yea, I think so. A bit worried about the duplication that might require.

But the *sanity tests also do also encode a lot of good cross-checks, that are
somewhat easy to break in code (and / or have been broken in the past), so I
think it's worth pursuing.

Greetings,

Andres Freund