Jan Wieck JanWieck
Thu Oct 6 21:49:17 PDT 2005
On 10/6/2005 2:01 PM, Tim Goodaire wrote:

> On Thu, Oct 06, 2005 at 04:57:56PM +0000, Andreas Pflug wrote:
>> 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.
> 
> Ok. It's becoming a little more clear for me. I think. 
> 
> You would like to be able to apply ddl changes to all sets in a cluster.

The problem ... and the reason why a DDL script is tied to a set ... is 
that in order to perform DDL statements on replicated tables, slony has 
to UNCORRUPT the system catalog before executing them on the slaves.

The idea originally was, that if a node is not subscribed to a set, then 
it doesn't even need to have those tables at all. I which case the DDL 
script would fail and break replication. It doesn't make much sense to 
use an empty pseudo set, since any node not currently subscribed to the 
set can be fed the DDL just fine via psql. No need for synchronization 
in that case.

However, I will check that DDL script execution does not only uncorrupt 
the catalog for the one set that is specified, but for all replicated 
tables. Otherwise it'd be impossible to create a script that affects 
tables of two or more sets at once.


Jan


-- 
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck at Yahoo.com #


More information about the Slony1-general mailing list