class DataMapper::Adapters::PostgresAdapter

FIXME i don't know if this works i basically just copied activerecord code to get a rough idea what they do. i don't have postgres available, so i won't be the one to write this. maybe codes below gets some postgres/datamapper user going, though.

Public Instance Methods

disable_referential_integrity(repository = :default) { || ... } click to toggle source

FIXME copied unchanged from activerecord

# File lib/database_cleaner/data_mapper/truncation.rb, line 126
def disable_referential_integrity(repository = :default)
  if supports_disable_referential_integrity? then
    execute(storage_names(repository).collect do |name|
      "ALTER TABLE #{quote_name(name)} DISABLE TRIGGER ALL"
    end.join(";"))
  end
  yield
ensure
  if supports_disable_referential_integrity? then
    execute(storage_names(repository).collect do |name|
      "ALTER TABLE #{quote_name(name)} ENABLE TRIGGER ALL"
    end.join(";"))
  end
end
storage_names(repository = :default) click to toggle source

taken from github.com/godfat/dm-mapping/tree/master

# File lib/database_cleaner/data_mapper/truncation.rb, line 97
      def storage_names(repository = :default)
        sql = <<-SQL
          SELECT table_name FROM "information_schema"."tables"
          WHERE table_schema = current_schema() and table_type = 'BASE TABLE'
        SQL
        select(sql)
      end
supports_disable_referential_integrity?() click to toggle source

FIXME copied from activerecord

# File lib/database_cleaner/data_mapper/truncation.rb, line 117
def supports_disable_referential_integrity?
  version = select("SHOW server_version")[0][0].split('.')
  (version[0].to_i >= 8 && version[1].to_i >= 1) ? true : false
rescue
  return false
end
truncate_table(table_name) click to toggle source
# File lib/database_cleaner/data_mapper/truncation.rb, line 105
def truncate_table(table_name)
  execute("TRUNCATE TABLE #{quote_name(table_name)} RESTART IDENTITY CASCADE;")
end
truncate_tables(table_names) click to toggle source

override to use a single statement

# File lib/database_cleaner/data_mapper/truncation.rb, line 110
def truncate_tables(table_names)
  quoted_names = table_names.collect { |n| quote_name(n) }.join(', ')
  execute("TRUNCATE TABLE #{quoted_names} RESTART IDENTITY;")
end