/[pgdiff]/pgdiff
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /pgdiff

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.5 by dpavlin, Tue Aug 12 20:38:02 2003 UTC revision 1.6 by dpavlin, Wed Aug 13 13:27:32 2003 UTC
# Line 266  foreach my $table (@tables) { Line 266  foreach my $table (@tables) {
266    
267                  # insert into slave database                  # insert into slave database
268                  sub sql_insert {                  sub sql_insert {
269                            my $dbh = shift @_ || die "need dbh";
270                          my $table = shift @_ || die "need table as argument";                          my $table = shift @_ || die "need table as argument";
271                          my $row = shift @_ || die "need row data";                          my $row = shift @_ || die "need row data";
272                          my @cols = @_;                          my @cols = @_;
# Line 273  foreach my $table (@tables) { Line 274  foreach my $table (@tables) {
274                          my $sql = "insert into $table (".join(",",@cols).") values (";                          my $sql = "insert into $table (".join(",",@cols).") values (";
275                          my $comma = "";                          my $comma = "";
276                          foreach my $col (@cols) {                          foreach my $col (@cols) {
277                                  $sql .= $comma.$mdbh->quote($row->{$col});                                  $sql .= $comma.$dbh->quote($row->{$col});
278                                  $comma = ",";                                  $comma = ",";
279                          }                          }
280                          $sql.=")";                          $sql.=")";
# Line 283  foreach my $table (@tables) { Line 284  foreach my $table (@tables) {
284    
285                  # delete from slave database                  # delete from slave database
286                  sub sql_delete {                  sub sql_delete {
287                            my $dbh = shift @_ || die "need dbh";
288                          my $table = shift @_ || die "need table as argument";                          my $table = shift @_ || die "need table as argument";
289                          my $row = shift @_ || die "need row as argument";                          my $row = shift @_ || die "need row as argument";
290                          my @cols_pk = @_;                          my @cols_pk = @_;
291    
292                          my $where = sql_where(@cols_pk);                          my $where = sql_where(@cols_pk);
293    
294                          my $sql = "delete from $table ";                          my $sql = "delete from $table";
295                          foreach my $col (@cols_pk) {                          foreach my $col (@cols_pk) {
296                                  my $val = $sdbh->quote($row->{$col}) || die "can't find value in row for col $col";                                  my $val = $dbh->quote($row->{$col}) || die "can't find value in row for col $col";
297                                  $where =~ s/\?/$val/;                                  $where =~ s/\?/$val/;
298                          }                          }
299                          $sql .= $where;                          $sql .= $where;
# Line 301  foreach my $table (@tables) { Line 303  foreach my $table (@tables) {
303    
304                  # update row in slave database                  # update row in slave database
305                  sub sql_update {                  sub sql_update {
306                            my $dbh = shift @_ || die "need dbh";
307                          my $table = shift @_ || die "need table as argument";                          my $table = shift @_ || die "need table as argument";
308                          my $col = shift @_ || die "need col to update";                          my $col = shift @_ || die "need col to update";
309                          my $val = shift @_ || die "need new val";                          my $row = shift @_ || die "need row";
310                          my @cols_pk = @_ || die "need pk idenitifier";                          my @cols_pk = @_;
311    
312                          my $sql = "udate $table set $col=".$mdbh->quote($val);                          my $sql = "update $table set $col=".$dbh->quote($row->{$col});
313                            my $where = sql_where(@cols_pk);
314                            foreach my $col (@cols_pk) {
315                                    my $val = $dbh->quote($row->{$col}) || die "can't find value in row for col $col";
316                                    $where =~ s/\?/$val/;
317                            }
318                            $sql .= $where;
319                          debug_sql($sql);                          debug_sql($sql);
320                          return $sql;                          return $sql;
321                  }                  }
# Line 326  foreach my $table (@tables) { Line 335  foreach my $table (@tables) {
335                                  $diff_row++;                                  $diff_row++;
336                                  $pk_same = 0;                                  $pk_same = 0;
337                                  print STDERR "EXTRA row in table '$table' pk: [".join(",",@cols_pk)."] value (".join(",",pk_val($srow,@cols_pk)).")\n" if ($verbose);                                  print STDERR "EXTRA row in table '$table' pk: [".join(",",@cols_pk)."] value (".join(",",pk_val($srow,@cols_pk)).")\n" if ($verbose);
338                                  print sql_delete($table,$srow,@cols_pk),";\n";                                  print sql_delete($sdbh,$table,$srow,@cols_pk),";\n";
339                                  $have_srow = FETCH_ROW;                                  $have_srow = FETCH_ROW;
340                                  last;                                  last;
341                          } elsif ( ($have_mrow == HAVE_ROW && $have_srow == NO_ROW) ||                          } elsif ( ($have_mrow == HAVE_ROW && $have_srow == NO_ROW) ||
# Line 334  foreach my $table (@tables) { Line 343  foreach my $table (@tables) {
343                                  $diff_row++;                                  $diff_row++;
344                                  $pk_same = 0;                                  $pk_same = 0;
345                                  print STDERR "MISSING row in table '$table' pk: [".join(",",@cols_pk)."] value (".join(",",pk_val($mrow,@cols_pk)).")\n" if ($verbose);                                  print STDERR "MISSING row in table '$table' pk: [".join(",",@cols_pk)."] value (".join(",",pk_val($mrow,@cols_pk)).")\n" if ($verbose);
346                                  print sql_insert($table,$mrow,@cols),";\n";                                  print sql_insert($mdbh,$table,$mrow,@cols),";\n";
347                                  $have_mrow = FETCH_ROW;                                  $have_mrow = FETCH_ROW;
348                                  last;                                  last;
349                          }                          }
# Line 346  foreach my $table (@tables) { Line 355  foreach my $table (@tables) {
355                                  if ($mrow->{$col} ne $srow->{$col}) {                                  if ($mrow->{$col} ne $srow->{$col}) {
356                                          $diff_row++;                                          $diff_row++;
357                                          print STDERR "DIFF in table '$table' row ($col): [".join(",",@cols_pk)."] '$mrow->{$col}' != '$srow->{$col}'\n" if ($verbose);                                          print STDERR "DIFF in table '$table' row ($col): [".join(",",@cols_pk)."] '$mrow->{$col}' != '$srow->{$col}'\n" if ($verbose);
358                                          print sql_update($table,$col,$mrow->{$col},@cols_pk),";\n";                                          print sql_update($mdbh,$table,$col,$mrow,@cols_pk),";\n";
359                                  }                                  }
360                          }                          }
361                          $have_mrow = FETCH_ROW;                          $have_mrow = FETCH_ROW;

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.26