Skip to content

Commit a9101d1

Browse files
committed
add regression tests for copied foreign keys
1 parent 562cab6 commit a9101d1

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed

expected/pg_pathman.out

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1707,3 +1707,62 @@ EXPLAIN (COSTS OFF) SELECT * FROM messages;
17071707
-> Seq Scan on messages_2
17081708
(3 rows)
17091709

1710+
/* Check primary keys generation */
1711+
CREATE TABLE test_ref(comment TEXT UNIQUE);
1712+
INSERT INTO test_ref VALUES('test');
1713+
CREATE TABLE test_fkey(
1714+
id INT NOT NULL,
1715+
comment TEXT,
1716+
FOREIGN KEY (comment) REFERENCES test_ref(comment));
1717+
INSERT INTO test_fkey SELECT generate_series(1, 1000), 'test';
1718+
SELECT create_range_partitions('test_fkey', 'id', 1, 100);
1719+
NOTICE: sequence "test_fkey_seq" does not exist, skipping
1720+
create_range_partitions
1721+
-------------------------
1722+
10
1723+
(1 row)
1724+
1725+
INSERT INTO test_fkey VALUES(1, 'wrong');
1726+
ERROR: insert or update on table "test_fkey_1" violates foreign key constraint "test_fkey_1_comment_fkey"
1727+
SELECT drop_partitions('test_fkey');
1728+
NOTICE: function public.test_fkey_upd_trig_func() does not exist, skipping
1729+
NOTICE: 100 rows copied from test_fkey_10
1730+
NOTICE: 100 rows copied from test_fkey_9
1731+
NOTICE: 100 rows copied from test_fkey_8
1732+
NOTICE: 100 rows copied from test_fkey_7
1733+
NOTICE: 100 rows copied from test_fkey_6
1734+
NOTICE: 100 rows copied from test_fkey_5
1735+
NOTICE: 100 rows copied from test_fkey_4
1736+
NOTICE: 100 rows copied from test_fkey_3
1737+
NOTICE: 100 rows copied from test_fkey_2
1738+
NOTICE: 100 rows copied from test_fkey_1
1739+
drop_partitions
1740+
-----------------
1741+
10
1742+
(1 row)
1743+
1744+
SELECT create_hash_partitions('test_fkey', 'id', 10);
1745+
create_hash_partitions
1746+
------------------------
1747+
10
1748+
(1 row)
1749+
1750+
INSERT INTO test_fkey VALUES(1, 'wrong');
1751+
ERROR: insert or update on table "test_fkey_0" violates foreign key constraint "test_fkey_0_comment_fkey"
1752+
SELECT drop_partitions('test_fkey');
1753+
NOTICE: function public.test_fkey_upd_trig_func() does not exist, skipping
1754+
NOTICE: 94 rows copied from test_fkey_9
1755+
NOTICE: 108 rows copied from test_fkey_8
1756+
NOTICE: 118 rows copied from test_fkey_7
1757+
NOTICE: 95 rows copied from test_fkey_6
1758+
NOTICE: 90 rows copied from test_fkey_5
1759+
NOTICE: 101 rows copied from test_fkey_4
1760+
NOTICE: 116 rows copied from test_fkey_3
1761+
NOTICE: 90 rows copied from test_fkey_2
1762+
NOTICE: 90 rows copied from test_fkey_1
1763+
NOTICE: 98 rows copied from test_fkey_0
1764+
drop_partitions
1765+
-----------------
1766+
10
1767+
(1 row)
1768+

sql/pg_pathman.sql

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -644,3 +644,23 @@ SELECT create_range_partitions('messages', 'id', 1, 100, 2);
644644
ALTER TABLE replies DROP CONSTRAINT replies_message_id_fkey;
645645
SELECT create_range_partitions('messages', 'id', 1, 100, 2);
646646
EXPLAIN (COSTS OFF) SELECT * FROM messages;
647+
648+
/* Check primary keys generation */
649+
CREATE TABLE test_ref(comment TEXT UNIQUE);
650+
INSERT INTO test_ref VALUES('test');
651+
652+
CREATE TABLE test_fkey(
653+
id INT NOT NULL,
654+
comment TEXT,
655+
FOREIGN KEY (comment) REFERENCES test_ref(comment));
656+
657+
INSERT INTO test_fkey SELECT generate_series(1, 1000), 'test';
658+
659+
SELECT create_range_partitions('test_fkey', 'id', 1, 100);
660+
INSERT INTO test_fkey VALUES(1, 'wrong');
661+
INSERT INTO test_fkey VALUES(1, 'test');
662+
SELECT drop_partitions('test_fkey');
663+
664+
SELECT create_hash_partitions('test_fkey', 'id', 10);
665+
INSERT INTO test_fkey VALUES(1, 'test');
666+
SELECT drop_partitions('test_fkey');

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy