Received: from p2272.nsk.ne.jp (p2272.nsk.ne.jp [210.145.18.145]) by mail.postgresql.org (8.11.1/8.11.1) with ESMTP id f1ALaax88467; Sat, 10 Feb 2001 16:36:36 -0500 (EST) (envelope-from Inoue@tpf.co.jp) Received: from mcadnote1 (ppm140.noc.fukui.nsk.ne.jp [210.161.188.59]) by p2272.nsk.ne.jp (8.9.3/3.7W-20000722) with SMTP id GAA20913; Sun, 11 Feb 2001 06:35:38 +0900 (JST) From: "Hiroshi Inoue" To: "Tom Lane" Cc: "Hiroki Kataoka" , , , "Steve Wranovsky" Subject: RE: 7.1 beta 3 Linux ODBC BEGIN Behaviour Date: Sun, 11 Feb 2001 06:37:02 +0900 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: 7bit X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2910.0) In-Reply-To: <3976.981826245@sss.pgh.pa.us> Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2919.6700 X-Archive-Number: 200102/82 X-Sequence-Number: 1035 > -----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