mirror of
https://github.com/postgres/postgres.git
synced 2025-07-28 23:42:10 +03:00
Add regression test for ATTACH PARTITION
This test case uses a SQL function as partitioning operator, whose
evaluation results in the table's relcache being rebuilt partway
through the execution of an ATTACH PARTITION command.
It is extracted from 39808e8
, which fixed a bug where this test case
failed on master and REL_11_STABLE, but passed on REL_10_STABLE. The
partitioning code has changed a lot during v11 development, so this
makes sure that any patch applied to REL_10_STABLE fixing a
partition-related bug does not break it again.
Author: Amit Langote
Reviewed-by: Michaël Paquier, Álvaro Herrera
Discussion: https://postgr.es/m/CAKcux6=nTz9KSfTr_6Z2mpzLJ_09JN-rK6=dWic6gGyTSWueyQ@mail.gmail.com
This commit is contained in:
@ -3669,3 +3669,18 @@ alter table temp_part_parent attach partition temp_part_child
|
||||
for values in (1, 2); -- ok
|
||||
drop table perm_part_parent cascade;
|
||||
drop table temp_part_parent cascade;
|
||||
-- test case where the partitioning operator is a SQL function whose
|
||||
-- evaluation results in the table's relcache being rebuilt partway through
|
||||
-- the execution of an ATTACH PARTITION command
|
||||
create function at_test_sql_partop (int4, int4) returns int language sql
|
||||
as $$ select case when $1 = $2 then 0 when $1 > $2 then 1 else -1 end; $$;
|
||||
create operator class at_test_sql_partop for type int4 using btree as
|
||||
operator 1 < (int4, int4), operator 2 <= (int4, int4),
|
||||
operator 3 = (int4, int4), operator 4 >= (int4, int4),
|
||||
operator 5 > (int4, int4), function 1 at_test_sql_partop(int4, int4);
|
||||
create table at_test_sql_partop (a int) partition by range (a at_test_sql_partop);
|
||||
create table at_test_sql_partop_1 (a int);
|
||||
alter table at_test_sql_partop attach partition at_test_sql_partop_1 for values from (0) to (10);
|
||||
drop table at_test_sql_partop;
|
||||
drop operator class at_test_sql_partop using btree;
|
||||
drop function at_test_sql_partop;
|
||||
|
@ -2388,3 +2388,19 @@ alter table temp_part_parent attach partition temp_part_child
|
||||
for values in (1, 2); -- ok
|
||||
drop table perm_part_parent cascade;
|
||||
drop table temp_part_parent cascade;
|
||||
|
||||
-- test case where the partitioning operator is a SQL function whose
|
||||
-- evaluation results in the table's relcache being rebuilt partway through
|
||||
-- the execution of an ATTACH PARTITION command
|
||||
create function at_test_sql_partop (int4, int4) returns int language sql
|
||||
as $$ select case when $1 = $2 then 0 when $1 > $2 then 1 else -1 end; $$;
|
||||
create operator class at_test_sql_partop for type int4 using btree as
|
||||
operator 1 < (int4, int4), operator 2 <= (int4, int4),
|
||||
operator 3 = (int4, int4), operator 4 >= (int4, int4),
|
||||
operator 5 > (int4, int4), function 1 at_test_sql_partop(int4, int4);
|
||||
create table at_test_sql_partop (a int) partition by range (a at_test_sql_partop);
|
||||
create table at_test_sql_partop_1 (a int);
|
||||
alter table at_test_sql_partop attach partition at_test_sql_partop_1 for values from (0) to (10);
|
||||
drop table at_test_sql_partop;
|
||||
drop operator class at_test_sql_partop using btree;
|
||||
drop function at_test_sql_partop;
|
||||
|
Reference in New Issue
Block a user