Module: ActiveRecord::ConnectionAdapters::SchemaStatements

Defined in:
lib/active_record/connection_adapters/ibm_db_pstmt.rb

Instance Method Summary collapse

Instance Method Details

#assume_migrated_upto_version(version) ⇒ Object



1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
# File 'lib/active_record/connection_adapters/ibm_db_pstmt.rb', line 1868

def assume_migrated_upto_version(version)
  version = version.to_i
  sm_table = quote_table_name(ActiveRecord::Migrator.schema_migrations_table_name)

  migrated = select_values("SELECT version FROM #{sm_table}").map(&:to_i)
  versions = Dir['db/migrate/[0-9]*_*.rb'].map do |filename|
    filename.split('/').last.split('_').first.to_i
  end

  unless migrated.include?(version)
    pstmt = prepare("INSERT INTO #{sm_table} (version) VALUES (?)")
    execute_prepared_stmt(pstmt, [version])
  end

  inserted = Set.new
  (versions - migrated).each do |v|
    if inserted.include?(v)
      raise "Duplicate migration #{v}. Please renumber your migrations to resolve the conflict."
    elsif v < version
      pstmt = prepare("INSERT INTO #{sm_table} (version) VALUES (?)")
      execute_prepared_stmt(pstmt, [v])
      inserted << v
    end
  end
end