Postgres: modify existing search_path (preserve current values) Sometimes I would like to extend the existing search path, rather than replace it, say:

To start with say it is already set like so:

SET search_path TO schema_b, schema_c, public;


I want to add my schema to the front of the line:

SET search_path TO schema_a + search_path;   --doesn't work


I'm thinking in analogy to what I'd do in BASH:

PATH=path_a:$PATH


Bonus question, perhaps related: is there a way I can store the current path temporarily, so I can change it to something totally different, and then restore it without having to know what it was?
SELECT set_config('search_path', 'fred,'||current_setting('search_path'), false);


The false says it's not a transaction-LOCAL setting.

For the bonus question, you can store the value in a custom setting:

SELECT set_config('tmp.search_path', current_setting('search_path'), false);


From version 9.2 on, you don't even have to define this setting in postgresql.conf.