module ActiveRecord::ConnectionAdapters::PostgreSQL::SchemaStatements

def check_constraints(table_name) # :nodoc:

:nodoc:
def check_constraints(table_name) # :nodoc:
  scope = quoted_scope(table_name)
  check_info = exec_query(<<-SQL, "SCHEMA")
    SELECT conname, pg_get_constraintdef(c.oid, true) AS constraintdef, c.convalidated AS valid
    FROM pg_constraint c
    JOIN pg_class t ON c.conrelid = t.oid
    JOIN pg_namespace n ON n.oid = c.connamespace
    WHERE c.contype = 'c'
      AND t.relname = #{scope[:name]}
      AND n.nspname = #{scope[:schema]}
  SQL
  check_info.map do |row|
    options = {
      name: row["conname"],
      validate: row["valid"]
    }
    expression = row["constraintdef"][/CHECK \((.+)\)/m, 1]
    CheckConstraintDefinition.new(table_name, expression, options)
  end
end