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
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 |