On 11/4/14, 10:45 AM, Tom Lane wrote:
So it's safe as things stand; but this seems a bit, um, rickety. Should we insert a DropRelFileNodesAllBuffers call into ATExecSetTableSpace to make it safer? It's kind of annoying to have to scan the buffer pool twice, but I'm afraid that sometime in the future somebody will try to get clever about optimizing away the end-of-transaction buffer pool scan, and break this case. Or maybe I'm just worrying too much.
We could possibly remember what relations have been moved to different tablespaces in a transaction and avoid the call in that case, but that seems rather silly. If there's any non-trivial actual data involved then presumably the buffer scan won't be noticed amidst all the IO, so this would only be an issue if you're playing games with mostly empty tables, and only then if you've got really large shared buffers. I can't actually come up with any real use case for that. So +1 for doing the safe thing... -- Jim Nasby, Data Architect, Blue Treble Consulting Data in Trouble? Get it in Treble! http://BlueTreble.com -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers