--- pgdiff 2003/08/12 11:43:36 1.2 +++ pgdiff 2003/08/12 12:00:07 1.3 @@ -298,7 +298,6 @@ $ssql .= $order; debug_sql($msql); - debug_sql($ssql); my $msth = $mdbh->prepare($msql) || die; $msth->execute() || die; @@ -392,6 +391,17 @@ return $sql; } + # update row in slave database + sub sql_update { + my $table = shift @_ || die "need table as argument"; + my $col = shift @_ || die "need col to update"; + my $val = shift @_ || die "need new val"; + my @cols_pk = @_ || die "need pk idenitifier"; + + my $sql = "udate $table set $col=".$mdbh->quote($val); + debug_sql($sql); + return $sql; + } # master slave # 1 = 1 test # 1 < 2 insert mrow @@ -407,14 +417,16 @@ ($have_mrow == HAVE_ROW && $have_srow == HAVE_ROW && $mrow->{$col} gt $srow->{$col}) ) { $diff_row++; $pk_same = 0; - print sql_delete($table,$srow,@cols_pk),"\n"; + print STDERR "EXTRA row in table '$table' pk: [".join(",",@cols_pk)."] value (".join(",",pk_val($srow,@cols_pk)).")\n" if ($verbose); + print sql_delete($table,$srow,@cols_pk),";\n"; $have_srow = FETCH_ROW; last; } elsif ( ($have_mrow == HAVE_ROW && $have_srow == NO_ROW) || ($have_mrow == HAVE_ROW && $have_srow == HAVE_ROW && $mrow->{$col} lt $srow->{$col}) ) { $diff_row++; $pk_same = 0; - print sql_insert($table,$mrow,@cols),"\n"; + print STDERR "MISSING row in table '$table' pk: [".join(",",@cols_pk)."] value (".join(",",pk_val($mrow,@cols_pk)).")\n" if ($verbose); + print sql_insert($table,$mrow,@cols),";\n"; $have_mrow = FETCH_ROW; last; } @@ -426,12 +438,11 @@ if ($mrow->{$col} ne $srow->{$col}) { $diff_row++; print STDERR "DIFF in table '$table' row ($col): [".join(",",@cols_pk)."] '$mrow->{$col}' != '$srow->{$col}'\n" if ($verbose); - print sql_delete($table,$srow,@cols_pk),"\n"; - print sql_insert($table,$mrow,@cols),"\n"; - $have_mrow = FETCH_ROW; - $have_srow = FETCH_ROW; + print sql_update($table,$col,$mrow->{$col},@cols_pk),";\n"; } } + $have_mrow = FETCH_ROW; + $have_srow = FETCH_ROW; } }