/[rserv]/bin/MasterAddTable
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 /bin/MasterAddTable

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

revision 1.2 by dpavlin, Tue Aug 5 09:52:36 2003 UTC revision 1.6 by dpavlin, Wed Oct 29 18:00:18 2003 UTC
# Line 1  Line 1 
1  #!/usr/bin/perl  #!/usr/bin/perl -w
2  # MasterAddTable  # MasterAddTable
3  # Vadim Mikheev, (c) 2000, PostgreSQL Inc.  # Vadim Mikheev, (c) 2000, PostgreSQL Inc.
4    
# Line 6  eval '(exit $?0)' && eval 'exec perl -S Line 6  eval '(exit $?0)' && eval 'exec perl -S
6      & eval 'exec perl -S $0 $argv:q'      & eval 'exec perl -S $0 $argv:q'
7      if 0;      if 0;
8    
9    use strict;
10  use Pg;  use Pg;
11  use Getopt::Long;  use Getopt::Long;
12    
13  $| = 1;  $| = 1;
14    
15  $result = GetOptions("debug!", "verbose!", "help",  my ($debug,$verbose) = (0,0);
16                       "host=s", "user=s", "password=s");  my ($help,$masterhost,$masterport,$masteruser,$masterpassword);
17    
18  my $debug = $opt_debug || 0;  my $mserver=0;
 my $verbose = $opt_verbose || 0;  
19    
20  if (defined($opt_help) || (scalar(@ARGV) < 3)) {  my $result = GetOptions(
21      print "Usage: $0 --host=name --user=name --password=string masterdb table column\n";          "debug!" => \$debug, "verbose!" => \$verbose, "help" => \$help,
22      exit ((scalar(@ARGV) < 3)? 1: 0);          "masterhost=s" => \$masterhost, "masterport=i" => \$masterport,
23            "masteruser=s" => \$masteruser, "masterpassword=s" => \$masterpassword,
24            "masterserver=i" => \$mserver,
25            );
26    
27    if (defined($help) || (scalar(@ARGV) < 3)) {
28        print "Usage: $0 [options] masterdb table column
29    Options:
30            --masterhost=hostname --masterport=port
31            --masteruser=username --masterpassword=string
32            [--masterserver=master_number]
33    ";
34        exit ((scalar(@ARGV) < 3)? 1:0);
35  }  }
36    
37  my $dbname = $ARGV[0];  my $dbname = $ARGV[0];
# Line 27  my $table = $ARGV[1]; Line 39  my $table = $ARGV[1];
39  my $keyname = $ARGV[2];  my $keyname = $ARGV[2];
40    
41  my $minfo = "dbname=$dbname";  my $minfo = "dbname=$dbname";
42  $minfo = "$minfo host=$opt_host" if (defined($opt_host));  $minfo = "$minfo host=$masterhost" if (defined($masterhost));
43  $minfo = "$minfo user=$opt_user" if (defined($opt_user));  $minfo = "$minfo port=$masterport" if (defined($masterport));
44  $minfo = "$minfo password=$opt_password" if (defined($opt_password));  $minfo = "$minfo user=$masteruser" if (defined($masteruser));
45    $minfo = "$minfo password=$masterpassword" if (defined($masterpassword));
46    
47    print STDERR "master server nr: $mserver\n" if ($debug);
48    
49  my $conn = Pg::connectdb($minfo);  my $conn = Pg::connectdb($minfo);
50  if ($conn->status != PGRES_CONNECTION_OK) {  if ($conn->status != PGRES_CONNECTION_OK) {
# Line 37  if ($conn->status != PGRES_CONNECTION_OK Line 52  if ($conn->status != PGRES_CONNECTION_OK
52      exit 1;      exit 1;
53  }  }
54    
55  my $result = $conn->exec("BEGIN");  $result = $conn->exec("BEGIN");
56  die $conn->errorMessage if $result->resultStatus ne PGRES_COMMAND_OK;  die $conn->errorMessage if $result->resultStatus ne PGRES_COMMAND_OK;
57    
58  $result = $conn->exec("select pgc.oid, pga.attnum from pg_class pgc" .  $result = $conn->exec("select pgc.oid, pga.attnum from pg_class pgc" .
# Line 47  $result = $conn->exec("select pgc.oid, p Line 62  $result = $conn->exec("select pgc.oid, p
62  die $conn->errorMessage if $result->resultStatus ne PGRES_TUPLES_OK;  die $conn->errorMessage if $result->resultStatus ne PGRES_TUPLES_OK;
63    
64  my @row = $result->fetchrow;  my @row = $result->fetchrow;
65  die "Can't find table/key\n" if ! defined $row[0] || ! defined $row[1];  die "Can't find key '$keyname' for table '$table' in database '$dbname'\n" if ! defined $row[0] || ! defined $row[1];
66    
67  $result = $conn->exec("create trigger _RSERV_TRIGGER_T_ after" .  $result = $conn->exec("create trigger _RSERV_TRIGGER_T_ after" .
68                        " insert or update or delete on \"$table\"" .                        " insert or update or delete on \"$table\"" .
69                        " for each row execute procedure" .                        " for each row execute procedure" .
70                        " _rserv_log_('$row[1]')");                        " _rserv_log_('$row[1]',$mserver)");
71  die $conn->errorMessage if $result->resultStatus ne PGRES_COMMAND_OK;  die $conn->errorMessage if $result->resultStatus ne PGRES_COMMAND_OK;
72    
73  $result = $conn->exec("insert into _RSERV_TABLES_ (tname, cname, reloid, key)" .  $result = $conn->exec("insert into _RSERV_TABLES_ (tname, cname, reloid, key)" .

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

  ViewVC Help
Powered by ViewVC 1.1.26