Search Postgresql Archives

Re: pre-parser query manipulation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Erik Jones wrote:
This may be a dupe. I sent and had some issues with my mail client and afterwards it was sitting all alone in my outbox, if you've already seen this, sorry for the resend...

On Mar 14, 2007, at 2:08 PM, Randall Smith wrote:

Hi,

I'm attempting to process a query written in the form:

    SELECT fields FROM table WHERE conditions FOR UPDATE OF field_name

when Postgresql supports:

    SELECT fields FROM table WHERE conditions FOR UPDATE OF table_name

I'd like to remove the OF clause in the case only one table is queried.

Anyone know of a solution to this?

The OF clause is optional in postrges.  The semantics are thus:

Without OF clause: lock all rows in all tables in the from clause that contribute data to the rows returned by your select statement. So, if I'm understanding what you're asking here, just chop off the OF clause and you're set.

Didn't know that.  Thanks.

Chopping off the OF clause is the problem. I have control of the DB, but not of the application. I do have control over the JDBC driver so I could attack it there, but it would be neat to intercept the query before the parser gets it and chop off the OF. Any idea how to do that? Rules work after the parser, right?


With OF clause: lock only rows from the specified tables that contribute data to the rows returned by your select statement.

There isn't any way that I know of to lock specific columns on a table as it seems the first query you listed is doing.

Oracle likes it for some reason even though I think it only does row level locking.

Randall



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux