mirror of
https://github.com/postgres/postgres.git
synced 2025-04-21 12:05:57 +03:00
Add regression tests for REPLICA IDENTITY with dropped indexes
REPLICA IDENTITY USING INDEX behaves the same way as NOTHING if the associated index is dropped, even if there is a primary key that could be used as a fallback for the changes generated. There have never been any tests to cover such scenarios, so this commit closes the gap. Author: Michael Paquier Reviewed-by: Masahiko Sawada, Rahila Syed, Euler Taveira Discussion: https://postgr.es/m/20200522035028.GO2355@paquier.xyz
This commit is contained in:
parent
7e453634bb
commit
fe7fd4e961
File diff suppressed because one or more lines are too long
@ -345,6 +345,37 @@ UPDATE table_with_unique_not_null SET id = -id;
|
||||
UPDATE table_with_unique_not_null SET id = -id;
|
||||
DELETE FROM table_with_unique_not_null WHERE data = 3;
|
||||
|
||||
-- check tables with dropped indexes used in REPLICA IDENTITY
|
||||
-- table with primary key
|
||||
CREATE TABLE table_dropped_index_with_pk (a int PRIMARY KEY, b int, c int);
|
||||
CREATE UNIQUE INDEX table_dropped_index_with_pk_idx
|
||||
ON table_dropped_index_with_pk(a);
|
||||
ALTER TABLE table_dropped_index_with_pk REPLICA IDENTITY
|
||||
USING INDEX table_dropped_index_with_pk_idx;
|
||||
DROP INDEX table_dropped_index_with_pk_idx;
|
||||
INSERT INTO table_dropped_index_with_pk VALUES (1,1,1), (2,2,2), (3,3,3);
|
||||
UPDATE table_dropped_index_with_pk SET a = 4 WHERE a = 1;
|
||||
UPDATE table_dropped_index_with_pk SET b = 5 WHERE a = 2;
|
||||
UPDATE table_dropped_index_with_pk SET b = 6, c = 7 WHERE a = 3;
|
||||
DELETE FROM table_dropped_index_with_pk WHERE b = 1;
|
||||
DELETE FROM table_dropped_index_with_pk WHERE a = 3;
|
||||
DROP TABLE table_dropped_index_with_pk;
|
||||
|
||||
-- table without primary key
|
||||
CREATE TABLE table_dropped_index_no_pk (a int NOT NULL, b int, c int);
|
||||
CREATE UNIQUE INDEX table_dropped_index_no_pk_idx
|
||||
ON table_dropped_index_no_pk(a);
|
||||
ALTER TABLE table_dropped_index_no_pk REPLICA IDENTITY
|
||||
USING INDEX table_dropped_index_no_pk_idx;
|
||||
DROP INDEX table_dropped_index_no_pk_idx;
|
||||
INSERT INTO table_dropped_index_no_pk VALUES (1,1,1), (2,2,2), (3,3,3);
|
||||
UPDATE table_dropped_index_no_pk SET a = 4 WHERE a = 1;
|
||||
UPDATE table_dropped_index_no_pk SET b = 5 WHERE a = 2;
|
||||
UPDATE table_dropped_index_no_pk SET b = 6, c = 7 WHERE a = 3;
|
||||
DELETE FROM table_dropped_index_no_pk WHERE b = 1;
|
||||
DELETE FROM table_dropped_index_no_pk WHERE a = 3;
|
||||
DROP TABLE table_dropped_index_no_pk;
|
||||
|
||||
-- check toast support
|
||||
BEGIN;
|
||||
CREATE SEQUENCE toasttable_rand_seq START 79 INCREMENT 1499; -- portable "random"
|
||||
|
Loading…
x
Reference in New Issue
Block a user