From: | wieck(at)debis(dot)com (Jan Wieck) |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | Hiroshi Inoue <Inoue(at)tpf(dot)co(dot)jp>, pgsql-hackers(at)postgreSQL(dot)org |
Subject: | Re: [HACKERS] SELECT FOR UPDATE leaks relation refcounts |
Date: | 2000-02-03 10:53:18 |
Message-ID: | m12GJt0-0003kbC@orion.SAPserv.Hamburg.dsh.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
> "Hiroshi Inoue" <Inoue(at)tpf(dot)co(dot)jp> writes:
> > I couldn't judge whether the following current behavior has some meaning
> > or not.
>
> > Let v be a view;
>
> > lock table v in exclusive mode; (I don't know what this means)
>
> Good question ... but it seems to me that it has to mean grabbing
> exclusive lock on the table(s) referred to by v. Otherwise, if
> client A locks the view and client B locks the underlying table
> directly, they'll both pass the lock and be able to access/modify
> the underlying table at the same time. That can't be right.
>
> The rewriter correctly passes SELECT FOR UPDATE locking from the
> view to the referenced tables, but I'm not sure whether it is
> bright enough to do the same for LOCK statements. (Jan?)
Isn't LOCK TABLE a utility statement? So it doesn't go
through the rewriter.
The LOCK code would have to do the correct locking of the
underlying tables. And not to forget cascaded views or
possible subselects.
Actually LockTableCommand() in command.c doesn't do it. It
simply locks the view relation, what's definitely wrong.
Jan
--
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me. #
#========================================= wieck(at)debis(dot)com (Jan Wieck) #
From | Date | Subject | |
---|---|---|---|
Next Message | Patrick Welche | 2000-02-03 11:24:34 | Re: [HACKERS] Another nasty cache problem |
Previous Message | Chris | 2000-02-03 10:46:45 | Re: [HACKERS] Re: [SQL] Proposed Changes to PostgreSQL |