> Hello 
> here is an unexpected error found while testing IVM v11 patches
> 
> create table b1 (id integer, x numeric(10,3));
> create incremental materialized view mv1 
> as select id, count(*),sum(x) from b1 group by id;
> 
> do $$ 
> declare 
>       i integer;
> begin 
>       for i in 1..10000 
>       loop 
>               insert into b1 values (1,1); 
>       end loop; 
> end;
> $$
> ;
> 
> ERROR:  out of shared memory
> HINT:  You might need to increase max_locks_per_transaction.
> CONTEXT:  SQL statement "DROP TABLE pg_temp_3.pg_temp_66154"
> SQL statement "insert into b1 values (1,1)"
> PL/pgSQL function inline_code_block line 1 at SQL statement

Yeah, following code generates similar error as well even without IVM.

do $$ 
declare 
        i integer;
begin 
        for i in 1..10000
        loop 
                create temp table mytemp(i int);
                drop table mytemp;
        end loop; 
end;
$$
;

ERROR:  out of shared memory
HINT:  You might need to increase max_locks_per_transaction.
CONTEXT:  SQL statement "create temp table mytemp(i int)"
PL/pgSQL function inline_code_block line 7 at SQL statement

I think we could avoid such an error in IVM by reusing a temp table in
a session or a transaction.

Best regards,
--
Tatsuo Ishii
SRA OSS, Inc. Japan
English: http://www.sraoss.co.jp/index_en.php
Japanese:http://www.sraoss.co.jp


Reply via email to