Ok that was my oversight in understanding that the path does not change upon entering a function. I assumed that .it does by simply picking it from the schema2.test1
2 schemas , schema1 and schema2, with same tables , a base table and a tracking one.
Search path is set to schema1 by default. insert into schema2.test1 (col2 , col3) values ('foo1','foo2') I get an entry in schema1.test1_hist and not in schema2.test1_hist
Any object name not schema qualified will use search_path for resolution. Search path doesn't change upon entering a function unless the function defines its own - and your's does not.