From: ivan Date: Thu, 12 Jun 2003 13:43:13 +0000 (+0000) Subject: update for long table names; use sequence name directly instead of guessing X-Git-Tag: freeside_1_5_0pre3~58 X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=commitdiff_plain;h=1957a30d2616acadba23324b764eb03ba008b590 update for long table names; use sequence name directly instead of guessing --- diff --git a/bin/fix-sequences b/bin/fix-sequences index be240226f..55639d962 100755 --- a/bin/fix-sequences +++ b/bin/fix-sequences @@ -28,6 +28,7 @@ foreach my $table ( @tables ) { my $col = $tableobj->column($primary_key); + next unless uc($col->type) eq 'SERIAL' || ( driver_name eq 'Pg' && defined($col->default) @@ -38,9 +39,17 @@ foreach my $table ( @tables ) { && $col->local =~ /AUTO_INCREMENT/i ); + my $seq = "${table}_${primary_key}_seq"; + if ( driver_name eq 'Pg' + && defined($col->default) + && $col->default =~ /^nextval\('"(\w+_seq)"'::text\)$/ + ) { + $seq = $1; + } + warn "fixing sequence for $table\n"; - $dbh->do( "SELECT setval( '${table}_${primary_key}_seq', + $dbh->do( "SELECT setval( '$seq', ( SELECT max($primary_key) FROM $table ) );" ) or die $dbh->errstr;