1 |
# -*- perl -*- |
#!/usr/bin/perl |
2 |
# MasterAddTable |
# MasterAddTable |
3 |
# Vadim Mikheev, (c) 2000, PostgreSQL Inc. |
# Vadim Mikheev, (c) 2000, PostgreSQL Inc. |
4 |
|
|
32 |
$minfo = "$minfo password=$opt_password" if (defined($opt_password)); |
$minfo = "$minfo password=$opt_password" if (defined($opt_password)); |
33 |
|
|
34 |
my $conn = Pg::connectdb($minfo); |
my $conn = Pg::connectdb($minfo); |
35 |
|
if ($conn->status != PGRES_CONNECTION_OK) { |
36 |
|
print STDERR "Failed opening $minfo\n"; |
37 |
|
exit 1; |
38 |
|
} |
39 |
|
|
40 |
my $result = $conn->exec("BEGIN"); |
my $result = $conn->exec("BEGIN"); |
41 |
die $conn->errorMessage if $result->resultStatus ne PGRES_COMMAND_OK; |
die $conn->errorMessage if $result->resultStatus ne PGRES_COMMAND_OK; |
42 |
|
|
43 |
$result = $conn->exec("select pgc.oid, pga.attnum from pg_class pgc" . |
$result = $conn->exec("select pgc.oid, pga.attnum from pg_class pgc" . |
44 |
", pg_attribute pga where pgc.relname = '$table'" . |
", pg_attribute pga where pgc.relname = '$table'" . |
45 |
" and pgc.oid = pga.attrelid" . |
" and pgc.oid = pga.attrelid" . |
46 |
" and pga.attname = '$keyname'"); |
" and pga.attname = '$keyname'"); |
47 |
die $conn->errorMessage if $result->resultStatus ne PGRES_TUPLES_OK; |
die $conn->errorMessage if $result->resultStatus ne PGRES_TUPLES_OK; |
48 |
|
|
49 |
my @row = $result->fetchrow; |
my @row = $result->fetchrow; |
50 |
die "Can't find table/key\n" if ! defined $row[0] || ! defined $row[1]; |
die "Can't find table/key\n" if ! defined $row[0] || ! defined $row[1]; |
51 |
|
|
52 |
$result = $conn->exec("create trigger _RSERV_TRIGGER_T_ after" . |
$result = $conn->exec("create trigger _RSERV_TRIGGER_T_ after" . |
53 |
" insert or update or delete on $table" . |
" insert or update or delete on \"$table\"" . |
54 |
" for each row execute procedure" . |
" for each row execute procedure" . |
55 |
" _rserv_log_('$row[1]')"); |
" _rserv_log_('$row[1]')"); |
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("insert into _RSERV_TABLES_ (tname, cname, reloid, key)" . |
$result = $conn->exec("insert into _RSERV_TABLES_ (tname, cname, reloid, key)" . |
59 |
" values ('$table', '$keyname', $row[0], $row[1])"); |
" values ('$table', '$keyname', $row[0], $row[1])"); |
60 |
die $conn->errorMessage if $result->resultStatus ne PGRES_COMMAND_OK; |
die $conn->errorMessage if $result->resultStatus ne PGRES_COMMAND_OK; |
61 |
|
|
62 |
$result = $conn->exec("COMMIT"); |
$result = $conn->exec("COMMIT"); |