# Revision history [back]

I'm not sure if this was the correct way of fixing this problem. After reading a little bit about PostgreSQL functions, I decided to add the functions directly to the file:
user_profile_search_083112012.plsql

After the addition, the migration ran successfully.

    /* function testing for existence of a column in a table
if table does not exists, function will return "false" */
CREATE OR REPLACE FUNCTION column_exists(colname text, tablename text)
RETURNS boolean AS
$$DECLARE q text; onerow record; BEGIN q = 'SELECT attname FROM pg_attribute WHERE attrelid = ( SELECT oid FROM pg_class WHERE relname = '''||tablename||''') AND attname = '''||colname||''''; FOR onerow IN EXECUTE q LOOP RETURN true; END LOOP; RETURN false; END;$$ LANGUAGE plpgsql;

/* function adding tsvector column to table if it does not exists */
CREATE OR REPLACE FUNCTION add_tsvector_column(colname text, tablename text)
RETURNS boolean AS
$$DECLARE q text; BEGIN IF NOT column_exists(colname, tablename) THEN q = 'ALTER TABLE ' || tablename || ' ADD COLUMN ' || colname || ' tsvector'; EXECUTE q; RETURN true; ELSE q = 'UPDATE ' || tablename || ' SET ' || colname || '=NULL'; EXECUTE q; RETURN false; END IF; END;$$ LANGUAGE plpgsql;