Re: Strange assertion using VACOPT_FREEZE in vacuum.c
От | Jim Nasby |
---|---|
Тема | Re: Strange assertion using VACOPT_FREEZE in vacuum.c |
Дата | |
Msg-id | 54DE8461.9090300@BlueTreble.com обсуждение исходный текст |
Ответ на | Strange assertion using VACOPT_FREEZE in vacuum.c (Michael Paquier <michael.paquier@gmail.com>) |
Ответы |
Re: Strange assertion using VACOPT_FREEZE in vacuum.c
|
Список | pgsql-hackers |
On 2/12/15 10:54 PM, Michael Paquier wrote: > Hi all, > > When calling vacuum(), there is the following assertion using VACOPT_FREEZE: > Assert((vacstmt->options & VACOPT_VACUUM) || > !(vacstmt->options & (VACOPT_FULL | VACOPT_FREEZE))); > I think that this should be changed with sanity checks based on the > parameter values of freeze_* in VacuumStmt as we do not set up > VACOPT_FREEZE when VACUUM is used without options in parenthesis, for > something like that: > Assert((vacstmt->options & VACOPT_VACUUM) || > - !(vacstmt->options & (VACOPT_FULL | VACOPT_FREEZE))); > + ((vacstmt->options & VACOPT_FULL) == 0 && > + vacstmt->freeze_min_age < 0 && > + vacstmt->freeze_table_age < 0 && > + vacstmt->multixact_freeze_min_age < 0 && > + vacstmt->multixact_freeze_table_age < 0)); > This would also have the advantage to limit the use of VACOPT_FREEZE > in the query parser. > A patch is attached. > Thoughts? Looks good. Should we also assert that if VACOPT_FREEZE is set then all the other stuff is 0? I don't know what kind of sanity checks we normally try and put on the parser, but that seems like a possible hole. -- Jim Nasby, Data Architect, Blue Treble Consulting Data in Trouble? Get it in Treble! http://BlueTreble.com
В списке pgsql-hackers по дате отправления: