diff -pur rserv/Replicate rserv-new/Replicate
--- bin/Replicate	2003-06-19 19:15:09.000000000 -0700
+++ rserv-new/Replicate	2003-06-19 19:14:23.000000000 -0700
@@ -32,6 +32,7 @@ if (defined($opt_help) || (scalar(@ARGV)
 
 my $master = $ARGV[0] || "master";
 my $slave = $ARGV[1] || "slave";
+my $tables = $#ARGV < 2 ? undef : { map {($_, undef)} @ARGV[2..$#ARGV] };
 my $server = 0;
 
 my $minfo = "dbname=$master";
@@ -56,7 +57,7 @@ SyncSync($mconn, $sconn);
 my $outf = new IO::File;
 open $outf, ">$snapshot";
 print "\n>>>>>>>>>>>>> Prepare Snapshot\n\n" if ($verbose);
-$res = PrepareSnapshot($mconn, $outf, $server);
+$res = PrepareSnapshot($mconn, $outf, $server, $tables);
 close $outf;
 die "\n>>>>>>>>>>>>> ERROR\n" if $res < 0;
 if ($res == 0)
@@ -68,7 +69,7 @@ if ($res == 0)
 my $inpf = new IO::File;
 open $inpf, "<$snapshot";
 print "\n>>>>>>>>>>>>> Apply Snapshot\n\n" if ($verbose);
-$res = ApplySnapshot($sconn, $inpf);
+$res = ApplySnapshot($sconn, $inpf, $tables);
 close $inpf;
 die "\n>>>>>>>>>>>>> ERROR\n" if $res < 0;
 
diff -pur rserv/RServ.pm rserv-new/RServ.pm
--- share/RServ.pm	2003-06-19 19:14:59.000000000 -0700
+++ rserv-new/RServ.pm	2003-06-19 19:34:47.000000000 -0700
@@ -19,7 +19,7 @@ my %Stables = ();
 
 sub PrepareSnapshot
 {
-	my ($conn, $outf, $server) = @_; # (@_[0], @_[1], @_[2]);
+	my ($conn, $outf, $server, $onlytables) = @_; # (@_[0], @_[1], @_[2]);
 
 	my $result = $conn->exec("BEGIN");
 	if ($result->resultStatus ne PGRES_COMMAND_OK)
@@ -52,6 +52,10 @@ sub PrepareSnapshot
 	while (@row = $result->fetchrow)
 	{
 	#	printf "$row[0], $row[1], $row[2]\n";
+		if (ref($onlytables) eq 'HASH') {
+			next unless (exists $onlytables->{$row[1]});
+			$onlytables->{$row[1]} = $row[0] unless ($onlytables->{$row[1]});
+		}
 		push @{$Mtables{$row[0]}}, $row[1], $row[2];
 	}
 
@@ -232,7 +236,7 @@ sub GetSYNCID
 
 sub CleanLog
 {
-	my ($conn, $howold) = @_; # (@_[0], @_[1]);
+	my ($conn, $howold, $onlytables) = @_; # (@_[0], @_[1]);
 
 	my $result = $conn->exec("BEGIN");
 	if ($result->resultStatus ne PGRES_COMMAND_OK)
@@ -274,6 +278,11 @@ sub CleanLog
 	my $alist = join(',', keys %active);
 	my $sinfo = "logid < $maxid";
 	$sinfo .= " and logid not in ($alist)" if $alist ne '';
+	#if (ref($onlytables) eq 'HASH') {
+	#	foreach my $onlytable (keys %{$onlytables}) {
+	#		$sinfo
+	#	}
+	#}
 	
 	$sql = "delete from _RSERV_LOG_ where " . 
 		"logtime < now() - '$howold second'::interval and $sinfo";
@@ -302,7 +311,7 @@ sub CleanLog
 
 sub ApplySnapshot
 {
-	my ($conn, $inpf) = @_; # (@_[0], @_[1]);
+	my ($conn, $inpf, $onlytables) = @_; # (@_[0], @_[1]);
 
 	my $result = $conn->exec("BEGIN");
 	if ($result->resultStatus ne PGRES_COMMAND_OK)
@@ -336,6 +345,10 @@ sub ApplySnapshot
 	while (@row = $result->fetchrow)
 	{
 	#	printf "	%s	%s\n", $row[1], $row[0];
+		if (ref($onlytables) eq 'HASH') {
+			next unless (exists $onlytables->{$row[1]});
+			$onlytables->{$row[1]} = $row[0] unless ($onlytables->{$row[1]});
+		}
 		push @{$Stables{$row[1]}}, $row[0], $row[2], $row[3];
 	}
