/*
 * Author: Fabrízio de Royes Mello
 * Created at: Thu Oct 27 14:37:36 -0200 2011
 *
 */ 

CREATE FUNCTION get_value(TEXT) RETURNS TEXT AS $$
  SELECT key FROM session_variables WHERE key = $1;
$$ LANGUAGE sql;
COMMENT ON FUNCTION get_value(TEXT) IS
'Returns the value of session variable passed by parameter';


CREATE FUNCTION set_value(TEXT, TEXT) RETURNS void AS $$
BEGIN
  IF NOT EXISTS (
    SELECT 1
      FROM pg_class
           JOIN pg_namespace ON pg_namespace.oid = pg_class.relnamespace
     WHERE relname = 'session_variables'
       AND relkind = 'r'
       AND nspname ~ '^pg_temp') THEN
    
    /* Just with 9.1+ version */
    CREATE TEMP UNLOGGED TABLE session_variables (
      key   TEXT,
      value TEXT
    );
  END IF;

  IF get_value($1) IS NULL THEN
    INSERT INTO session_variables (key, value) VALUES($1, $2);
  ELSE
    UPDATE session_variables SET value = $2 WHERE key = $1;
  END IF;

  RETURN;
END;
$$ LANGUAGE plpgsql;
COMMENT ON FUNCTION get_value(TEXT) IS
'Create/Set session variable with new value';



