Thread: 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!