/[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.7 by dpavlin, Fri Aug 15 22:06:19 2003 UTC revision 1.13 by dpavlin, Fri Oct 31 11:19:45 2003 UTC
# Line 43  Options: Line 43  Options:
43          --slavehost=hostname --slaveport=port          --slavehost=hostname --slaveport=port
44          --slaveuser=username --slavepassword=string          --slaveuser=username --slavepassword=string
45          --slavefile=filename          --slavefile=filename
46          --tables[s]=table[,table...]          --table[s]=table[,table...]
47  ";  ";
48  #    exit ((scalar(@ARGV) < 2)? 1:0);  #    exit ((scalar(@ARGV) < 2)? 1:0);
49      exit;      exit;
# Line 119  sub debug { Line 119  sub debug {
119  $verbose = 1 if ($debug);  $verbose = 1 if ($debug);
120    
121  # init object for scheme in master database  # init object for scheme in master database
122  my $mscheme = new Pg::Scheme( 'dbh' => $mdbh, 'DEBUG' => 0 ) || die "can't query schema";  my $mscheme = new Pg::Scheme( 'dbh' => $mdbh, 'DEBUG' => 0 ) || die "can't query master schema";
123    my $sscheme = new Pg::Scheme( 'dbh' => $sdbh, 'DEBUG' => 0 ) || die "can't query slave schema";
124    
125  # which tables to compare?  # which tables to compare?
126    
# Line 127  my @tables = $mscheme->list_tables($tabl Line 128  my @tables = $mscheme->list_tables($tabl
128    
129  debug "Comparing tables: ".join(", ",@tables)."\n";  debug "Comparing tables: ".join(", ",@tables)."\n";
130    
131    # start transaction
132    print "begin work;\n";
133    
134    # disable active triggers on slave database
135    my @triggers = $sscheme->get_activetriggers();
136    
137    foreach my $tr (@triggers) {
138            print "update pg_trigger set tgenabled = false where tgname='$tr';\n";
139    }
140    
141  my $cols;  my $cols;
142  my $diff_total = 0;  my $diff_total = 0;
143    
# Line 134  foreach my $table (@tables) { Line 145  foreach my $table (@tables) {
145    
146          my $sth;          my $sth;
147    
148    print "-- schema...\n";
149          # diff schema          # diff schema
150            foreach my $row (@{$mscheme->pg_attribute($table)}) {
151    #               print Dumper($row);
152            }
153    
154          # all colums (for insert)  print "-- constraints...\n";
155            # diff constraints
156            foreach my $tr (@{$mscheme->triggers($table)}) {
157    #               print Dumper($tr);
158            }
159    print "-- triggers...\n";
160            # diff triggers
161            foreach my $tr (@{$mscheme->triggers($table)}) {
162    #               print Dumper($tr);
163            }
164    
165            # all columns (for insert)
166          my @cols = @{$mscheme->cols($table)};          my @cols = @{$mscheme->cols($table)};
167    
168          # colums compared by a=b          # columns compared by a=b
169          my @cols_notnull = @{$mscheme->cols_notnull($table)};          my @cols_notnull = @{$mscheme->cols_notnull($table)};
170    
171          # colums compared by a=b or a is null and b is null          # columns compared by a=b or a is null and b is null
172          my @cols_null = @{$mscheme->cols_null($table)};          my @cols_null = @{$mscheme->cols_null($table)};
173    
174          # primary key columns          # primary key columns
# Line 152  foreach my $table (@tables) { Line 178  foreach my $table (@tables) {
178          my @cols_cmp = @{$mscheme->cols_notpk($table)};          my @cols_cmp = @{$mscheme->cols_notpk($table)};
179    
180          my @cols_skip;  # skipped columns          my @cols_skip;  # skipped columns
181          my @cols_test;  # all colums to test (without skipped)          my @cols_test;  # all columns to test (without skipped)
182    
183          foreach my $row (@{$mscheme->pg_attribute($table)}) {          foreach my $row (@{$mscheme->pg_attribute($table)}) {
184                  # attname | format_type | attnotnull | atthasdef | attnum                  # attname format_type attnotnull atthasdef attnum default references
185    
186                  # FIXME: do something with attributes which shouldn't be compared                  # FIXME: do something with attributes which shouldn't be compared
187                  # (date, time, datetime, timestamp)                  # (date, time, datetime, timestamp)
# Line 219  foreach my $table (@tables) { Line 245  foreach my $table (@tables) {
245    
246          debug_sql($msql);          debug_sql($msql);
247    
248          my $msth = $mdbh->prepare($msql) || die;          my $msth = $mdbh->prepare($msql) || die $mdbh->errstr;
249          $msth->execute() || die;          $msth->execute() || die $msth->errstr;
250    
251          my $ssth = $sdbh->prepare($ssql) || die;          my $ssth = $sdbh->prepare($ssql) || die $sdbh->errstr;
252          $ssth->execute() || die;          $ssth->execute() || die $ssth->errstr;
253    
254          my $diff_row = 0;          my $diff_row = 0;
255    
# Line 381  foreach my $table (@tables) { Line 407  foreach my $table (@tables) {
407    
408  if ($verbose) {  if ($verbose) {
409          if ($diff_total == 0) {          if ($diff_total == 0) {
410                  print STDERR "databases are same";                  print STDERR "databases are same\n";
411          } elsif ($diff_total > 0) {          } elsif ($diff_total > 0) {
412                  print STDERR "$diff_total differences in all tables\n";                  print STDERR "$diff_total differences in all tables\n";
413          } else {          } else {
# Line 389  if ($verbose) { Line 415  if ($verbose) {
415          }          }
416  }  }
417    
418    # enable triggers again on slave
419    foreach my $tr (@triggers) {
420            print "update pg_trigger set tgenabled = true where tgname='$tr';\n";
421    }
422    # end transaction
423    print "commit;\n";
424    
425  $mdbh->disconnect();  $mdbh->disconnect();
426  $sdbh->disconnect();  $sdbh->disconnect();

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.26