Returns true if table exists. If the schema is not specified as part of
name then it will only find tables
within the current schema search path (regardless of permissions to access
tables
in other schemas)
# File activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb, line 101
def table_exists?(name)
name = Utils.extract_schema_qualified_name(name.to_s)
return false unless name.identifier
exec_query( SELECT COUNT(*) FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE c.relkind IN ('r','v','m') -- (r)elation/table, (v)iew, (m)aterialized view AND c.relname = '#{name.identifier}' AND n.nspname = #{name.schema ? "'#{name.schema}'" : 'ANY (current_schemas(false))'}, 'SCHEMA').rows.first[0].to_i > 0
end