postgresql - How to run the same function on different schemas -


i have multiple schemas / user same structure different data. there stored functions executed on these data, , far, stored in each schema. i'd store these functions in new schema, make easier, updating code, ... centralized.

i thought, search_path defined "$user",public reference user of current session / connection, hence queries different schemas have same search_path.

let's have table t1 users u1, u2, u3 , function uses table f1.

originally, f1 in copied schemas u1, u2, u3 , running select * f1() work each user. updating function become increasingly difficult number of users, want have new schema functions 1 f1 function inside.

now, running select * functions.f1() returns error, t1 couldn't found. users search_paths contain still same information. why search_path change based on function executing it, , how can prevent happening?

there mail on postgres mailing list: http://postgresql.nabble.com/function-doesn-t-see-change-in-search-path-td4971325.html , final workaround original situation. maybe change in meanwhile?

actually, thinking correct. when created new schema, exporting old function, pg_dump added security definer @ definition of each function.

changing security invoker gives behavior expected (by me)

from documentation:

security invoker indicates function executed privileges of user calls it. default. security definer specifies function executed privileges of user created it.


Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -