diff options
author | ivan <ivan> | 2003-06-12 13:43:13 +0000 |
---|---|---|
committer | ivan <ivan> | 2003-06-12 13:43:13 +0000 |
commit | 1957a30d2616acadba23324b764eb03ba008b590 (patch) | |
tree | 0cf1b18df10b3d490e26200da205c282e0cf2201 /bin | |
parent | 232897b9389df4dca4773873e6e5d638ac5e8c4b (diff) |
update for long table names; use sequence name directly instead of guessing
Diffstat (limited to 'bin')
-rwxr-xr-x | bin/fix-sequences | 11 |
1 files changed, 10 insertions, 1 deletions
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; |