Обсуждение: Delete denied?

Поиск
Список
Период
Сортировка

Delete denied?

От
Josh Berkus
Дата:
Stephan, Tom:

Hey, I have a function which can involve some records being deleted at the
end.   The user calling the function has permission to delete records (and
I've tested this), but when I run the function I get "permission denied".

Any clue?  I remember in 7.1.x that you couldn't delete records in a function,
but this is on 7.2.4.

Contributing could be that the table holding the deleted records is a child
table with an "ON CASCADE DELETE" of one of the tables being updated
elsewhere in the function.  And the function works if called by the owner of
the table (and the function).

--
-Josh BerkusAglio Database SolutionsSan Francisco



Re: Delete denied?

От
Josh Berkus
Дата:
Guys:

> Contributing could be that the table holding the deleted records is a child
> table with an "ON CASCADE DELETE" of one of the tables being updated
> elsewhere in the function.  And the function works if called by the owner of
> the table (and the function).

Further update:  I tried changing the owner of the function and table to no
avail.   Also tried dropping the FK.   It seems to work if called by the
owner of the database, but not otherwise.

I'm really baffled ... I've written several hundred procedures for 7.2.4, and
have never seen anything like this.

--
-Josh BerkusAglio Database SolutionsSan Francisco



Re: Delete denied?

От
Tom Lane
Дата:
Josh Berkus <josh@agliodbs.com> writes:
> Contributing could be that the table holding the deleted records is a child 
> table with an "ON CASCADE DELETE" of one of the tables being updated 
> elsewhere in the function.  And the function works if called by the owner of 
> the table (and the function).

I seem to recall that the original coding of the RI triggers was
careless about executing the RI operations as the "right" user (namely
the table owner).  This very possibly was still broken in 7.2.4.
        regards, tom lane


Re: Delete denied?

От
Stephan Szabo
Дата:
On Fri, 22 Aug 2003, Josh Berkus wrote:

> Guys:
>
> > Contributing could be that the table holding the deleted records is a child
> > table with an "ON CASCADE DELETE" of one of the tables being updated
> > elsewhere in the function.  And the function works if called by the owner of
> > the table (and the function).
>
> Further update:  I tried changing the owner of the function and table to no
> avail.   Also tried dropping the FK.   It seems to work if called by the
> owner of the database, but not otherwise.

It still failed after you dropped the FK (I'd have otherwise agreed with
Tom that there were some cases that I think were broken as recently as
7.3.x for some value of x on permissions)?  How much of the definitions
can you let us see?




Re: Delete denied?

От
Jeff Eckermann
Дата:
--- Josh Berkus <josh@agliodbs.com> wrote:
> Stephan, Tom:
> 
> Hey, I have a function which can involve some
> records being deleted at the 
> end.   The user calling the function has permission
> to delete records (and 
> I've tested this), but when I run the function I get
> "permission denied".
> 

I had a similar weird problem recently, also with
7.2.4.  Whether the two problems are related I can't
tell, but...

Situation: user a updates table1 (owned by a), kicks
off a trigger which updates table2 (owned by user b). 
Wouldn't work.  I tried every ownership and permission
combination that I could think of without success,
before succeeding by doing a "grant all on table2 to
a".

Since the table access is all mediated through the
application I was not worried about the "all", but the
question remains: why would "grant all" permit
updates, when "grant update" would not?

> Any clue?  I remember in 7.1.x that you couldn't
> delete records in a function, 
> but this is on 7.2.4.   
> 
> Contributing could be that the table holding the
> deleted records is a child 
> table with an "ON CASCADE DELETE" of one of the
> tables being updated 
> elsewhere in the function.  And the function works
> if called by the owner of 
> the table (and the function).
> 
> -- 
> -Josh Berkus
>  Aglio Database Solutions
>  San Francisco
> 
> 
> ---------------------------(end of
> broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
>                http://archives.postgresql.org


__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com