Обсуждение: Disparity in search_path SHOW and SET
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
I'm trying to figure out a way to modify the search_path temporarily, but
the "$user" construct is making this difficult. I need to prepend a schema
to the path. This works fine:
SELECT set_config('search_path', '$schema,' || current_setting('search_path'), true);
...but does not last outside of a transaction.
The problem is really that the output of "SHOW search_path" cannot be fed
back into "SET search_path" if the search_path contains the string "$user".
My only option appears to be to have the application parse the string returned
from SHOW search_path, quote the dollar-values, and rebuild the string. Is
there an easier way?
- --
Greg Sabino Mullane greg@turnstep.com
PGP Key: 0x14964AC8 200512201205
http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8
-----BEGIN PGP SIGNATURE-----
iD8DBQFDqDvOvJuQZxSWSsgRAgUKAKDrRJoCfe8M7Fe2mi+/KFlEKKn+fQCgthpw
jPV95zpbejZsaRvIBeLd8rM=
=xRza
-----END PGP SIGNATURE-----
"Greg Sabino Mullane" <greg@turnstep.com> writes:
> This works fine:
> SELECT set_config('search_path', '$schema,' || current_setting('search_path'), true);
> ...but does not last outside of a transaction.
Well, sure, because you told it to. Why isn't the last parameter
"false"?
regards, tom lane
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 > Well, sure, because you told it to. Why isn't the last parameter "false"? Thanks. I knew I was overlooking something. I've obviously been staring at the code too long. :) Still, would it make more sense for SHOW search_path to return this: "$user",public - -- Greg Sabino Mullane greg@turnstep.com PGP Key: 0x14964AC8 200512201227 http://biglumber.com/x/web?pk=2529DF6AB8F79407E94445B4BC9B906714964AC8 -----BEGIN PGP SIGNATURE----- iD8DBQFDqD83vJuQZxSWSsgRAj1gAKDIRGqzD7zORJQwrxLM+oKWOiAPKgCg9/xK OGZIoWEnLdw+Qi71lKbCg0g= =0dBJ -----END PGP SIGNATURE-----
"Greg Sabino Mullane" <greg@turnstep.com> writes:
> Still, would it make more sense for SHOW search_path
> to return this:
> "$user",public
Can't get excited about it. SHOW is meant for human consumption,
not programs ...
regards, tom lane