In writing a function to test if a column
col_name exists in a table
_tbl, I'd like to extract the table's schema name, which is passed into the function as a
regclass parameter (for security??).
CREATE OR REPLACE FUNCTION column_exists(_tbl regclass, col_name text) RETURNS bool AS $func$ SELECT EXISTS ( SELECT 1 FROM information_schema.columns WHERE table_schema=get_schema($1) AND table_name=get_table($1) AND column_name=$2 ); $func$ LANGUAGE sql;
So if the table name is
'staging.my_table'::regclass, I'd like to get
staging from an imaginary function
Can I just implement this function with e.g.
split_part(_tbl::text, '.', 1)?
In addition, is it guaranteed that the table name
_tbl, when converted to text, will always have a schema name? (i.e. not omitting things such as
I'm not very familiar with the
regclass type. I searched but couldn't find how to extract the schema name, and just wanted to ask first before re-inventing wheels.