Обсуждение: BUG #2542: ALTER USER foo SET bar = func(baz) errors out
The following bug has been logged online:
Bug reference: 2542
Logged by: David Fetter
Email address: david@fetter.org
PostgreSQL version: All
Operating system: All
Description: ALTER USER foo SET bar = func(baz) errors out
Details:
foo=> ALTER USER foo SET search_path = current_setting('search_path');
ERROR: syntax error at or near "(" at character 52
LINE 1: ...LTER USER foo SET search_path = current_setting('search_p...
is there some way to let the right hand side of SET be the (TEXT) output of
a function?
"David Fetter" <david@fetter.org> writes:
> is there some way to let the right hand side of SET be the (TEXT) output of
> a function?
No. SET is a utility command and utility commands generally don't do
expression evaluation. (There are some specific reasons why not for
SET, but I won't get into that here.)
However, you can get the desired effect in various other ways; see the
set_config() function, or try updating the pg_settings view ...
regards, tom lane
On Thu, Jul 20, 2006 at 10:46:27PM -0400, Tom Lane wrote: > "David Fetter" <david@fetter.org> writes: > > is there some way to let the right hand side of SET be the (TEXT) > > output of a function? > > No. SET is a utility command and utility commands generally don't > do expression evaluation. (There are some specific reasons why not > for SET, but I won't get into that here.) > > However, you can get the desired effect in various other ways; see > the set_config() function, or try updating the pg_settings view ... foo=> UPDATE pg_catalog.pg_settings SET setting = 'bar,' || setting WHERE "name"='search_path'; -[ RECORD 1 ]---------------- set_config | bar,$user,public That's a neat trick :) However: psql foo foo foo=> SHOW search_path ; search_path -------------- $user,public (1 row) How do I make it permanent? Cheers, D -- David Fetter <david@fetter.org> http://fetter.org/ phone: +1 415 235 3778 AIM: dfetter666 Skype: davidfetter Remember to vote!