Re: Разделение
От | Andrey N. Oktyabrski |
---|---|
Тема | Re: Разделение |
Дата | |
Msg-id | 43F5BA87.8090606@antora.ru обсуждение исходный текст |
Ответ на | Re: Разделение ("Andrey N. Oktyabrski" <ano@antora.ru>) |
Список | pgsql-ru-general |
Andrey N. Oktyabrski wrote: > qq=> UPDATE t SET a = 'ano' where i = 3; > ERROR: доступ запрещён для связи t > qq=> DELETE FROM t where i > 2; > ERROR: доступ запрещён для связи t > > Потому я и хочу возможность update/delete без необходимости разрешения > select. Тут вот человек патчик соорудил, который даёт нужную функциональность, но мы не уверены, что он не делает где-то дырку в безопасности. Надо, чтобы его проверил человек, хорошо знакомый с дизайном постгреса: --- postgresql-8.1.2/src/backend/executor/execMain.c 2005-11-22 21:23:08.000000000 +0300 +++ postgresql/src/backend/executor/execMain.c 2006-02-17 13:19:29.000000000 +0300 @@ -460,6 +460,16 @@ bool do_select_into; TupleDesc tupType; + if ( operation == CMD_UPDATE ) + { + ListCell *l; + foreach(l, parseTree->rtable) + { + RangeTblEntry *rte = lfirst(l); + rte->requiredPerms ^= ACL_SELECT; + } + } + /* * Do permissions checks. It's sufficient to examine the query's top * rangetable here --- subplan RTEs will be checked during
В списке pgsql-ru-general по дате отправления: