diff options
Diffstat (limited to 'bin/fix-sequences')
-rwxr-xr-x | bin/fix-sequences | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/bin/fix-sequences b/bin/fix-sequences deleted file mode 100755 index 2ff89d3e5..000000000 --- a/bin/fix-sequences +++ /dev/null @@ -1,69 +0,0 @@ -#!/usr/bin/perl -Tw - -# run dbdef-create first! - -use strict; -use DBI; -use DBIx::DBSchema 0.21; -use DBIx::DBSchema::Table; -use DBIx::DBSchema::Column; -use DBIx::DBSchema::ColGroup::Unique; -use DBIx::DBSchema::ColGroup::Index; -use FS::UID qw(adminsuidsetup driver_name); -use FS::Record qw(dbdef); - -my $user = shift or die &usage; -my $dbh = adminsuidsetup $user; - -my $schema = dbdef(); - -#false laziness w/fs-setup -my @tables = scalar(@ARGV) - ? @ARGV - : grep { ! /^h_/ } $schema->tables; -foreach my $table ( @tables ) { - my $tableobj = $schema->table($table) - or die "unknown table $table (did you run dbdef-create?)\n"; - - my $primary_key = $tableobj->primary_key; - next unless $primary_key; - - my $col = $tableobj->column($primary_key); - - - next unless uc($col->type) eq 'SERIAL' - || ( driver_name eq 'Pg' - && defined($col->default) - && $col->default =~ /^nextval\(/i - ) - || ( driver_name eq 'mysql' - && defined($col->local) - && $col->local =~ /AUTO_INCREMENT/i - ); - - my $seq = "${table}_${primary_key}_seq"; - if ( driver_name eq 'Pg' - && defined($col->default) - && $col->default =~ /^nextval\('"(public\.)?(\w+_seq)"'::text\)$/ - ) { - $seq = $2; - } - - warn "fixing sequence for $table\n"; - - - my $sql = "SELECT setval( '$seq', - ( SELECT max($primary_key) FROM $table ) );"; - - #warn $col->default. " $seq\n$sql\n"; - $dbh->do( $sql ) or die $dbh->errstr; - -} - -$dbh->commit or die $dbh->errstr; -$dbh->disconnect or die $dbh->errstr; - -sub usage { - die "Usage:\n fix-sequences user [ table table ... ] \n"; -} - |