--
-- util__table_exists/1
--
create or replace function util__table_exists(
name text
) returns bool as $$
DECLARE
v_schema varchar;
v_tablename varchar;
BEGIN
IF (position('.' in name) = 0) THEN
--
-- table without a schema name
--
return exists (
select 1 from pg_class
where relname = name
and pg_table_is_visible(oid));
ELSE
--
-- table with schema name
--
SELECT split_part(name, '.', 1) into v_schema;
SELECT split_part(name, '.', 2) into v_tablename;
return exists (
select 1 from information_schema.tables
where table_schema = v_schema
and table_name = v_tablename);
END IF;
END;
$$ language plpgsql;