On Thu, Feb 1, 2018 at 8:09 PM, Tatsuo Ishii <is...@sraoss.co.jp> wrote:
> Initially I thought all base tables including ones in a subquery also
> should be locked like you. But after some discussions with Yugo, I
> agree that locking table in a subquery is less valuable for users (and
> I am afraid it may introduce more deadlock chances). See upthead
I just reread those discussions but I don't see that they really make
any argument for the behavior the patch implements. I see no
explanation on the thread for why locking a table inside of a subquery
is more or less likely to cause deadlock than locking one outside of a
>> I think that if we
>> change the rules for which subqueries get flattened in a future
>> release, then the behavior will also change. That seems bad.
> I doubt it could happen in the future but if that happend we should
> disallow locking on such views.
That doesn't make any sense to me. When someone migrates from
PostgreSQL 11 to, say, PostgreSQL 14, the view definition is going to
be recreated from an SQL query. Neither the user nor the database
will know whether the query was optimized the same way on both
databases, so how could we disallow locking only those views where
there was a difference on the two releases? Even if we could, how
does that help anything? Throwing an error is just as much a
backward-incompatibility in the command as silently changing what gets
But my complaint may have been a little off base all the same -- I
guess we're doing this based on the rewriter output, rather than the
optimizer output, which makes it a lot less likely that we would
decide to change anything here.
>> I also think that this is a bad idea for another reason, which is that
>> it leaves us with no syntax to say that you want to lock the view
>> itself, and pg_dump wants do that if only we had syntax for it.
> I agree with Yugo and Alvaro. It's better to have a separate syntax
> for locking views itself.
Hmm, Alvaro's argument makes sense, I guess. I withdraw this complaint.
The Enterprise PostgreSQL Company