Re: grant execute on many functions
От | Joe Conway |
---|---|
Тема | Re: grant execute on many functions |
Дата | |
Msg-id | 40E24C15.4040901@joeconway.com обсуждение исходный текст |
Ответ на | Re: grant execute on many functions (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-admin |
Tom Lane wrote: > Joe Conway <mail@joeconway.com> writes: > >> select 'GRANT EXECUTE ON ' || 1142::regprocedure; >> ERROR: array value must start with "{" or dimension information > > > BTW, it seems like there's something pretty broken here. How did > arrays get into it? A quick probe suggests that it is resolving > the above input as array_append for type regprocedure[], which would > qualify as a surprising choice in my book. 7.3 gives a more reasonable > "unable to identify an operator ||" ... array_append is defined thus: regression=# \df array_append List of functions Result data type | Schema | Name | Argument data types ------------------+------------+--------------+---------------------- anyarray | pg_catalog | array_append | anyarray, anyelement (1 row) So the "||" operator sees (unknown, regprocedure), and make_op tries to coerce the unknown literal to an array of regprocedure, which of course fails. If instead the literal is explicitly cast: select 'GRANT EXECUTE ON '::text || 1142::regprocedure; ERROR: operator does not exist: text || regprocedure HINT: No operator matches the given name and argument type(s). You may need to add explicit type casts. I'm not clear on how we can do better :(. Any suggestions? Joe
В списке pgsql-admin по дате отправления: