Skip to content

Commit

Permalink
Remove foreign key contraint in table job_warnings on 'fk_jobs_id'
Browse files Browse the repository at this point in the history
The job_warnings table was created in a wrong way. There are two columns 'job_id' and 'fk_jobs_id'.
There is a foreign key constraint on 'fk_jobs_id', which references jobs(id).
CC coding never inserts data into 'fk_jobs_id', but only into 'job_id'.
So the foreign key constraint is not needed and causes way slower cleanup of pollable jobs,
which can even run into DB statement timeouts and cause an ever growing table.
  • Loading branch information
svkrieger committed Jan 16, 2025
1 parent 1dac91f commit 2cf1a79
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
Sequel.migration do
up do
alter_table :job_warnings do
drop_foreign_key :fk_jobs_id
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
require 'spec_helper'
require 'migrations/helpers/migration_shared_context'

RSpec.describe "migration to remove foreign key constraint on table 'job_warnings' and column 'fk_jobs_id'", isolation: :truncation, type: :migration do
include_context 'migration' do
let(:migration_filename) { '20250116144231_remove_unnecessary_fk_in_job_warnings.rb' }
end

describe 'job_warnings table' do
it 'removed the fk constraint as well as the column' do
Sequel::Migrator.run(db, migrations_path, target: current_migration_index, allow_missing_migration_files: true)

expect(db.foreign_key_list(:job_warnings)).to be_empty
expect(db[:job_warnings].columns).not_to include(:fk_jobs_id)
end
end
end

0 comments on commit 2cf1a79

Please sign in to comment.