Re: don't create storage when unnecessary
Michael Paquier <michael@paquier.xyz>
From: Michael Paquier <michael@paquier.xyz>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Pg Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2018-12-07T00:06:17Z
Lists: pgsql-hackers
On Thu, Dec 06, 2018 at 06:55:52PM -0300, Alvaro Herrera wrote: > Some time ago, after partitioned indexes had been pushed, I realized > that even though I didn't want them to have relfilenodes, they did. And > looking closer I noticed that *a lot* of relation kinds that didn't need > relfilenodes, had them anyway. > > This patch fixes that; if no relfilenode is needed, it's not created. > > I didn't verify pg_upgrade behavior across this commit. Maybe something > needs tweaking there. > > PS: I think it'd be worth following up with this ... > https://postgr.es/m/CAFjFpRcfzs+yst6YBCseD_orEcDNuAr9GUTraZ5GC=AvCYh55Q@mail.gmail.com A macro makes sense to control that. Now I have to admit that I don't like your solution. Wouldn't it be cleaner to assign InvalidOid to relfilenode in such cases? The callers of heap_create would need to be made smarter when they now pass down a relfilenode (looking at you, DefineIndex!), but that seems way more consistent to me. Some tests would also be welcome. -- Michael
Commits
-
Don't create relfilenode for relations without storage
- 807ae415c546 12.0 landed
-
Rename macro to RELKIND_HAS_STORAGE
- df5be63763f8 12.0 landed