X-Git-Url: http://git.freeside.biz/gitweb/?p=freeside.git;a=blobdiff_plain;f=bin%2Ffix-sequences;h=896f01c903b4a19540252e38f071e7202160223f;hp=dc4abd7513cbf7eca6c471f0fce948a95bb706d2;hb=f8bb0d02510a30c7c0c14900c4ffb61431209ac0;hpb=c648976f0b7975f2328ebd7ba8c711fad0ca4195 diff --git a/bin/fix-sequences b/bin/fix-sequences index dc4abd751..896f01c90 100755 --- a/bin/fix-sequences +++ b/bin/fix-sequences @@ -3,12 +3,6 @@ # run dbdef-create first! use strict; -use DBI; -use DBIx::DBSchema 0.26; -use DBIx::DBSchema::Table; -use DBIx::DBSchema::Column; -use DBIx::DBSchema::ColGroup::Unique; -use DBIx::DBSchema::ColGroup::Index; use FS::UID qw(adminsuidsetup driver_name); use FS::Record qw(dbdef); @@ -20,8 +14,10 @@ my $schema = dbdef(); #false laziness w/fs-setup my @tables = scalar(@ARGV) ? @ARGV - : grep { ! /^h_/ } $schema->tables; + #: grep { ! /^h_/ } $schema->tables; + : $schema->tables; foreach my $table ( @tables ) { + my $tableobj = $schema->table($table) or die "unknown table $table (did you run dbdef-create?)\n"; @@ -30,21 +26,30 @@ foreach my $table ( @tables ) { my $col = $tableobj->column($primary_key); +#warn $col->type; +my $default = ref($col->default) ? ${ $col->default } : $col->default; +#use Data::Dumper; +#warn Dumper $col; next unless uc($col->type) eq 'SERIAL' || ( driver_name eq 'Pg' - && defined($col->default) - && $col->default =~ /^nextval\(/i + && defined($default) + && $default =~ /^nextval\(/i ) || ( driver_name eq 'mysql' && defined($col->local) && $col->local =~ /AUTO_INCREMENT/i ); - my $seq = "${table}_${primary_key}_seq"; + my $suffix = '_seq'; + if ( $table =~ /^(objectcustomfields|objectcustomfieldvalues)$/ ) { + $suffix = '_s'; + } + + my $seq = "${table}_${primary_key}$suffix"; if ( driver_name eq 'Pg' - && defined($col->default) - && $col->default =~ /^nextval\('"(public\.)?(\w+_seq)"'::text\)$/ + && defined($default) + && $default =~ /^nextval\('"(public\.)?(\w+_seq)"'::(text|regclass)\)$/ ) { $seq = $2; }