Tom Lane wrote: > Alvaro Herrera <alvhe...@alvh.no-ip.org> writes:
> > Rather than remove the capability, I'd be inclined to make > > brin_summarize_new_values summarize the final partial range, and have > > VACUUM not do it. Would that be too inconsistent? > > That doesn't really get you out of the problem that this is an abuse of > the relation extension lock, and is likely to cause issues when people > try to optimize that locking mechanism. Right. > Why is it that the regular technique doesn't work, ie create a placeholder > tuple and let it get added to by any insertions that happen? The problem is that we determine relation size (and scan stop point) before inserting the placeholder tuple, so any relation extension that occurs after we read the size is not covered by the scan. The reason we do this is to avoid calling RelationGetNumberOfBlocks once for each range, since it's known to be very expensive. Maybe a solution is to call RelationGetNumberOfBlocks() after the placeholder tuple has been inserted, for the case where we would be scanning past end of relation; passing InvalidBlockNumber as stop point would indicate to do things that way. I'll try with that approach now. -- Álvaro Herrera https://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers