@@ -296,13 +296,15 @@ class ::TestEmployee < ActiveRecord::Base; end
296296 end
297297
298298 after ( :each ) do
299+ long_name = ( "a" * ( @conn . sequence_name_length - 3 ) ) . to_sym
299300 schema_define do
300301 drop_table :test_employees_no_primary_key , if_exists : true
301302 drop_table :test_employees , if_exists : true
302303 drop_table :new_test_employees , if_exists : true
303304 drop_table :test_employees_no_pkey , if_exists : true
304305 drop_table :new_test_employees_no_pkey , if_exists : true
305306 drop_table :aaaaaaaaaaaaaaaaaaaaaaaaaaa , if_exists : true
307+ drop_table long_name , if_exists : true
306308 end
307309 end
308310
@@ -329,6 +331,26 @@ class ::TestEmployee < ActiveRecord::Base; end
329331 @conn . rename_table ( "test_employees_no_pkey" , "new_test_employees_no_pkey" )
330332 end . not_to raise_error
331333 end
334+
335+ it "renames the auto-generated sequence when the source table name is long enough to truncate it" do
336+ long_source = "a" * ( @conn . sequence_name_length - 3 )
337+ schema_define do
338+ create_table long_source . to_sym , force : true do |t |
339+ t . string :first_name
340+ end
341+ end
342+
343+ expected_old_seq = @conn . default_sequence_name ( long_source ) . upcase
344+ expected_new_seq = @conn . default_sequence_name ( "new_test_employees" ) . upcase
345+
346+ @conn . rename_table ( long_source , "new_test_employees" )
347+
348+ sequences = @conn . select_values (
349+ "SELECT sequence_name FROM user_sequences WHERE sequence_name IN ('#{ expected_old_seq } ', '#{ expected_new_seq } ')"
350+ )
351+ expect ( sequences ) . to include ( expected_new_seq )
352+ expect ( sequences ) . not_to include ( expected_old_seq )
353+ end
332354 end
333355
334356 describe "add index" do
0 commit comments