Fri Aug 26 15:53:07 PDT 2005
- Previous message: [Slony1-commit] By dpage: Add missing win32 port file.
- Next message: [Slony1-commit] By darcyb: Fix execute script bug introduced by rev 1.43 I'll take the
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Log Message: ----------- Add in something observed about renaming column names... Modified Files: -------------- slony1-engine/doc/adminguide: faq.sgml (r1.42 -> r1.43) -------------- next part -------------- Index: faq.sgml =================================================================== RCS file: /usr/local/cvsroot/slony1/slony1-engine/doc/adminguide/faq.sgml,v retrieving revision 1.42 retrieving revision 1.43 diff -Ldoc/adminguide/faq.sgml -Ldoc/adminguide/faq.sgml -u -w -r1.42 -r1.43 --- doc/adminguide/faq.sgml +++ doc/adminguide/faq.sgml @@ -1603,6 +1603,46 @@ 1.34 or better; the patch was introduced in CVS version 1.34 of that file. </para> </answer> </qandaentry> + +<qandaentry><question> <para> I need to rename a column that is in the +primary key for one of my replicated tables. That seems pretty +dangerous, doesn't it? I have to drop the table out of replication +and recreate it, right?</para> +</question> + +<answer><para> Actually, this is a scenario which works out remarkably +cleanly. &slony1; does indeed make intense use of the primary key +columns, but actually does so in a manner that allows this sort of +change to be made very nearly transparently.</para> + +<para> Suppose you revise a column name, as with the SQL DDL <command> +alter table accounts alter column aid rename to cid; </command> This +revises the names of the columns in the table; it +<emphasis>simultaneously</emphasis> renames the names of the columns +in the primary key index. The result is that the normal course of +things is that altering a column name affects both aspects +simultaneously on a given node.</para> + +<para> The <emphasis>ideal</emphasis> and proper handling of this +change would involve using <xref linkend="stmtddlscript"> to deploy +the alteration, which ensures it is applied at exactly the right point +in the transaction stream on each node.</para> + +<para> Interestingly, that isn't forcibly necessary. As long as the +alteration is applied on the replication set's origin before +application on subscribers, things won't break irrepairably. Some +<command>SYNC</command> events that do not include changes to the +altered table can make it through without any difficulty... At the +point that the first update to the table is drawn in by a subscriber, +<emphasis>that</emphasis> is the point at which +<command>SYNC</command> events will start to fail, as the provider +will indicate the <quote>new</quote> set of columns whilst the +subscriber still has the <quote>old</quote> ones. If you then apply +the alteration to the subscriber, it can retry the +<command>SYNC</command>, at which point it will, finding the +<quote>new</quote> column names, work just fine. +</para> </answer></qandaentry> + </qandaset> <!-- Keep this comment at the end of the file Local variables:
- Previous message: [Slony1-commit] By dpage: Add missing win32 port file.
- Next message: [Slony1-commit] By darcyb: Fix execute script bug introduced by rev 1.43 I'll take the
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Slony1-commit mailing list