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;