#!/usr/bin/perl
use DBI;
use Carp;
use POP::Environment;
use POP::Schema_parser;
my $dsn = "dbi:Sybase:server=$POP_DB_SERVER;database=$POP_DB_DB";
my $dbh = DBI->connect($dsn, $POP_DB_USER, $POP_DB_PASSWD,
{ RaiseError => 1 }) or
croak "Couldn't connect to [$dsn]: $DBI::errstr";
my $parse = new POP::Schema_parser;
$parse->parse(\*STDIN);
if ($ARGV[0] eq '-init') {
@ARGV = ('INIT');
}
unless (@ARGV) { @ARGV = grep {$_ ne 'INIT'} keys %$parse }
foreach my $schema (@ARGV) {
push(@tables, map {$_->{'sql'}} grep {$_->{'type'} eq 'TABLE'} @{$parse->{$schema}});
push(@indices, map {$_->{'sql'}} grep {$_->{'type'} eq 'INDEX'} @{$parse->{$schema}});
push(@procs, map {$_->{'sql'}} grep {$_->{'type'} eq 'PROC'} @{$parse->{$schema}});
push(@misc, map {$_->{'sql'}} grep {$_->{'type'} eq 'MISC'} @{$parse->{$schema}});
}
for (@misc, @tables, @indices, @procs) {
eval {
$dbh->do($_);
};
if ($@) { print STDERR $@ }
}
$dbh->disconnect;