Christopher Browne cbbrowne
Thu Oct 6 22:14:07 PDT 2005
Andreas Pflug <pgadmin at pse-consulting.de> writes:
> Tim Goodaire wrote:
>> On Thu, Oct 06, 2005 at 11:24:52AM +0000, Andreas Pflug wrote:
>>
>>>Christopher Browne wrote:
>>>
>>>
>>>>It's just that "completeness sake" dictates mentioning that this isn't
>>>>the only scenario where a set can have no tables.  I can't call the
>>>>problem "solved" unless all of the scenarios are addressed.
>>>
>>> A reasonable use-case of empty sets is replication of ddl
>>> scripts. One might like a set dedicated to ddl scripts only.
>> You don't replicate ddl scripts. You replicate tables and sequences
>> only. A ddl script is applied to a set, but if that set doesn't contain
>> anything, I don't know how useful it'd be.
>
> So you don't call it "replication of ddl scripts", but "applying ddl
> scripts to a set". The result is the same, the ddl is replicated...
>
> You might need to target such ddl changes to all nodes in a
> replication topology (your enterprise wide schema), but like your
> data replicated individually between nodes. That's the case I'm
> talking about.

Well, the sort of DDL change that comes to mind is where you want to
add some new tables and/or sequences, and ultimately set that up as a
new replication set.

In that case, it seems way simpler to me to:

a) Out of band (e.g. - via plain psql) apply the creation of the new
tables to each relevant node

b) Create the new set on the origin for the new tables

c) Add the new tables to the new set, and start it replicating.

d) Ideally, once replication is running, merge the set with some
"main" set so there are no longer extra sets to track.

We have done this quite frequently as our applications have evolved
over time, and this has worked out quite well.  It avoids the dangers
involved in EXECUTE SCRIPT...

I guess what I have a problem seeing is why you need to use EXECUTE
SCRIPT for ddl changes that haven't got anything to do with
replication.

I could be convinced if I saw a reasonably compelling example, but,
not to be troublesome, but your "use case" has seemed pretty vague.
-- 
output = ("cbbrowne" "@" "ca.afilias.info")
<http://dev6.int.libertyrms.com/>
Christopher Browne
(416) 673-4124 (land)


More information about the Slony1-general mailing list