Robert Haas <robertmhaas@gmail.com> writes:
> The trouble is that we have no mechanism for conditional logic in
> upgrade scripts, so if the system catalog structure should change in a
> way that causes the hook and unhook mechanism to require different
> logic depending on which PG major version is in use, we're hosed.
Well, actually, we *do* have such a mechanism (plpgsql), we just don't
want to use it unless we have to. I wouldn't feel too bad about saying
"upgrading tsearch2 directly from 9.0 to 9.4 requires that you have
plpgsql installed when you issue the CREATE EXTENSION command".
I grant all your points about abstraction being a good thing. But there
are only so many hours in the day, and writing (and then maintaining)
thousands of lines of C code on the grounds that maybe that will let
somebody avoid writing some ugly code someday is not going to get to
the top of my to-do list anytime in the foreseeable future.
regards, tom lane