Re: BUG #14769: Logical replication error "cache lookup failed for type 0"

From: Petr Jelinek <petr(dot)jelinek(at)2ndquadrant(dot)com>
To: scott(at)deltaex(dot)com, pgsql-bugs(at)postgresql(dot)org, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>
Subject: Re: BUG #14769: Logical replication error "cache lookup failed for type 0"
Date: 2017-08-04 09:41:12
Message-ID: 66cde4f0-7b4c-30a5-e4b6-acebda59b00f@2ndquadrant.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

On 03/08/17 01:59, scott(at)deltaex(dot)com wrote:
> The following bug has been logged on the website:
>
> Bug reference: 14769
> Logged by: Scott Milliken
> Email address: scott(at)deltaex(dot)com
> PostgreSQL version: 10beta2
> Operating system: Linux 4.10.0-27-generic #30~16.04.2-Ubuntu
> Description:
>
> I'm testing postgresql 10beta2, and found a bug with logical replication.
> The bug halts logical replication, and produces the error "cache lookup
> failed for type 0" in the secondary's log.
>
> The error can be reproduced by dropping a column in a replicated table. When
> a column is dropped, it zeroes out attypeid in pg_attribute:
>
> ```
> test=# select * from pg_attribute where attrelid =
> 'public.testtbl'::regclass and atttypid = 0 order by attnum;
> -[ RECORD 1 ]-+-----------------------------
> attrelid | 16386
> attname | ........pg.dropped.2........
> atttypid | 0
> attstattarget | 0
> attlen | -1
> attnum | 2
> attndims | 0
> attcacheoff | -1
> atttypmod | -1
> attbyval | f
> attstorage | x
> attalign | i
> attnotnull | f
> atthasdef | f
> attidentity |
> attisdropped | t
> attislocal | t
> attinhcount | 0
> attcollation | 100
> attacl | ¤
> attoptions | ¤
> attfdwoptions | ¤
> ```
>
> Perhaps there's a missing check against pg_attribute.attisdropped
> somewhere?
>

Good catch! Looks like we didn't initialize the attribute map for
locally dropped columns. Once I did that I found there is also typo in
slot_modify_cstrings() which uses wrong value from the remote side, that
is also made visible by your example.

Both are fixed in attached patch.

--
Petr Jelinek http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services

Attachment Content-Type Size
0001-Fix-handling-of-dropped-columns-in-logical-replicati.patch text/x-patch 1.9 KB

In response to

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Daniel Verite 2017-08-04 09:55:28 Re: Crash report for some ICU-52 (debian8) COLLATE and work_mem values
Previous Message Augustine, Jobin 2017-08-04 05:53:43 Replication to Postgres 10 on Windows is broken