slony ddl changes do nothing - Mailing list pgadmin-support

From Kevin Horan
Subject slony ddl changes do nothing
Date
Msg-id 4A93764D.30002@cs.ucr.edu
Whole thread Raw
List pgadmin-support
Whenever I select a slony cluster in the "use replication" drop down 
of a ddl change dialog box, the change is not made either on the local 
database or on the replicated database. For example, to create a new 
sequence I select "new sequence" from the pop-up menu. If I leave "use 
replication" blank, it creates the sequence locally just fine. If I 
select an existing slony cluster, no change is made.  The same thing 
happens for other ddl changes also, like adding a new column to a table. 
This was tested with pgadmin 1.10.0 and 1.8.   I turned on debug logging on pgadmin and I see this:

2009-08-24 21:56:02 QUERY  : Void query (localhost:5431): SELECT 
_pgbench_example2.ddlscript_prepare(1, 0);
SELECT _pgbench_example2.ddlscript_complete(1, 'CREATE SEQUENCE 
public.ts3;ALTER TABLE public.ts3 OWNER TO admin;', 0);

So it seems that pgbench is sending some commands to slony, but they 
don't do anything, even if  I run those exact commands manually.
Inspecting the ddlscript_complete function, we have:
                                         
declare                                                                                     
                                               
p_set_id                        alias for 
$1;                                                                               
p_script                        alias for 
$2;                                                                               p_only_on_node          
alias for $3;                                                                                v_set_origin            
int4;                                                                                               
begin                                                                                         
                                               perform 
"_pgbench_example2".updateRelname(p_set_id, 
p_only_on_node);                                                                if p_only_on_node = -1 
then
return 
 
"_pgbench_example2".createEvent('_pgbench_example2', 'DDL_SCRIPT',
           
 
p_set_id::text, p_script::text, p_only_on_node::text);                                                              end

if;                                                                               
                                               return 
NULL;                                                                          
                                       end;             
So it seems the the script, p_script, is totally ignored unless 
p_only_on_node equals -1, which it does not, because pgadmin does not 
set it to -1. I'm not sure that it should set it to -1, I just know that 
the way pgadmin is doing it does not seem to work.
   My setup is very simple, just replicating pgbench from one master to 
a slave. Replication is currently working fine, I can update values, do 
failover, add sets and such all from pgadmin just fine, only ddl changes 
don't work.

Kevin


pgadmin-support by date:

Previous
From: Dave Page
Date:
Subject: Re: Domain wizard bug
Next
From: Kevin Field
Date:
Subject: Re: sudden program termination: no warning, error, or crash