From ba3ebf7be5c1aebec4dcb7d166581aa164024818 Mon Sep 17 00:00:00 2001 From: Max Kanat-Alexander Date: Fri, 9 Jul 2010 21:00:08 -0700 Subject: Bug 577793: Improve the Pg SERIAL-altering code now that we require 8.3 r=mkanat, a=mkanat (module owner) --- Bugzilla/DB/Schema/Pg.pm | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'Bugzilla/DB') diff --git a/Bugzilla/DB/Schema/Pg.pm b/Bugzilla/DB/Schema/Pg.pm index 3559bae9c..31eedadcb 100644 --- a/Bugzilla/DB/Schema/Pg.pm +++ b/Bugzilla/DB/Schema/Pg.pm @@ -100,11 +100,9 @@ sub get_rename_column_ddl { my @sql = ("ALTER TABLE $table RENAME COLUMN $old_name TO $new_name"); my $def = $self->get_column_abstract($table, $old_name); if ($def->{TYPE} =~ /SERIAL/i) { - # We have to rename the series also, and fix the default of the series. - push(@sql, "ALTER TABLE ${table}_${old_name}_seq - RENAME TO ${table}_${new_name}_seq"); - push(@sql, "ALTER TABLE $table ALTER COLUMN $new_name - SET DEFAULT NEXTVAL('${table}_${new_name}_seq')"); + # We have to rename the series also. + push(@sql, "ALTER SEQUENCE ${table}_${old_name}_seq + RENAME TO ${table}_${new_name}_seq"); } return @sql; } @@ -147,7 +145,8 @@ sub _get_alter_type_sql { TYPE $type"); if ($new_def->{TYPE} =~ /serial/i && $old_def->{TYPE} !~ /serial/i) { - push(@statements, "CREATE SEQUENCE ${table}_${column}_seq"); + push(@statements, "CREATE SEQUENCE ${table}_${column}_seq + OWNED BY $table.$column"); push(@statements, "SELECT setval('${table}_${column}_seq', MAX($table.$column)) FROM $table"); @@ -160,10 +159,9 @@ sub _get_alter_type_sql { if ($old_def->{TYPE} =~ /serial/i && $new_def->{TYPE} !~ /serial/i) { push(@statements, "ALTER TABLE $table ALTER COLUMN $column DROP DEFAULT"); - # XXX Pg actually won't let us drop the sequence, even though it's - # no longer in use. So we harmlessly leave behind a sequence - # that does nothing. - #push(@statements, "DROP SEQUENCE ${table}_${column}_seq"); + push(@statements, "ALTER SEQUENCE ${table}_${column}_seq + OWNED BY NONE"); + push(@statements, "DROP SEQUENCE ${table}_${column}_seq"); } return @statements; -- cgit v1.2.3-24-g4f1b