I accidentally posted the following to the bugs mailing list first. Sorry for this, now as a question here.
The company I work for used to only use Oracle databases for their program and now also supports PostgreSQL.
With Postgres, we create a database, a user and a schema, which all have the same name. The name is chosen by the customers.
Sometimes, the customers would like to export the data and definitions and import them under a new name.
This works well by using the -O (no owner) option for pg_dump/pg_restore and only exporting and importing the schema. After the import the schema is renamed. So far so simple and easy!
But there is one problem: we have a database function function1, which calls another function function2. To ensure that the function call is safe, we set a search_path for function1.
Both functions are created in the main schema (the one that is named by the customer), the search_path is therefore set to this schema:
ALTER FUNCTION function1 SET SEARCH_PATH TO <the schema name that the customer has chosen>
Since the search_path of the function is not renamed when the schema is renamed, I need to know that there is such a search_path, which I then manually change to the new schema name.
Would it be possible that there is a variable that designates the schema in which a function is located? Like this, for example:
ALTER FUNCTION function1 SET SEARCH_PATH TO $FUNCTION_SCHEMA;
Since $FUNCTION_SCHEMA would change to denote the new schema when renaming the schema I wouldn't have to change the search_path manually.
Your E-Mail. Your Cloud. Your Office. eclipso Mail & Cloud.