RE: [INTERFACES] 7.1 beta 3 Linux ODBC BEGIN Behaviour
От | Hiroshi Inoue |
---|---|
Тема | RE: [INTERFACES] 7.1 beta 3 Linux ODBC BEGIN Behaviour |
Дата | |
Msg-id | EKEJJICOHDIEMGPNIFIJCEBDDJAA.Inoue@tpf.co.jp обсуждение исходный текст |
Ответы |
Re: RE: [INTERFACES] 7.1 beta 3 Linux ODBC BEGIN
Behaviour
|
Список | pgsql-odbc |
> -----Original Message----- > From: Tom Lane > > It'd be nice if ODBC could distinguish SELECT FOR UPDATE from plain > SELECT, but in practice it cannot reliably do so. Doubtless we could > extend ODBC to look for "FOR UPDATE" in the text of the query, but > that will only catch simple situations. Consider these possibilities: > > * A view or rule invoked by the query uses FOR UPDATE. (Pre-7.1, we > didn't support FOR UPDATE in views ... but we do now.) > > * A function invoked by the query does SELECT FOR UPDATE internally. > > For that matter, it's quite possible for a function invoked by a SELECT > to do INSERT/UPDATE/DELETE internally. Therefore, it's impossible for > the ODBC driver to reliably distinguish a pure SELECT from a SELECT that > causes locking or even data updates. > > Given these considerations, I think it's a mistake for ODBC to treat > SELECT differently from other queries for the purpose of setting > transaction boundaries. > OK, agreed. However simply putting back the behabior make it impossible to call VACUUM in psqlodbc autocommit off mode. My idea is as follows. [In autocommit off mode] 1) All statements except STMT_TYPE_OTHER issue "BEGIN" if a trasaction isn't in progress. 2) STMT_TYPE_OTHER statements automatically issue "COMMIT" if a transaction is progress. Comments ? Regards, Hiroshi Inoue
В списке pgsql-odbc по дате отправления: