1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
|
drop function if exists londiste.find_seq_oid(text);
drop function if exists londiste.find_table_oid(text);
drop function if exists londiste.find_rel_oid(text, text);
create or replace function londiste.find_rel_oid(i_fqname text, i_kind text)
returns oid as $$
-- ----------------------------------------------------------------------
-- Function: londiste.find_rel_oid(2)
--
-- Find pg_class row oid.
--
-- Parameters:
-- i_fqname - fq object name
-- i_kind - relkind value
--
-- Returns:
-- oid or exception of not found
-- ----------------------------------------------------------------------
declare
res oid;
pos integer;
schema text;
name text;
begin
pos := position('.' in i_fqname);
if pos > 0 then
schema := substring(i_fqname for pos - 1);
name := substring(i_fqname from pos + 1);
else
schema := 'public';
name := i_fqname;
end if;
select c.oid into res
from pg_namespace n, pg_class c
where c.relnamespace = n.oid
and c.relkind = i_kind
and n.nspname = schema and c.relname = name;
if not found then
res := NULL;
end if;
return res;
end;
$$ language plpgsql strict stable;
create or replace function londiste.find_table_oid(tbl text)
returns oid as $$
-- ----------------------------------------------------------------------
-- Function: londiste.find_table_oid(1)
--
-- Find table oid based on fqname.
--
-- Parameters:
-- tbl - fqname
--
-- Returns:
-- oid
-- ----------------------------------------------------------------------
begin
return londiste.find_rel_oid(tbl, 'r');
end;
$$ language plpgsql strict stable;
create or replace function londiste.find_seq_oid(seq text)
returns oid as $$
-- ----------------------------------------------------------------------
-- Function: londiste.find_seq_oid(1)
--
-- Find sequence oid based on fqname.
--
-- Parameters:
-- seq - fqname
--
-- Returns:
-- oid
-- ----------------------------------------------------------------------
begin
return londiste.find_rel_oid(seq, 'S');
end;
$$ language plpgsql strict stable;
|