On 2024-Nov-27, Tom Lane wrote: > I do not like the idea of breaking existing upgrade scripts, > especially not by requiring them to use a parameter that older > vacuumdb versions will reject. That makes it impossible to have a > script that is version independent. I really doubt that there is any > usability improvement to be had here that's worth that.
I was only suggesting to break it because it was said upthread that that was desirable behavior. > How about causing "--analyze-in-stages" (as currently spelled) to > be a no-op? We could keep the behavior available under some other > name. I think making it a no-op isn't useful, because people who run the old scripts will get the behavior we do not want: clobber the statistics and recompute them, losing the benefit that this feature brings. On 2024-Nov-27, Bruce Momjian wrote: > Uh, I guess we could do that, but we should emit something like > "--analyze-in-stages option ignored". I think emitting a message is not useful. It's quite possible that the output of pg_upgrade will be redirected somewhere and this will go unnoticed. Maybe the most convenient for users is to keep "vacuumdb --analyze-in-stages" doing exactly what we want to happen after pg_upgrade, that is, in 18+, only recreate the missing stats. This is because of what Corey said about messaging: many users are not going to get our message that they need to adapt their scripts, so they won't. Breaking the script would convey that message pretty quickly, but you're right that it's not very convenient. For people that want to use the old behavior of recomputing _all_ statistics not just the missing ones, we could add a different switch, or an (optional) option to --analyze-in-stages. -- Álvaro Herrera PostgreSQL Developer — https://www.EnterpriseDB.com/