Robert Haas <robertmhaas@gmail.com> writes:
> On Tue, Apr 10, 2012 at 7:57 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> If we expect this function to mainly be applied to pg_class.reltablespace,
>> then it seems like it ought to understand that zero means "the database
>> default" and substitute the database's default tablespace. That might
>> or might not be the same as the cluster default.
>>
>> Alternatively, we could expect pg_upgrade to understand that and make
>> the substitution itself, but if the same would be needed by most uses of
>> the function, maybe we should just do it here.
> +1 for doing it in the function. I think that will improve
> ease-of-use and give up nothing.
I'm inclined to agree. It won't help pg_upgrade, but that's because
the query pg_upgrade is using is constrained by backwards-compatibility
considerations: it's *necessary* to join to pg_tablespace if you want
any location details pre-9.2. But as of 9.2 it's plausible to consider
applying this function directly to pg_class.reltablespace, so we should
make it behave sanely for that use-case.
I think it's probably about a two-line change, will research and
apply if so.
regards, tom lane