From: dpavlin Date: Tue, 31 Jan 2006 16:29:30 +0000 (+0000) Subject: r9164@llin: dpavlin | 2006-01-31 17:29:14 +0100 X-Git-Url: http://git.rot13.org/?a=commitdiff_plain;h=1784580ff1865f415b983ecde16820d56ae8cd37;p=BackupPC.git r9164@llin: dpavlin | 2006-01-31 17:29:14 +0100 create trigger, small fixes for deployment without HyperEstraier git-svn-id: svn+ssh://llin/home/dpavlin/private/svn/BackupPC/trunk@325 8392b6e1-25fa-0310-8288-cc32f8e212ea --- diff --git a/bin/BackupPC_updatedb b/bin/BackupPC_updatedb index 5e7fcf7..fc8fbac 100755 --- a/bin/BackupPC_updatedb +++ b/bin/BackupPC_updatedb @@ -126,8 +126,8 @@ sub hest_update { my $offset = 0; my $added = 0; - print " opening index $index_node_url"; if ($index_node_url) { + print " opening index $index_node_url"; $hest_node ||= Search::Estraier::Node->new( url => $index_node_url, user => 'admin', @@ -135,8 +135,6 @@ sub hest_update { croak_on_error => 1, ); print " via node URL"; - } else { - die "don't know how to use Hyper Estraier Index $index_node_url"; } my $results = 0; @@ -199,7 +197,7 @@ sub hest_update { while (my $row = $sth->fetchrow_hashref()) { my $uri = $row->{hname} . ':' . $row->{sname} . '#' . $row->{backupnum} . ' ' . $row->{filepath}; - unless ($skip_check) { + unless ($skip_check && $hest_node) { my $id = $hest_node->uri_to_id($uri); next if ($id && $id == -1); } @@ -304,7 +302,7 @@ if ($opt{c}) { size bigint not null, inc_size bigint not null default -1, inc_deleted boolean default false, - parts integer not null default 1, + parts integer not null default 0, PRIMARY KEY(id) ); @@ -384,6 +382,33 @@ if ($opt{c}) { $dbh->do( qq{ CREATE SEQUENCE $seq } ); } + print " creating triggers "; + $dbh->do( qq{ + create or replace function backup_parts_check() returns trigger as ' + declare + b_parts integer; + b_counted integer; + b_id integer; + begin + if (TG_OP=''UPDATE'') then + b_id := old.id; + b_parts := old.parts; + elsif (TG_OP = ''INSERT'') then + b_id := new.id; + b_parts := new.parts; + end if; + b_counted := (select count(*) from backup_parts where backup_id = b_id); + if ( b_parts != b_counted ) then + raise exception ''Update of backup % aborted, requested % parts and there are really % parts'', b_id, b_parts, b_counted; + end if; + return null; + end; + ' language plpgsql; + + create trigger do_backup_parts_check + after insert or update or delete on backups + for each row execute procedure backup_parts_check(); + }); print "...\n";