Percona-Lab / pg_tde

MIT License
107 stars 19 forks source link

Update the partitioned table with pg_tde as default table access method crash the server #62

Closed codeforall closed 10 months ago

codeforall commented 11 months ago

Update the partitioned table with pg_tde, as the default table access method crashes the server

Reproducible test case Note: Occasionally the test case runs without a problem, and requires two or three tries to reproduce the crash

SET default_table_access_method TO 'pg_tde';
drop table if exists mlparted_tab cascade;
drop table if exists some_tab cascade;
drop table if exists some_tab_child cascade;

create table some_tab (a int) ;
insert into some_tab values (0); 
create table some_tab_child () inherits (some_tab);
insert into some_tab_child values (1);

create table mlparted_tab (a int, b char, c text) partition by list (a) ; 
create table mlparted_tab_part1 partition of mlparted_tab for values in (1); 
create table mlparted_tab_part2 partition of mlparted_tab for values in (2) partition by list (b); 
create table mlparted_tab_part3 partition of mlparted_tab for values in (3); 
create table mlparted_tab_part2a partition of mlparted_tab_part2 for values in ('a');
create table mlparted_tab_part2b partition of mlparted_tab_part2 for values in ('b');
insert into mlparted_tab values (1, 'a'), (2, 'a'), (2, 'b'), (3, 'a');

UPDATE mlparted_tab mlp set c = 'xxx'
 FROM
   (SELECT a from some_tab union all select a+1 from some_tab) ss (a)
 WHERE (mlp.a = ss.a and mlp.b = 'b') or mlp.a = 3; 

select tableoid::regclass::text as relname, mlparted_tab.* from mlparted_tab order by 1,2;