v6-0004-Grammar-fix-for-tests-of-partition-MERGE-SPLIT-op.patch
application/octet-stream
Filename: v6-0004-Grammar-fix-for-tests-of-partition-MERGE-SPLIT-op.patch
Type: application/octet-stream
Part: 1
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch v6-0004
Subject: Grammar fix for tests of partition MERGE/SPLIT operations
| File | + | − |
|---|---|---|
| src/test/regress/expected/partition_merge.out | 48 | 48 |
| src/test/regress/expected/partition_split.out | 119 | 119 |
| src/test/regress/sql/partition_merge.sql | 42 | 42 |
| src/test/regress/sql/partition_split.sql | 93 | 93 |
From 5032cdf6dd9905fe16b15890e822bef88c2f6142 Mon Sep 17 00:00:00 2001
From: Alexander Korotkov <akorotkov@postgresql.org>
Date: Thu, 18 Apr 2024 13:27:11 +0300
Subject: [PATCH v6 4/4] Grammar fix for tests of partition MERGE/SPLIT
operations
Replace "salesmans" with "salesmen".
Reported-by: Alexander Lakhin
Discussion: https://postgr.es/m/fdaa003e-919c-cbc9-4f0c-e4546e96bd65%40gmail.com
---
src/test/regress/expected/partition_merge.out | 96 +++----
src/test/regress/expected/partition_split.out | 238 +++++++++---------
src/test/regress/sql/partition_merge.sql | 84 +++----
src/test/regress/sql/partition_split.sql | 186 +++++++-------
4 files changed, 302 insertions(+), 302 deletions(-)
diff --git a/src/test/regress/expected/partition_merge.out b/src/test/regress/expected/partition_merge.out
index 748c8c7a89b..b5744ed4986 100644
--- a/src/test/regress/expected/partition_merge.out
+++ b/src/test/regress/expected/partition_merge.out
@@ -349,50 +349,50 @@ DROP TABLE sales_date;
--
-- Test: merge partitions of partitioned table with triggers
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
-CREATE TABLE salesmans10_20 PARTITION OF salesmans FOR VALUES FROM (10) TO (20);
-CREATE TABLE salesmans20_30 PARTITION OF salesmans FOR VALUES FROM (20) TO (30);
-CREATE TABLE salesmans30_40 PARTITION OF salesmans FOR VALUES FROM (30) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen10_20 PARTITION OF salesmen FOR VALUES FROM (10) TO (20);
+CREATE TABLE salesmen20_30 PARTITION OF salesmen FOR VALUES FROM (20) TO (30);
+CREATE TABLE salesmen30_40 PARTITION OF salesmen FOR VALUES FROM (30) TO (40);
+INSERT INTO salesmen VALUES (1, 'Poirot');
CREATE OR REPLACE FUNCTION after_insert_row_trigger() RETURNS trigger LANGUAGE 'plpgsql' AS $BODY$
BEGIN
RAISE NOTICE 'trigger(%) called: action = %, when = %, level = %', TG_ARGV[0], TG_OP, TG_WHEN, TG_LEVEL;
RETURN NULL;
END;
$BODY$;
-CREATE TRIGGER salesmans_after_insert_statement_trigger
+CREATE TRIGGER salesmen_after_insert_statement_trigger
AFTER INSERT
- ON salesmans
+ ON salesmen
FOR EACH STATEMENT
- EXECUTE PROCEDURE after_insert_row_trigger('salesmans');
-CREATE TRIGGER salesmans_after_insert_row_trigger
+ EXECUTE PROCEDURE after_insert_row_trigger('salesmen');
+CREATE TRIGGER salesmen_after_insert_row_trigger
AFTER INSERT
- ON salesmans
+ ON salesmen
FOR EACH ROW
- EXECUTE PROCEDURE after_insert_row_trigger('salesmans');
+ EXECUTE PROCEDURE after_insert_row_trigger('salesmen');
-- 2 triggers should fire here (row + statement):
-INSERT INTO salesmans VALUES (10, 'May');
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = ROW
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = STATEMENT
+INSERT INTO salesmen VALUES (10, 'May');
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = ROW
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = STATEMENT
-- 1 trigger should fire here (row):
-INSERT INTO salesmans10_20 VALUES (19, 'Ivanov');
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = ROW
-ALTER TABLE salesmans MERGE PARTITIONS (salesmans10_20, salesmans20_30, salesmans30_40) INTO salesmans10_40;
+INSERT INTO salesmen10_20 VALUES (19, 'Ivanov');
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = ROW
+ALTER TABLE salesmen MERGE PARTITIONS (salesmen10_20, salesmen20_30, salesmen30_40) INTO salesmen10_40;
-- 2 triggers should fire here (row + statement):
-INSERT INTO salesmans VALUES (20, 'Smirnoff');
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = ROW
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = STATEMENT
+INSERT INTO salesmen VALUES (20, 'Smirnoff');
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = ROW
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = STATEMENT
-- 1 trigger should fire here (row):
-INSERT INTO salesmans10_40 VALUES (30, 'Ford');
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = ROW
-SELECT * FROM salesmans01_10;
+INSERT INTO salesmen10_40 VALUES (30, 'Ford');
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = ROW
+SELECT * FROM salesmen01_10;
salesman_id | salesman_name
-------------+---------------
1 | Poirot
(1 row)
-SELECT * FROM salesmans10_40;
+SELECT * FROM salesmen10_40;
salesman_id | salesman_name
-------------+---------------
10 | May
@@ -401,31 +401,31 @@ SELECT * FROM salesmans10_40;
30 | Ford
(4 rows)
-DROP TABLE salesmans;
+DROP TABLE salesmen;
DROP FUNCTION after_insert_row_trigger();
--
-- Test: merge partitions with deleted columns
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
-- Create partitions with some deleted columns:
-CREATE TABLE salesmans10_20(d1 VARCHAR(30), salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30));
-CREATE TABLE salesmans20_30(salesman_id INT PRIMARY KEY, d2 INT, salesman_name VARCHAR(30));
-CREATE TABLE salesmans30_40(salesman_id INT PRIMARY KEY, d3 DATE, salesman_name VARCHAR(30));
-INSERT INTO salesmans10_20 VALUES ('dummy value 1', 19, 'Ivanov');
-INSERT INTO salesmans20_30 VALUES (20, 101, 'Smirnoff');
-INSERT INTO salesmans30_40 VALUES (31, now(), 'Popov');
-ALTER TABLE salesmans10_20 DROP COLUMN d1;
-ALTER TABLE salesmans20_30 DROP COLUMN d2;
-ALTER TABLE salesmans30_40 DROP COLUMN d3;
-ALTER TABLE salesmans ATTACH PARTITION salesmans10_20 FOR VALUES FROM (10) TO (20);
-ALTER TABLE salesmans ATTACH PARTITION salesmans20_30 FOR VALUES FROM (20) TO (30);
-ALTER TABLE salesmans ATTACH PARTITION salesmans30_40 FOR VALUES FROM (30) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
-INSERT INTO salesmans VALUES (10, 'May');
-INSERT INTO salesmans VALUES (30, 'Ford');
-ALTER TABLE salesmans MERGE PARTITIONS (salesmans10_20, salesmans20_30, salesmans30_40) INTO salesmans10_40;
-select * from salesmans;
+CREATE TABLE salesmen10_20(d1 VARCHAR(30), salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30));
+CREATE TABLE salesmen20_30(salesman_id INT PRIMARY KEY, d2 INT, salesman_name VARCHAR(30));
+CREATE TABLE salesmen30_40(salesman_id INT PRIMARY KEY, d3 DATE, salesman_name VARCHAR(30));
+INSERT INTO salesmen10_20 VALUES ('dummy value 1', 19, 'Ivanov');
+INSERT INTO salesmen20_30 VALUES (20, 101, 'Smirnoff');
+INSERT INTO salesmen30_40 VALUES (31, now(), 'Popov');
+ALTER TABLE salesmen10_20 DROP COLUMN d1;
+ALTER TABLE salesmen20_30 DROP COLUMN d2;
+ALTER TABLE salesmen30_40 DROP COLUMN d3;
+ALTER TABLE salesmen ATTACH PARTITION salesmen10_20 FOR VALUES FROM (10) TO (20);
+ALTER TABLE salesmen ATTACH PARTITION salesmen20_30 FOR VALUES FROM (20) TO (30);
+ALTER TABLE salesmen ATTACH PARTITION salesmen30_40 FOR VALUES FROM (30) TO (40);
+INSERT INTO salesmen VALUES (1, 'Poirot');
+INSERT INTO salesmen VALUES (10, 'May');
+INSERT INTO salesmen VALUES (30, 'Ford');
+ALTER TABLE salesmen MERGE PARTITIONS (salesmen10_20, salesmen20_30, salesmen30_40) INTO salesmen10_40;
+select * from salesmen;
salesman_id | salesman_name
-------------+---------------
1 | Poirot
@@ -436,13 +436,13 @@ select * from salesmans;
30 | Ford
(6 rows)
-select * from salesmans01_10;
+select * from salesmen01_10;
salesman_id | salesman_name
-------------+---------------
1 | Poirot
(1 row)
-select * from salesmans10_40;
+select * from salesmen10_40;
salesman_id | salesman_name
-------------+---------------
19 | Ivanov
@@ -452,7 +452,7 @@ select * from salesmans10_40;
30 | Ford
(5 rows)
-DROP TABLE salesmans;
+DROP TABLE salesmen;
--
-- Test: merge sub-partitions
--
diff --git a/src/test/regress/expected/partition_split.out b/src/test/regress/expected/partition_split.out
index 660361cd20e..217e9ba54bb 100644
--- a/src/test/regress/expected/partition_split.out
+++ b/src/test/regress/expected/partition_split.out
@@ -84,8 +84,8 @@ ALTER TABLE sales_range SPLIT PARTITION sales_feb_mar_apr2022 INTO
PARTITION sales_mar2022 FOR VALUES FROM ('2022-03-01') TO ('2022-04-01'),
PARTITION sales_apr2022 FOR VALUES FROM ('2022-04-01') TO ('2022-06-01'));
ERROR: upper bound of partition "sales_apr2022" is greater than upper bound of split partition
-LINE 4: ... sales_apr2022 FOR VALUES FROM ('2022-04-01') TO ('2022-06-0...
- ^
+LINE 4: PARTITION sales_apr2022 FOR VALUES FROM ('2022-04-01') TO...
+ ^
-- ERROR: lower bound of partition "sales_mar2022" conflicts with upper bound of previous partition "sales_feb2022"
ALTER TABLE sales_range SPLIT PARTITION sales_feb_mar_apr2022 INTO
(PARTITION sales_feb2022 FOR VALUES FROM ('2022-02-01') TO ('2022-03-01'),
@@ -574,20 +574,20 @@ DROP TABLE sales_range;
--
-- Test: split partition with CHECK and FOREIGN KEY CONSTRAINTs on partitioned table
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30));
-INSERT INTO salesmans VALUES (1, 'Poirot');
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30));
+INSERT INTO salesmen VALUES (1, 'Poirot');
CREATE TABLE sales_range (
-salesman_id INT REFERENCES salesmans(salesman_id),
+salesman_id INT REFERENCES salesmen(salesman_id),
sales_amount INT CHECK (sales_amount > 1),
sales_date DATE) PARTITION BY RANGE (sales_date);
CREATE TABLE sales_jan2022 PARTITION OF sales_range FOR VALUES FROM ('2022-01-01') TO ('2022-02-01');
CREATE TABLE sales_feb_mar_apr2022 PARTITION OF sales_range FOR VALUES FROM ('2022-02-01') TO ('2022-05-01');
CREATE TABLE sales_others PARTITION OF sales_range DEFAULT;
SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'sales_feb_mar_apr2022'::regclass::oid;
- pg_get_constraintdef | conname | conkey
--------------------------------------------------------------+--------------------------------+--------
- CHECK ((sales_amount > 1)) | sales_range_sales_amount_check | {2}
- FOREIGN KEY (salesman_id) REFERENCES salesmans(salesman_id) | sales_range_salesman_id_fkey | {1}
+ pg_get_constraintdef | conname | conkey
+------------------------------------------------------------+--------------------------------+--------
+ CHECK ((sales_amount > 1)) | sales_range_sales_amount_check | {2}
+ FOREIGN KEY (salesman_id) REFERENCES salesmen(salesman_id) | sales_range_salesman_id_fkey | {1}
(2 rows)
ALTER TABLE sales_range SPLIT PARTITION sales_feb_mar_apr2022 INTO
@@ -596,24 +596,24 @@ ALTER TABLE sales_range SPLIT PARTITION sales_feb_mar_apr2022 INTO
PARTITION sales_apr2022 FOR VALUES FROM ('2022-04-01') TO ('2022-05-01'));
-- We should see the same CONSTRAINTs as on sales_feb_mar_apr2022 partition
SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'sales_feb2022'::regclass::oid;
- pg_get_constraintdef | conname | conkey
--------------------------------------------------------------+--------------------------------+--------
- CHECK ((sales_amount > 1)) | sales_range_sales_amount_check | {2}
- FOREIGN KEY (salesman_id) REFERENCES salesmans(salesman_id) | sales_range_salesman_id_fkey | {1}
+ pg_get_constraintdef | conname | conkey
+------------------------------------------------------------+--------------------------------+--------
+ CHECK ((sales_amount > 1)) | sales_range_sales_amount_check | {2}
+ FOREIGN KEY (salesman_id) REFERENCES salesmen(salesman_id) | sales_range_salesman_id_fkey | {1}
(2 rows)
SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'sales_mar2022'::regclass::oid;
- pg_get_constraintdef | conname | conkey
--------------------------------------------------------------+--------------------------------+--------
- CHECK ((sales_amount > 1)) | sales_range_sales_amount_check | {2}
- FOREIGN KEY (salesman_id) REFERENCES salesmans(salesman_id) | sales_range_salesman_id_fkey | {1}
+ pg_get_constraintdef | conname | conkey
+------------------------------------------------------------+--------------------------------+--------
+ CHECK ((sales_amount > 1)) | sales_range_sales_amount_check | {2}
+ FOREIGN KEY (salesman_id) REFERENCES salesmen(salesman_id) | sales_range_salesman_id_fkey | {1}
(2 rows)
SELECT pg_get_constraintdef(oid), conname, conkey FROM pg_constraint WHERE conrelid = 'sales_apr2022'::regclass::oid;
- pg_get_constraintdef | conname | conkey
--------------------------------------------------------------+--------------------------------+--------
- CHECK ((sales_amount > 1)) | sales_range_sales_amount_check | {2}
- FOREIGN KEY (salesman_id) REFERENCES salesmans(salesman_id) | sales_range_salesman_id_fkey | {1}
+ pg_get_constraintdef | conname | conkey
+------------------------------------------------------------+--------------------------------+--------
+ CHECK ((sales_amount > 1)) | sales_range_sales_amount_check | {2}
+ FOREIGN KEY (salesman_id) REFERENCES salesmen(salesman_id) | sales_range_salesman_id_fkey | {1}
(2 rows)
-- ERROR: new row for relation "sales_mar2022" violates check constraint "sales_range_sales_amount_check"
@@ -623,23 +623,23 @@ DETAIL: Failing row contains (1, 0, 03-11-2022).
-- ERROR: insert or update on table "sales_mar2022" violates foreign key constraint "sales_range_salesman_id_fkey"
INSERT INTO sales_range VALUES (-1, 10, '2022-03-11');
ERROR: insert or update on table "sales_mar2022" violates foreign key constraint "sales_range_salesman_id_fkey"
-DETAIL: Key (salesman_id)=(-1) is not present in table "salesmans".
+DETAIL: Key (salesman_id)=(-1) is not present in table "salesmen".
-- ok
INSERT INTO sales_range VALUES (1, 10, '2022-03-11');
DROP TABLE sales_range CASCADE;
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
--
-- Test: split partition on partitioned table in case of existing FOREIGN KEY reference from another table
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE sales (salesman_id INT REFERENCES salesmans(salesman_id), sales_amount INT, sales_date DATE);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
-CREATE TABLE salesmans10_40 PARTITION OF salesmans FOR VALUES FROM (10) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
-INSERT INTO salesmans VALUES (10, 'May');
-INSERT INTO salesmans VALUES (19, 'Ivanov');
-INSERT INTO salesmans VALUES (20, 'Smirnoff');
-INSERT INTO salesmans VALUES (30, 'Ford');
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE sales (salesman_id INT REFERENCES salesmen(salesman_id), sales_amount INT, sales_date DATE);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen10_40 PARTITION OF salesmen FOR VALUES FROM (10) TO (40);
+INSERT INTO salesmen VALUES (1, 'Poirot');
+INSERT INTO salesmen VALUES (10, 'May');
+INSERT INTO salesmen VALUES (19, 'Ivanov');
+INSERT INTO salesmen VALUES (20, 'Smirnoff');
+INSERT INTO salesmen VALUES (30, 'Ford');
INSERT INTO sales VALUES (1, 100, '2022-03-01');
INSERT INTO sales VALUES (1, 110, '2022-03-02');
INSERT INTO sales VALUES (10, 150, '2022-03-01');
@@ -648,13 +648,13 @@ INSERT INTO sales VALUES (19, 200, '2022-03-04');
INSERT INTO sales VALUES (20, 50, '2022-03-12');
INSERT INTO sales VALUES (20, 170, '2022-03-02');
INSERT INTO sales VALUES (30, 30, '2022-03-04');
-SELECT * FROM salesmans01_10;
+SELECT * FROM salesmen01_10;
salesman_id | salesman_name
-------------+---------------
1 | Poirot
(1 row)
-SELECT * FROM salesmans10_40;
+SELECT * FROM salesmen10_40;
salesman_id | salesman_name
-------------+---------------
10 | May
@@ -663,30 +663,30 @@ SELECT * FROM salesmans10_40;
30 | Ford
(4 rows)
-ALTER TABLE salesmans SPLIT PARTITION salesmans10_40 INTO
- (PARTITION salesmans10_20 FOR VALUES FROM (10) TO (20),
- PARTITION salesmans20_30 FOR VALUES FROM (20) TO (30),
- PARTITION salesmans30_40 FOR VALUES FROM (30) TO (40));
-SELECT * FROM salesmans01_10;
+ALTER TABLE salesmen SPLIT PARTITION salesmen10_40 INTO
+ (PARTITION salesmen10_20 FOR VALUES FROM (10) TO (20),
+ PARTITION salesmen20_30 FOR VALUES FROM (20) TO (30),
+ PARTITION salesmen30_40 FOR VALUES FROM (30) TO (40));
+SELECT * FROM salesmen01_10;
salesman_id | salesman_name
-------------+---------------
1 | Poirot
(1 row)
-SELECT * FROM salesmans10_20;
+SELECT * FROM salesmen10_20;
salesman_id | salesman_name
-------------+---------------
10 | May
19 | Ivanov
(2 rows)
-SELECT * FROM salesmans20_30;
+SELECT * FROM salesmen20_30;
salesman_id | salesman_name
-------------+---------------
20 | Smirnoff
(1 row)
-SELECT * FROM salesmans30_40;
+SELECT * FROM salesmen30_40;
salesman_id | salesman_name
-------------+---------------
30 | Ford
@@ -695,98 +695,98 @@ SELECT * FROM salesmans30_40;
-- ERROR: insert or update on table "sales" violates foreign key constraint "sales_salesman_id_fkey"
INSERT INTO sales VALUES (40, 50, '2022-03-04');
ERROR: insert or update on table "sales" violates foreign key constraint "sales_salesman_id_fkey"
-DETAIL: Key (salesman_id)=(40) is not present in table "salesmans".
+DETAIL: Key (salesman_id)=(40) is not present in table "salesmen".
-- ok
INSERT INTO sales VALUES (30, 50, '2022-03-04');
DROP TABLE sales CASCADE;
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
--
-- Test: split partition of partitioned table with triggers
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
-CREATE TABLE salesmans10_40 PARTITION OF salesmans FOR VALUES FROM (10) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen10_40 PARTITION OF salesmen FOR VALUES FROM (10) TO (40);
+INSERT INTO salesmen VALUES (1, 'Poirot');
CREATE OR REPLACE FUNCTION after_insert_row_trigger() RETURNS trigger LANGUAGE 'plpgsql' AS $BODY$
BEGIN
RAISE NOTICE 'trigger(%) called: action = %, when = %, level = %', TG_ARGV[0], TG_OP, TG_WHEN, TG_LEVEL;
RETURN NULL;
END;
$BODY$;
-CREATE TRIGGER salesmans_after_insert_statement_trigger
+CREATE TRIGGER salesmen_after_insert_statement_trigger
AFTER INSERT
- ON salesmans
+ ON salesmen
FOR EACH STATEMENT
- EXECUTE PROCEDURE after_insert_row_trigger('salesmans');
-CREATE TRIGGER salesmans_after_insert_row_trigger
+ EXECUTE PROCEDURE after_insert_row_trigger('salesmen');
+CREATE TRIGGER salesmen_after_insert_row_trigger
AFTER INSERT
- ON salesmans
+ ON salesmen
FOR EACH ROW
- EXECUTE PROCEDURE after_insert_row_trigger('salesmans');
+ EXECUTE PROCEDURE after_insert_row_trigger('salesmen');
-- 2 triggers should fire here (row + statement):
-INSERT INTO salesmans VALUES (10, 'May');
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = ROW
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = STATEMENT
+INSERT INTO salesmen VALUES (10, 'May');
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = ROW
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = STATEMENT
-- 1 trigger should fire here (row):
-INSERT INTO salesmans10_40 VALUES (19, 'Ivanov');
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = ROW
-ALTER TABLE salesmans SPLIT PARTITION salesmans10_40 INTO
- (PARTITION salesmans10_20 FOR VALUES FROM (10) TO (20),
- PARTITION salesmans20_30 FOR VALUES FROM (20) TO (30),
- PARTITION salesmans30_40 FOR VALUES FROM (30) TO (40));
+INSERT INTO salesmen10_40 VALUES (19, 'Ivanov');
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = ROW
+ALTER TABLE salesmen SPLIT PARTITION salesmen10_40 INTO
+ (PARTITION salesmen10_20 FOR VALUES FROM (10) TO (20),
+ PARTITION salesmen20_30 FOR VALUES FROM (20) TO (30),
+ PARTITION salesmen30_40 FOR VALUES FROM (30) TO (40));
-- 2 triggers should fire here (row + statement):
-INSERT INTO salesmans VALUES (20, 'Smirnoff');
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = ROW
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = STATEMENT
+INSERT INTO salesmen VALUES (20, 'Smirnoff');
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = ROW
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = STATEMENT
-- 1 trigger should fire here (row):
-INSERT INTO salesmans30_40 VALUES (30, 'Ford');
-NOTICE: trigger(salesmans) called: action = INSERT, when = AFTER, level = ROW
-SELECT * FROM salesmans01_10;
+INSERT INTO salesmen30_40 VALUES (30, 'Ford');
+NOTICE: trigger(salesmen) called: action = INSERT, when = AFTER, level = ROW
+SELECT * FROM salesmen01_10;
salesman_id | salesman_name
-------------+---------------
1 | Poirot
(1 row)
-SELECT * FROM salesmans10_20;
+SELECT * FROM salesmen10_20;
salesman_id | salesman_name
-------------+---------------
10 | May
19 | Ivanov
(2 rows)
-SELECT * FROM salesmans20_30;
+SELECT * FROM salesmen20_30;
salesman_id | salesman_name
-------------+---------------
20 | Smirnoff
(1 row)
-SELECT * FROM salesmans30_40;
+SELECT * FROM salesmen30_40;
salesman_id | salesman_name
-------------+---------------
30 | Ford
(1 row)
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
DROP FUNCTION after_insert_row_trigger();
--
-- Test: split partition witch identity column
-- If split partition column is identity column, columns of new partitions are identity columns too.
--
-CREATE TABLE salesmans(salesman_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans1_2 PARTITION OF salesmans FOR VALUES FROM (1) TO (2);
+CREATE TABLE salesmen(salesman_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen1_2 PARTITION OF salesmen FOR VALUES FROM (1) TO (2);
-- Create new partition with identity column:
-CREATE TABLE salesmans2_5(salesman_id INT NOT NULL, salesman_name VARCHAR(30));
-ALTER TABLE salesmans ATTACH PARTITION salesmans2_5 FOR VALUES FROM (2) TO (5);
-INSERT INTO salesmans (salesman_name) VALUES ('Poirot');
-INSERT INTO salesmans (salesman_name) VALUES ('Ivanov');
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans'::regclass::oid;
+CREATE TABLE salesmen2_5(salesman_id INT NOT NULL, salesman_name VARCHAR(30));
+ALTER TABLE salesmen ATTACH PARTITION salesmen2_5 FOR VALUES FROM (2) TO (5);
+INSERT INTO salesmen (salesman_name) VALUES ('Poirot');
+INSERT INTO salesmen (salesman_name) VALUES ('Ivanov');
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen'::regclass::oid;
attname | attidentity | attgenerated
---------------+-------------+--------------
salesman_id | a |
salesman_name | |
(2 rows)
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans1_2'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen1_2'::regclass::oid;
attname | attidentity | attgenerated
---------------+-------------+--------------
salesman_id | a |
@@ -794,51 +794,51 @@ SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND
(2 rows)
-- Split partition has identity column:
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans2_5'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen2_5'::regclass::oid;
attname | attidentity | attgenerated
---------------+-------------+--------------
salesman_id | a |
salesman_name | |
(2 rows)
-ALTER TABLE salesmans SPLIT PARTITION salesmans2_5 INTO
- (PARTITION salesmans2_3 FOR VALUES FROM (2) TO (3),
- PARTITION salesmans3_4 FOR VALUES FROM (3) TO (4),
- PARTITION salesmans4_5 FOR VALUES FROM (4) TO (5));
-INSERT INTO salesmans (salesman_name) VALUES ('May');
-INSERT INTO salesmans (salesman_name) VALUES ('Ford');
-SELECT * FROM salesmans1_2;
+ALTER TABLE salesmen SPLIT PARTITION salesmen2_5 INTO
+ (PARTITION salesmen2_3 FOR VALUES FROM (2) TO (3),
+ PARTITION salesmen3_4 FOR VALUES FROM (3) TO (4),
+ PARTITION salesmen4_5 FOR VALUES FROM (4) TO (5));
+INSERT INTO salesmen (salesman_name) VALUES ('May');
+INSERT INTO salesmen (salesman_name) VALUES ('Ford');
+SELECT * FROM salesmen1_2;
salesman_id | salesman_name
-------------+---------------
1 | Poirot
(1 row)
-SELECT * FROM salesmans2_3;
+SELECT * FROM salesmen2_3;
salesman_id | salesman_name
-------------+---------------
2 | Ivanov
(1 row)
-SELECT * FROM salesmans3_4;
+SELECT * FROM salesmen3_4;
salesman_id | salesman_name
-------------+---------------
3 | May
(1 row)
-SELECT * FROM salesmans4_5;
+SELECT * FROM salesmen4_5;
salesman_id | salesman_name
-------------+---------------
4 | Ford
(1 row)
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen'::regclass::oid;
attname | attidentity | attgenerated
---------------+-------------+--------------
salesman_id | a |
salesman_name | |
(2 rows)
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans1_2'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen1_2'::regclass::oid;
attname | attidentity | attgenerated
---------------+-------------+--------------
salesman_id | a |
@@ -846,74 +846,74 @@ SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND
(2 rows)
-- New partitions have identity-columns:
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans2_3'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen2_3'::regclass::oid;
attname | attidentity | attgenerated
---------------+-------------+--------------
salesman_id | a |
salesman_name | |
(2 rows)
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans3_4'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen3_4'::regclass::oid;
attname | attidentity | attgenerated
---------------+-------------+--------------
salesman_id | a |
salesman_name | |
(2 rows)
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans4_5'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen4_5'::regclass::oid;
attname | attidentity | attgenerated
---------------+-------------+--------------
salesman_id | a |
salesman_name | |
(2 rows)
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
--
-- Test: split partition with deleted columns
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
-- Create new partition with some deleted columns:
-CREATE TABLE salesmans10_40(d1 VARCHAR(30), salesman_id INT PRIMARY KEY, d2 INT, d3 DATE, salesman_name VARCHAR(30));
-INSERT INTO salesmans10_40 VALUES ('dummy value 1', 19, 100, now(), 'Ivanov');
-INSERT INTO salesmans10_40 VALUES ('dummy value 2', 20, 101, now(), 'Smirnoff');
-ALTER TABLE salesmans10_40 DROP COLUMN d1;
-ALTER TABLE salesmans10_40 DROP COLUMN d2;
-ALTER TABLE salesmans10_40 DROP COLUMN d3;
-ALTER TABLE salesmans ATTACH PARTITION salesmans10_40 FOR VALUES FROM (10) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
-INSERT INTO salesmans VALUES (10, 'May');
-INSERT INTO salesmans VALUES (30, 'Ford');
-ALTER TABLE salesmans SPLIT PARTITION salesmans10_40 INTO
- (PARTITION salesmans10_20 FOR VALUES FROM (10) TO (20),
- PARTITION salesmans20_30 FOR VALUES FROM (20) TO (30),
- PARTITION salesmans30_40 FOR VALUES FROM (30) TO (40));
-select * from salesmans01_10;
+CREATE TABLE salesmen10_40(d1 VARCHAR(30), salesman_id INT PRIMARY KEY, d2 INT, d3 DATE, salesman_name VARCHAR(30));
+INSERT INTO salesmen10_40 VALUES ('dummy value 1', 19, 100, now(), 'Ivanov');
+INSERT INTO salesmen10_40 VALUES ('dummy value 2', 20, 101, now(), 'Smirnoff');
+ALTER TABLE salesmen10_40 DROP COLUMN d1;
+ALTER TABLE salesmen10_40 DROP COLUMN d2;
+ALTER TABLE salesmen10_40 DROP COLUMN d3;
+ALTER TABLE salesmen ATTACH PARTITION salesmen10_40 FOR VALUES FROM (10) TO (40);
+INSERT INTO salesmen VALUES (1, 'Poirot');
+INSERT INTO salesmen VALUES (10, 'May');
+INSERT INTO salesmen VALUES (30, 'Ford');
+ALTER TABLE salesmen SPLIT PARTITION salesmen10_40 INTO
+ (PARTITION salesmen10_20 FOR VALUES FROM (10) TO (20),
+ PARTITION salesmen20_30 FOR VALUES FROM (20) TO (30),
+ PARTITION salesmen30_40 FOR VALUES FROM (30) TO (40));
+select * from salesmen01_10;
salesman_id | salesman_name
-------------+---------------
1 | Poirot
(1 row)
-select * from salesmans10_20;
+select * from salesmen10_20;
salesman_id | salesman_name
-------------+---------------
19 | Ivanov
10 | May
(2 rows)
-select * from salesmans20_30;
+select * from salesmen20_30;
salesman_id | salesman_name
-------------+---------------
20 | Smirnoff
(1 row)
-select * from salesmans30_40;
+select * from salesmen30_40;
salesman_id | salesman_name
-------------+---------------
30 | Ford
(1 row)
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
--
-- Test: split sub-partition
--
diff --git a/src/test/regress/sql/partition_merge.sql b/src/test/regress/sql/partition_merge.sql
index 6faac959a7c..df737e214ee 100644
--- a/src/test/regress/sql/partition_merge.sql
+++ b/src/test/regress/sql/partition_merge.sql
@@ -193,14 +193,14 @@ DROP TABLE sales_date;
--
-- Test: merge partitions of partitioned table with triggers
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
-CREATE TABLE salesmans10_20 PARTITION OF salesmans FOR VALUES FROM (10) TO (20);
-CREATE TABLE salesmans20_30 PARTITION OF salesmans FOR VALUES FROM (20) TO (30);
-CREATE TABLE salesmans30_40 PARTITION OF salesmans FOR VALUES FROM (30) TO (40);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen10_20 PARTITION OF salesmen FOR VALUES FROM (10) TO (20);
+CREATE TABLE salesmen20_30 PARTITION OF salesmen FOR VALUES FROM (20) TO (30);
+CREATE TABLE salesmen30_40 PARTITION OF salesmen FOR VALUES FROM (30) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
+INSERT INTO salesmen VALUES (1, 'Poirot');
CREATE OR REPLACE FUNCTION after_insert_row_trigger() RETURNS trigger LANGUAGE 'plpgsql' AS $BODY$
BEGIN
@@ -209,70 +209,70 @@ BEGIN
END;
$BODY$;
-CREATE TRIGGER salesmans_after_insert_statement_trigger
+CREATE TRIGGER salesmen_after_insert_statement_trigger
AFTER INSERT
- ON salesmans
+ ON salesmen
FOR EACH STATEMENT
- EXECUTE PROCEDURE after_insert_row_trigger('salesmans');
+ EXECUTE PROCEDURE after_insert_row_trigger('salesmen');
-CREATE TRIGGER salesmans_after_insert_row_trigger
+CREATE TRIGGER salesmen_after_insert_row_trigger
AFTER INSERT
- ON salesmans
+ ON salesmen
FOR EACH ROW
- EXECUTE PROCEDURE after_insert_row_trigger('salesmans');
+ EXECUTE PROCEDURE after_insert_row_trigger('salesmen');
-- 2 triggers should fire here (row + statement):
-INSERT INTO salesmans VALUES (10, 'May');
+INSERT INTO salesmen VALUES (10, 'May');
-- 1 trigger should fire here (row):
-INSERT INTO salesmans10_20 VALUES (19, 'Ivanov');
+INSERT INTO salesmen10_20 VALUES (19, 'Ivanov');
-ALTER TABLE salesmans MERGE PARTITIONS (salesmans10_20, salesmans20_30, salesmans30_40) INTO salesmans10_40;
+ALTER TABLE salesmen MERGE PARTITIONS (salesmen10_20, salesmen20_30, salesmen30_40) INTO salesmen10_40;
-- 2 triggers should fire here (row + statement):
-INSERT INTO salesmans VALUES (20, 'Smirnoff');
+INSERT INTO salesmen VALUES (20, 'Smirnoff');
-- 1 trigger should fire here (row):
-INSERT INTO salesmans10_40 VALUES (30, 'Ford');
+INSERT INTO salesmen10_40 VALUES (30, 'Ford');
-SELECT * FROM salesmans01_10;
-SELECT * FROM salesmans10_40;
+SELECT * FROM salesmen01_10;
+SELECT * FROM salesmen10_40;
-DROP TABLE salesmans;
+DROP TABLE salesmen;
DROP FUNCTION after_insert_row_trigger();
--
-- Test: merge partitions with deleted columns
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
-- Create partitions with some deleted columns:
-CREATE TABLE salesmans10_20(d1 VARCHAR(30), salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30));
-CREATE TABLE salesmans20_30(salesman_id INT PRIMARY KEY, d2 INT, salesman_name VARCHAR(30));
-CREATE TABLE salesmans30_40(salesman_id INT PRIMARY KEY, d3 DATE, salesman_name VARCHAR(30));
+CREATE TABLE salesmen10_20(d1 VARCHAR(30), salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30));
+CREATE TABLE salesmen20_30(salesman_id INT PRIMARY KEY, d2 INT, salesman_name VARCHAR(30));
+CREATE TABLE salesmen30_40(salesman_id INT PRIMARY KEY, d3 DATE, salesman_name VARCHAR(30));
-INSERT INTO salesmans10_20 VALUES ('dummy value 1', 19, 'Ivanov');
-INSERT INTO salesmans20_30 VALUES (20, 101, 'Smirnoff');
-INSERT INTO salesmans30_40 VALUES (31, now(), 'Popov');
+INSERT INTO salesmen10_20 VALUES ('dummy value 1', 19, 'Ivanov');
+INSERT INTO salesmen20_30 VALUES (20, 101, 'Smirnoff');
+INSERT INTO salesmen30_40 VALUES (31, now(), 'Popov');
-ALTER TABLE salesmans10_20 DROP COLUMN d1;
-ALTER TABLE salesmans20_30 DROP COLUMN d2;
-ALTER TABLE salesmans30_40 DROP COLUMN d3;
+ALTER TABLE salesmen10_20 DROP COLUMN d1;
+ALTER TABLE salesmen20_30 DROP COLUMN d2;
+ALTER TABLE salesmen30_40 DROP COLUMN d3;
-ALTER TABLE salesmans ATTACH PARTITION salesmans10_20 FOR VALUES FROM (10) TO (20);
-ALTER TABLE salesmans ATTACH PARTITION salesmans20_30 FOR VALUES FROM (20) TO (30);
-ALTER TABLE salesmans ATTACH PARTITION salesmans30_40 FOR VALUES FROM (30) TO (40);
+ALTER TABLE salesmen ATTACH PARTITION salesmen10_20 FOR VALUES FROM (10) TO (20);
+ALTER TABLE salesmen ATTACH PARTITION salesmen20_30 FOR VALUES FROM (20) TO (30);
+ALTER TABLE salesmen ATTACH PARTITION salesmen30_40 FOR VALUES FROM (30) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
-INSERT INTO salesmans VALUES (10, 'May');
-INSERT INTO salesmans VALUES (30, 'Ford');
+INSERT INTO salesmen VALUES (1, 'Poirot');
+INSERT INTO salesmen VALUES (10, 'May');
+INSERT INTO salesmen VALUES (30, 'Ford');
-ALTER TABLE salesmans MERGE PARTITIONS (salesmans10_20, salesmans20_30, salesmans30_40) INTO salesmans10_40;
+ALTER TABLE salesmen MERGE PARTITIONS (salesmen10_20, salesmen20_30, salesmen30_40) INTO salesmen10_40;
-select * from salesmans;
-select * from salesmans01_10;
-select * from salesmans10_40;
+select * from salesmen;
+select * from salesmen01_10;
+select * from salesmen10_40;
-DROP TABLE salesmans;
+DROP TABLE salesmen;
--
-- Test: merge sub-partitions
diff --git a/src/test/regress/sql/partition_split.sql b/src/test/regress/sql/partition_split.sql
index 576f9f0f63c..12def95d1d5 100644
--- a/src/test/regress/sql/partition_split.sql
+++ b/src/test/regress/sql/partition_split.sql
@@ -337,11 +337,11 @@ DROP TABLE sales_range;
--
-- Test: split partition with CHECK and FOREIGN KEY CONSTRAINTs on partitioned table
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30));
-INSERT INTO salesmans VALUES (1, 'Poirot');
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30));
+INSERT INTO salesmen VALUES (1, 'Poirot');
CREATE TABLE sales_range (
-salesman_id INT REFERENCES salesmans(salesman_id),
+salesman_id INT REFERENCES salesmen(salesman_id),
sales_amount INT CHECK (sales_amount > 1),
sales_date DATE) PARTITION BY RANGE (sales_date);
@@ -369,22 +369,22 @@ INSERT INTO sales_range VALUES (-1, 10, '2022-03-11');
INSERT INTO sales_range VALUES (1, 10, '2022-03-11');
DROP TABLE sales_range CASCADE;
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
--
-- Test: split partition on partitioned table in case of existing FOREIGN KEY reference from another table
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE sales (salesman_id INT REFERENCES salesmans(salesman_id), sales_amount INT, sales_date DATE);
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE sales (salesman_id INT REFERENCES salesmen(salesman_id), sales_amount INT, sales_date DATE);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
-CREATE TABLE salesmans10_40 PARTITION OF salesmans FOR VALUES FROM (10) TO (40);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen10_40 PARTITION OF salesmen FOR VALUES FROM (10) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
-INSERT INTO salesmans VALUES (10, 'May');
-INSERT INTO salesmans VALUES (19, 'Ivanov');
-INSERT INTO salesmans VALUES (20, 'Smirnoff');
-INSERT INTO salesmans VALUES (30, 'Ford');
+INSERT INTO salesmen VALUES (1, 'Poirot');
+INSERT INTO salesmen VALUES (10, 'May');
+INSERT INTO salesmen VALUES (19, 'Ivanov');
+INSERT INTO salesmen VALUES (20, 'Smirnoff');
+INSERT INTO salesmen VALUES (30, 'Ford');
INSERT INTO sales VALUES (1, 100, '2022-03-01');
INSERT INTO sales VALUES (1, 110, '2022-03-02');
@@ -395,18 +395,18 @@ INSERT INTO sales VALUES (20, 50, '2022-03-12');
INSERT INTO sales VALUES (20, 170, '2022-03-02');
INSERT INTO sales VALUES (30, 30, '2022-03-04');
-SELECT * FROM salesmans01_10;
-SELECT * FROM salesmans10_40;
+SELECT * FROM salesmen01_10;
+SELECT * FROM salesmen10_40;
-ALTER TABLE salesmans SPLIT PARTITION salesmans10_40 INTO
- (PARTITION salesmans10_20 FOR VALUES FROM (10) TO (20),
- PARTITION salesmans20_30 FOR VALUES FROM (20) TO (30),
- PARTITION salesmans30_40 FOR VALUES FROM (30) TO (40));
+ALTER TABLE salesmen SPLIT PARTITION salesmen10_40 INTO
+ (PARTITION salesmen10_20 FOR VALUES FROM (10) TO (20),
+ PARTITION salesmen20_30 FOR VALUES FROM (20) TO (30),
+ PARTITION salesmen30_40 FOR VALUES FROM (30) TO (40));
-SELECT * FROM salesmans01_10;
-SELECT * FROM salesmans10_20;
-SELECT * FROM salesmans20_30;
-SELECT * FROM salesmans30_40;
+SELECT * FROM salesmen01_10;
+SELECT * FROM salesmen10_20;
+SELECT * FROM salesmen20_30;
+SELECT * FROM salesmen30_40;
-- ERROR: insert or update on table "sales" violates foreign key constraint "sales_salesman_id_fkey"
INSERT INTO sales VALUES (40, 50, '2022-03-04');
@@ -414,17 +414,17 @@ INSERT INTO sales VALUES (40, 50, '2022-03-04');
INSERT INTO sales VALUES (30, 50, '2022-03-04');
DROP TABLE sales CASCADE;
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
--
-- Test: split partition of partitioned table with triggers
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
-CREATE TABLE salesmans10_40 PARTITION OF salesmans FOR VALUES FROM (10) TO (40);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen10_40 PARTITION OF salesmen FOR VALUES FROM (10) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
+INSERT INTO salesmen VALUES (1, 'Poirot');
CREATE OR REPLACE FUNCTION after_insert_row_trigger() RETURNS trigger LANGUAGE 'plpgsql' AS $BODY$
BEGIN
@@ -433,115 +433,115 @@ BEGIN
END;
$BODY$;
-CREATE TRIGGER salesmans_after_insert_statement_trigger
+CREATE TRIGGER salesmen_after_insert_statement_trigger
AFTER INSERT
- ON salesmans
+ ON salesmen
FOR EACH STATEMENT
- EXECUTE PROCEDURE after_insert_row_trigger('salesmans');
+ EXECUTE PROCEDURE after_insert_row_trigger('salesmen');
-CREATE TRIGGER salesmans_after_insert_row_trigger
+CREATE TRIGGER salesmen_after_insert_row_trigger
AFTER INSERT
- ON salesmans
+ ON salesmen
FOR EACH ROW
- EXECUTE PROCEDURE after_insert_row_trigger('salesmans');
+ EXECUTE PROCEDURE after_insert_row_trigger('salesmen');
-- 2 triggers should fire here (row + statement):
-INSERT INTO salesmans VALUES (10, 'May');
+INSERT INTO salesmen VALUES (10, 'May');
-- 1 trigger should fire here (row):
-INSERT INTO salesmans10_40 VALUES (19, 'Ivanov');
+INSERT INTO salesmen10_40 VALUES (19, 'Ivanov');
-ALTER TABLE salesmans SPLIT PARTITION salesmans10_40 INTO
- (PARTITION salesmans10_20 FOR VALUES FROM (10) TO (20),
- PARTITION salesmans20_30 FOR VALUES FROM (20) TO (30),
- PARTITION salesmans30_40 FOR VALUES FROM (30) TO (40));
+ALTER TABLE salesmen SPLIT PARTITION salesmen10_40 INTO
+ (PARTITION salesmen10_20 FOR VALUES FROM (10) TO (20),
+ PARTITION salesmen20_30 FOR VALUES FROM (20) TO (30),
+ PARTITION salesmen30_40 FOR VALUES FROM (30) TO (40));
-- 2 triggers should fire here (row + statement):
-INSERT INTO salesmans VALUES (20, 'Smirnoff');
+INSERT INTO salesmen VALUES (20, 'Smirnoff');
-- 1 trigger should fire here (row):
-INSERT INTO salesmans30_40 VALUES (30, 'Ford');
+INSERT INTO salesmen30_40 VALUES (30, 'Ford');
-SELECT * FROM salesmans01_10;
-SELECT * FROM salesmans10_20;
-SELECT * FROM salesmans20_30;
-SELECT * FROM salesmans30_40;
+SELECT * FROM salesmen01_10;
+SELECT * FROM salesmen10_20;
+SELECT * FROM salesmen20_30;
+SELECT * FROM salesmen30_40;
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
DROP FUNCTION after_insert_row_trigger();
--
-- Test: split partition witch identity column
-- If split partition column is identity column, columns of new partitions are identity columns too.
--
-CREATE TABLE salesmans(salesman_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen(salesman_id INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans1_2 PARTITION OF salesmans FOR VALUES FROM (1) TO (2);
+CREATE TABLE salesmen1_2 PARTITION OF salesmen FOR VALUES FROM (1) TO (2);
-- Create new partition with identity column:
-CREATE TABLE salesmans2_5(salesman_id INT NOT NULL, salesman_name VARCHAR(30));
-ALTER TABLE salesmans ATTACH PARTITION salesmans2_5 FOR VALUES FROM (2) TO (5);
+CREATE TABLE salesmen2_5(salesman_id INT NOT NULL, salesman_name VARCHAR(30));
+ALTER TABLE salesmen ATTACH PARTITION salesmen2_5 FOR VALUES FROM (2) TO (5);
-INSERT INTO salesmans (salesman_name) VALUES ('Poirot');
-INSERT INTO salesmans (salesman_name) VALUES ('Ivanov');
+INSERT INTO salesmen (salesman_name) VALUES ('Poirot');
+INSERT INTO salesmen (salesman_name) VALUES ('Ivanov');
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans'::regclass::oid;
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans1_2'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen1_2'::regclass::oid;
-- Split partition has identity column:
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans2_5'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen2_5'::regclass::oid;
-ALTER TABLE salesmans SPLIT PARTITION salesmans2_5 INTO
- (PARTITION salesmans2_3 FOR VALUES FROM (2) TO (3),
- PARTITION salesmans3_4 FOR VALUES FROM (3) TO (4),
- PARTITION salesmans4_5 FOR VALUES FROM (4) TO (5));
+ALTER TABLE salesmen SPLIT PARTITION salesmen2_5 INTO
+ (PARTITION salesmen2_3 FOR VALUES FROM (2) TO (3),
+ PARTITION salesmen3_4 FOR VALUES FROM (3) TO (4),
+ PARTITION salesmen4_5 FOR VALUES FROM (4) TO (5));
-INSERT INTO salesmans (salesman_name) VALUES ('May');
-INSERT INTO salesmans (salesman_name) VALUES ('Ford');
+INSERT INTO salesmen (salesman_name) VALUES ('May');
+INSERT INTO salesmen (salesman_name) VALUES ('Ford');
-SELECT * FROM salesmans1_2;
-SELECT * FROM salesmans2_3;
-SELECT * FROM salesmans3_4;
-SELECT * FROM salesmans4_5;
+SELECT * FROM salesmen1_2;
+SELECT * FROM salesmen2_3;
+SELECT * FROM salesmen3_4;
+SELECT * FROM salesmen4_5;
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans'::regclass::oid;
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans1_2'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen1_2'::regclass::oid;
-- New partitions have identity-columns:
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans2_3'::regclass::oid;
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans3_4'::regclass::oid;
-SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmans4_5'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen2_3'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen3_4'::regclass::oid;
+SELECT attname, attidentity, attgenerated FROM pg_attribute WHERE attnum > 0 AND attrelid = 'salesmen4_5'::regclass::oid;
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
--
-- Test: split partition with deleted columns
--
-CREATE TABLE salesmans(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
+CREATE TABLE salesmen(salesman_id INT PRIMARY KEY, salesman_name VARCHAR(30)) PARTITION BY RANGE (salesman_id);
-CREATE TABLE salesmans01_10 PARTITION OF salesmans FOR VALUES FROM (1) TO (10);
+CREATE TABLE salesmen01_10 PARTITION OF salesmen FOR VALUES FROM (1) TO (10);
-- Create new partition with some deleted columns:
-CREATE TABLE salesmans10_40(d1 VARCHAR(30), salesman_id INT PRIMARY KEY, d2 INT, d3 DATE, salesman_name VARCHAR(30));
+CREATE TABLE salesmen10_40(d1 VARCHAR(30), salesman_id INT PRIMARY KEY, d2 INT, d3 DATE, salesman_name VARCHAR(30));
-INSERT INTO salesmans10_40 VALUES ('dummy value 1', 19, 100, now(), 'Ivanov');
-INSERT INTO salesmans10_40 VALUES ('dummy value 2', 20, 101, now(), 'Smirnoff');
+INSERT INTO salesmen10_40 VALUES ('dummy value 1', 19, 100, now(), 'Ivanov');
+INSERT INTO salesmen10_40 VALUES ('dummy value 2', 20, 101, now(), 'Smirnoff');
-ALTER TABLE salesmans10_40 DROP COLUMN d1;
-ALTER TABLE salesmans10_40 DROP COLUMN d2;
-ALTER TABLE salesmans10_40 DROP COLUMN d3;
+ALTER TABLE salesmen10_40 DROP COLUMN d1;
+ALTER TABLE salesmen10_40 DROP COLUMN d2;
+ALTER TABLE salesmen10_40 DROP COLUMN d3;
-ALTER TABLE salesmans ATTACH PARTITION salesmans10_40 FOR VALUES FROM (10) TO (40);
+ALTER TABLE salesmen ATTACH PARTITION salesmen10_40 FOR VALUES FROM (10) TO (40);
-INSERT INTO salesmans VALUES (1, 'Poirot');
-INSERT INTO salesmans VALUES (10, 'May');
-INSERT INTO salesmans VALUES (30, 'Ford');
+INSERT INTO salesmen VALUES (1, 'Poirot');
+INSERT INTO salesmen VALUES (10, 'May');
+INSERT INTO salesmen VALUES (30, 'Ford');
-ALTER TABLE salesmans SPLIT PARTITION salesmans10_40 INTO
- (PARTITION salesmans10_20 FOR VALUES FROM (10) TO (20),
- PARTITION salesmans20_30 FOR VALUES FROM (20) TO (30),
- PARTITION salesmans30_40 FOR VALUES FROM (30) TO (40));
+ALTER TABLE salesmen SPLIT PARTITION salesmen10_40 INTO
+ (PARTITION salesmen10_20 FOR VALUES FROM (10) TO (20),
+ PARTITION salesmen20_30 FOR VALUES FROM (20) TO (30),
+ PARTITION salesmen30_40 FOR VALUES FROM (30) TO (40));
-select * from salesmans01_10;
-select * from salesmans10_20;
-select * from salesmans20_30;
-select * from salesmans30_40;
+select * from salesmen01_10;
+select * from salesmen10_20;
+select * from salesmen20_30;
+select * from salesmen30_40;
-DROP TABLE salesmans CASCADE;
+DROP TABLE salesmen CASCADE;
--
-- Test: split sub-partition
--
2.39.3 (Apple Git-145)