Always make a BufferAccessStrategy for ANALYZE
32fbe0239
changed things so we didn't bother allocating the
BufferAccessStrategy during VACUUM (ONLY_DATABASE_STATS); and VACUUM
(FULL), however, it forgot to consider that VACUUM (FULL, ANALYZE) is a
possible combination. That change would have resulted in such a command
allowing ANALYZE to make full use of shared buffers, which wasn't
intended, so fix that.
Reported-by: Melanie Plageman
Discussion: https://postgr.es/m/CAAKRu_bJRKe+v_=OqwC+5sA3j5qv8rqdAwy3+yHaO3wmtfrCRg@mail.gmail.com
This commit is contained in:
parent
1d477a907e
commit
bccd6908ca
|
@ -393,11 +393,13 @@ vacuum(List *relations, VacuumParams *params,
|
|||
* If caller didn't give us a buffer strategy object, make one in the
|
||||
* cross-transaction memory context. We needn't bother making this for
|
||||
* VACUUM (FULL) or VACUUM (ONLY_DATABASE_STATS) as they'll not make use
|
||||
* of it.
|
||||
* of it. VACUUM (FULL, ANALYZE) is possible, so we'd better ensure that
|
||||
* we make a strategy when we see ANALYZE.
|
||||
*/
|
||||
if (bstrategy == NULL &&
|
||||
(params->options & (VACOPT_ONLY_DATABASE_STATS |
|
||||
VACOPT_FULL)) == 0)
|
||||
((params->options & (VACOPT_ONLY_DATABASE_STATS |
|
||||
VACOPT_FULL)) == 0 ||
|
||||
(params->options & VACOPT_ANALYZE) != 0))
|
||||
{
|
||||
MemoryContext old_context = MemoryContextSwitchTo(vac_context);
|
||||
|
||||
|
|
Loading…
Reference in New Issue