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
|
create or replace function londiste.find_column_types(tbl text)
returns text as $plpgsql$
-- ----------------------------------------------------------------------
-- Function: londiste.find_column_types(1)
--
-- Returns columnt type string for logtriga().
--
-- Parameters:
-- tbl - fqname
--
-- Returns:
-- String of 'kv'.
-- ----------------------------------------------------------------------
declare
res text;
col record;
tbl_oid oid;
begin
tbl_oid := londiste.find_table_oid(tbl);
res := '';
for col in
SELECT CASE WHEN k.attname IS NOT NULL THEN 'k' ELSE 'v' END AS type
FROM pg_attribute a LEFT JOIN (
SELECT k.attnum, k.attname FROM pg_index i, pg_attribute k
WHERE i.indrelid = tbl_oid AND k.attrelid = i.indexrelid
AND i.indisprimary AND k.attnum > 0 AND NOT k.attisdropped
) k ON (k.attnum = a.attnum)
WHERE a.attrelid = tbl_oid AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
loop
res := res || col.type;
end loop;
return res;
end;
$plpgsql$ language plpgsql strict stable;
|