projects
/
freeside.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
232897b
)
update for long table names; use sequence name directly instead of guessing
author
ivan
<ivan>
Thu, 12 Jun 2003 13:43:13 +0000
(13:43 +0000)
committer
ivan
<ivan>
Thu, 12 Jun 2003 13:43:13 +0000
(13:43 +0000)
bin/fix-sequences
patch
|
blob
|
history
diff --git
a/bin/fix-sequences
b/bin/fix-sequences
index
be24022
..
55639d9
100755
(executable)
--- a/
bin/fix-sequences
+++ b/
bin/fix-sequences
@@
-28,6
+28,7
@@
foreach my $table ( @tables ) {
my $col = $tableobj->column($primary_key);
my $col = $tableobj->column($primary_key);
+
next unless uc($col->type) eq 'SERIAL'
|| ( driver_name eq 'Pg'
&& defined($col->default)
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
);
&& $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";
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;
( SELECT max($primary_key) FROM $table ) );" )
or die $dbh->errstr;