5

I have created following function in pgpool .

CREATE OR REPLACE Function fun1(Id int)
RETURNS boolean as $executionStatus$
DECLARE

BEGIN
    DELETE FROM table1 where table1_id =  Id ; 
    DELETE from table2 where table2_id =  Id ;
    DELETE from table3 where table3_id =  Id ;
    RETURN true;
END;
$executionStatus$ LANGUAGE plpgsql;

I run following command inside the postgres shell of pgpool

select fun1(1);

It is deleted the data only from master. I tried again then it is deleted from different server.So replication fails in this case. But if i use delete queries separately then it is working fine.It is deleting data from all servers.

DELETE FROM table1 where table1_id =  1 ;DELETE from table2 where table2_id =  1 ;DELETE from table3 where table3_id =  1 ;

Please let me know how to fix this issue .

Priyesh Karatha
  • 604
  • 5
  • 18

1 Answers1

3

I found answer myself In replication mode (replication_mode = on),the SELECT is load balanced and only one of the PostgreSQL servers receives the command. Solution would be:

1) Add "/*REPLICATION*/" comment in front of the SELECT.

2) Add func1 to the black_function_list.

Priyesh Karatha
  • 604
  • 5
  • 18