pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Noah Misch <noah@leadboat.com>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: robertmhaas@gmail.com
Cc: pgsql-hackers@postgresql.org
Cc: 9erthalion6@gmail.com
Cc: andrew.dunstan@2ndquadrant.com
Cc: hlinnaka@iki.fi
Cc: michael@paquier.xyz
Subject: Re: [HACKERS] WAL logging problem in 9.4.3?
Date: Sun, 26 Jan 2020 20:22:01 -0800
Message-ID: <20200127042201.GA3119606@rfd.leadboat.com> (raw)
In-Reply-To: <20200121.184557.1462314355964996736.horikyota.ntt@gmail.com>
References: <20200115.171857.1170166613760719188.horikyota.ntt@gmail.com>
	<20200116.142057.1250623796779593147.horikyota.ntt@gmail.com>
	<20200119035139.GA2811524@rfd.leadboat.com>
	<20200121.184557.1462314355964996736.horikyota.ntt@gmail.com>

Diffing the two latest versions of one patch:
> --- v32-0002-Fix-the-defect-1.patch	2020-01-18 14:32:47.499129940 -0800
> +++ v33-0002-Fix-the-defect-1.patch	2020-01-26 16:23:52.846391035 -0800
> +@@ -2978,8 +3054,8 @@ AssertPendingSyncs_RelationCache(void)
> + 			LOCKTAG_RELATION)
> + 			continue;
> + 		relid = ObjectIdGetDatum(locallock->tag.lock.locktag_field2);
> +-		r = RelationIdGetRelation(relid);
> +-		if (r == NULL)
> ++		r = RelationIdGetRelationCache(relid);

The purpose of this loop is to create relcache entries for rels locked in the
current transaction.  (The "r == NULL" case happens for rels no longer visible
in catalogs.  It is harmless.)  Since RelationIdGetRelationCache() never
creates a relcache entry, calling it defeats that purpose.
RelationIdGetRelation() is the right function to call.

On Tue, Jan 21, 2020 at 06:45:57PM +0900, Kyotaro Horiguchi wrote:
> Three other fixes not mentined above are made. One is the useless
> rd_firstRelfilenodeSubid in the condition to dicide whether to
> preserve or not a relcache entry

It was not useless.  Test case:

  create table t (c int);
  begin;
  alter table t alter c type bigint;  -- sets rd_firstRelfilenodeSubid
  savepoint q; drop table t; rollback to q;  -- forgets rd_firstRelfilenodeSubid
  commit;  -- assertion failure, after s/RelationIdGetRelationCache/RelationIdGetRelation/ discussed above





view thread (244+ messages)  latest in thread

Message-ID: <20200127042201.GA3119606@rfd.leadboat.com>
Permalink:  ../20200127042201.GA3119606@rfd.leadboat.com/
Also on:    postgresql.org/message-id/20200127042201.GA3119606@rfd.leadboat.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: noah@leadboat.com, horikyota.ntt@gmail.com, robertmhaas@gmail.com, 9erthalion6@gmail.com, andrew.dunstan@2ndquadrant.com, hlinnaka@iki.fi, michael@paquier.xyz
  Subject: Re: [HACKERS] WAL logging problem in 9.4.3?
  In-Reply-To: <20200127042201.GA3119606@rfd.leadboat.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox