Re: [Report Bug With Patch] Rel Cache Bug

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Jaimin Pan <jaimin(dot)pan(at)gmail(dot)com>
Cc: pgsql-bugs(at)postgresql(dot)org
Subject: Re: [Report Bug With Patch] Rel Cache Bug
Date: 2015-03-25 17:38:52
Message-ID: 7722.1427305132@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Jaimin Pan <jaimin(dot)pan(at)gmail(dot)com> writes:
> I think there is a bug in rel cache rebuild of release 9.4.1.
> it also exists on some other release.

> the issue was introduced by 491dd4a97daa6b4de9ee8401ada10ad5da76af46

> -- a/src/backend/utils/cache/relcache.c
> +++ b/src/backend/utils/cache/relcache.c
> @@ -2166,9 +2166,9 @@ RelationClearRelation(Relation relation, bool rebuild)
> /* ... but actually, we don't have to update newrel->rd_rel
> */
> memcpy(relation->rd_rel, newrel->rd_rel, CLASS_TUPLE_SIZE);
> /* preserve old tupledesc and rules if no logical change */
> - if (keep_tupdesc)
> + if (!keep_tupdesc)
> SWAPFIELD(TupleDesc, rd_att);
> - if (keep_rules)
> + if (!keep_rules)
> {
> SWAPFIELD(RuleLock *, rd_rules);
> SWAPFIELD(MemoryContext, rd_rulescxt);

You would need to provide a fairly convincing argument why you think that
five-year-old code is backwards. Asserting there's a problem with
absolutely zero evidence is not likely to impress anyone.

(For the record, it did and does still look right to me. As per the
comment about thirty lines up, what we're doing is un-swapping the
fields we don't want to change. If keep_tupdesc is true, we don't
want to change rd_att, so we need to swap its old value back.
Likewise for the other thing.)

regards, tom lane

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Kevin Grittner 2015-03-25 17:39:07 Re: BUG #12896: Unable to export data from Postgresql database
Previous Message Andres Freund 2015-03-25 17:08:42 Re: [Report Bug With Patch] Rel Cache Bug