-- Data model to support content repository of the ArsDigita -- Publishing System -- Copyright (C) 1999-2000 ArsDigita Corporation -- Author: Karl Goldstein (karlg@arsdigita.com) -- $Id: content-util.sql,v 1.9 2011/07/07 10:46:02 gustafn Exp $ -- This is free software distributed under the terms of the GNU Public -- License. Full text of the license is available from the GNU Project: -- http://www.fsf.org/copyleft/gpl.html -- added select define_function_args('table_exists','table_name'); -- -- procedure table_exists/1 -- CREATE OR REPLACE FUNCTION table_exists( table_exists__table_name varchar ) RETURNS boolean AS $$ DECLARE BEGIN return count(*) > 0 from pg_class where relname = lower(table_exists__table_name); END; $$ LANGUAGE plpgsql stable strict; -- added select define_function_args('column_exists','table_name,column_name'); -- -- procedure column_exists/2 -- CREATE OR REPLACE FUNCTION column_exists( column_exists__table_name varchar, column_exists__column_name varchar ) RETURNS boolean AS $$ DECLARE BEGIN return count(*) > 0 from pg_class c, pg_attribute a where c.relname = lower(column_exists__table_name) and c.oid = a.attrelid and a.attname = lower(column_exists__column_name); END; $$ LANGUAGE plpgsql stable; -- added select define_function_args('trigger_exists','trigger_name,on_table'); -- -- procedure trigger_exists/2 -- CREATE OR REPLACE FUNCTION trigger_exists( trigger_name varchar, on_table varchar ) RETURNS boolean AS $$ DECLARE BEGIN return count(*) > 0 from pg_class c, pg_trigger t where c.relname = lower(on_table) and c.oid = t.tgrelid and t.tgname = lower(trigger_name); END; $$ LANGUAGE plpgsql stable; -- added select define_function_args('trigger_func_exists','trigger_name'); -- -- procedure trigger_func_exists/1 -- CREATE OR REPLACE FUNCTION trigger_func_exists( trigger_name varchar ) RETURNS boolean AS $$ DECLARE BEGIN return count(*) = 1 from pg_proc where proname = lower(trigger_name) and pronargs = 0; END; $$ LANGUAGE plpgsql stable; -- added select define_function_args('rule_exists','rule_name,table_name'); -- -- procedure rule_exists/2 -- CREATE OR REPLACE FUNCTION rule_exists( rule_name varchar, table_name varchar ) RETURNS boolean AS $$ DECLARE BEGIN return count(*) = 1 from pg_rules where tablename::varchar = lower(table_name) and rulename::varchar = lower(rule_name); END; $$ LANGUAGE plpgsql stable;