Jan Wieck jan at wi3ck.info
Mon Apr 28 06:59:44 PDT 2014
On 04/28/14 08:01, Steve Singer wrote:
> On 04/28/2014 05:19 AM, Raghav wrote:
>> postgres=# insert into dtest values (1,'D');
>> INSERT 0 1
>> postgres=# insert into dtest values (1,'D');
>
> But your indexes will also prevent something like:
>
> * Stop your slons
>
>    insert into dtest values (1,'D');
>    delete from dtest;
>    insert into dtest values (1,'D');
>
> which should be allowed.

That is problem number 1).

2) It will still allow something like

     insert into dtest values (1, 'D', 'foo');
     insert into dtest values (1, 'D', 'bar');

    since the index isn't restricted to the primary key columns of the
    table. And since it is shared by all user tables, that's impossible.

3) It will also not prevent something like this:

     insert into dtest values (1, 'D');
     -- wait for 30 minutes in which slony cleanup switches logs and
     -- the index corruption happens
     insert into dtest values (1, 'D');

In summary, attempting to guard against possible PostgreSQL bugs that 
corrupt data is futile. Even if we could figure this one out, the next 
problem would be to guard against a corruption of the sl_log_N tables.


Regards,
Jan


-- 
Jan Wieck
Senior Software Engineer
http://slony.info


More information about the Slony1-general mailing list