summaryrefslogtreecommitdiff
path: root/bin
diff options
context:
space:
mode:
authorivan <ivan>2003-06-12 13:43:13 +0000
committerivan <ivan>2003-06-12 13:43:13 +0000
commit1957a30d2616acadba23324b764eb03ba008b590 (patch)
tree0cf1b18df10b3d490e26200da205c282e0cf2201 /bin
parent232897b9389df4dca4773873e6e5d638ac5e8c4b (diff)
update for long table names; use sequence name directly instead of guessing
Diffstat (limited to 'bin')
-rwxr-xr-xbin/fix-sequences11
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;