#!/usr/bin/perl -Tw
+# run dbdef-create first!
+
use strict;
use DBI;
-use DBIx::DBSchema 0.21;
+use DBIx::DBSchema 0.26;
use DBIx::DBSchema::Table;
use DBIx::DBSchema::Column;
use DBIx::DBSchema::ColGroup::Unique;
my $col = $tableobj->column($primary_key);
+
next unless uc($col->type) eq 'SERIAL'
|| ( driver_name eq 'Pg'
&& defined($col->default)
&& $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";
- $dbh->do( "SELECT setval( '${table}_${primary_key}_seq',
- ( SELECT max($primary_key) FROM $table ) );" )
- or die $dbh->errstr;
+
+ 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;
}