BUG #15662: Row update in foreign partition does not move row based on partition key

From: PG Bug reporting form <noreply(at)postgresql(dot)org>
To: pgsql-bugs(at)lists(dot)postgresql(dot)org
Cc: derek(dot)hans(at)gmail(dot)com
Subject: BUG #15662: Row update in foreign partition does not move row based on partition key
Date: 2019-03-01 19:06:48
Message-ID: 15662-4b833b46c8a35fe7@postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

The following bug has been logged on the website:

Bug reference: 15662
Logged by: Derek Hans
Email address: derek(dot)hans(at)gmail(dot)com
PostgreSQL version: 11.2
Operating system: Debian 6.3.0-18+deb9u1
Description:

In a table with data partitions, updating the partition key of a row only
moves the row across partitions in some of the situations:
- From local partition to local partition
- From local partition to foreign partition
Rows are not moved
- From foreign partition to local partition
- From foreign partition to foreign partition

Repro steps:
Assumes 2 servers. 1st server has user postgres with password 'docker'
available at localhost:5432

-------------BOX 1
CREATE TABLE temperatures_2016 (
at date,
city text,
mintemp integer,
maxtemp integer
);

-------------BOX 2
CREATE TABLE temperatures (
at date,
city text,
mintemp integer,
maxtemp integer
)
PARTITION BY RANGE (at);

CREATE TABLE temperatures_2017
PARTITION OF temperatures
FOR VALUES FROM ('2017-01-01') TO ('2018-01-01');

CREATE EXTENSION postgres_fdw;

CREATE SERVER box1 FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (host 'localhost', dbname 'postgres', port '5432');

CREATE USER MAPPING FOR postgres SERVER box1
OPTIONS (user 'postgres', password 'docker');

CREATE FOREIGN TABLE temperatures_2016
PARTITION OF temperatures
FOR VALUES FROM ('2016-01-01') TO ('2017-01-01')
SERVER box1;

INSERT INTO temperatures (at, city, mintemp, maxtemp) VALUES ('2016-08-03',
'London', 63, 73);
UPDATE temperatures set at = '2017-01-02';
SELECT * from temperatures_2017;

-----------------------
EXPECTED OUTPUT:
"2017-01-02" "London" 63 73

ACTUAL OUTPUT:
no data.

Running
SELECT * from temperatures_2016;
does output the expected row - i.e. the row remains in the partition where
it was created.

Responses

Browse pgsql-bugs by date

  From Date Subject
Next Message Sergei Kornilov 2019-03-01 19:54:00 Re: BUG #15662: Row update in foreign partition does not move row based on partition key
Previous Message Jeff Janes 2019-03-01 14:03:14 Re: pgAdmin - Download as CSV