From: | Jim Nasby <Jim(dot)Nasby(at)BlueTreble(dot)com> |
---|---|
To: | Michael Paquier <michael(dot)paquier(at)gmail(dot)com>, PostgreSQL mailing lists <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Strange assertion using VACOPT_FREEZE in vacuum.c |
Date: | 2015-02-13 23:10:25 |
Message-ID: | 54DE8461.9090300@BlueTreble.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2015-02-13 23:25:37 | Re: "multiple backends attempting to wait for pincount 1" |
Previous Message | Kevin Grittner | 2015-02-13 23:05:16 | Re: "multiple backends attempting to wait for pincount 1" |