mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-31 10:30:33 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			531 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			531 lines
		
	
	
		
			25 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| From pgsql-general-owner+M19848=candle.pha.pa.us=pgman@postgresql.org Fri Jan 25 10:36:36 2002
 | |
| Return-path: <pgsql-general-owner+M19848=candle.pha.pa.us=pgman@postgresql.org>
 | |
| Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g0PFaZe16098
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 10:36:36 -0500 (EST)
 | |
| Received: (qmail 35750 invoked by alias); 25 Jan 2002 15:34:38 -0000
 | |
| Received: from unknown (HELO postgresql.org) (64.49.215.8)
 | |
|   by www.postgresql.org with SMTP; 25 Jan 2002 15:34:38 -0000
 | |
| Received: from sss.pgh.pa.us ([192.204.191.242])
 | |
| 	by postgresql.org (8.11.3/8.11.4) with ESMTP id g0PFDAl28120
 | |
| 	for <pgsql-general@postgresql.org>; Fri, 25 Jan 2002 10:13:10 -0500 (EST)
 | |
| 	(envelope-from tgl@sss.pgh.pa.us)
 | |
| Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
 | |
| 	by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g0PFCqf25364;
 | |
| 	Fri, 25 Jan 2002 10:12:52 -0500 (EST)
 | |
| To: Hiroshi Inoue <Inoue@tpf.co.jp>
 | |
| cc: Bruce Momjian <pgman@candle.pha.pa.us>,
 | |
|    Florian Wunderlich <fwunderlich@devbrain.de>, pgsql-general@postgresql.org
 | |
| Subject: Re: [GENERAL] persistent portals/cursors (between transactions) 
 | |
| In-Reply-To: <3C510D24.8E1FDF7F@tpf.co.jp> 
 | |
| References: <200201250319.g0P3Jq022575@candle.pha.pa.us> <23244.1011932544@sss.pgh.pa.us> <3C510D24.8E1FDF7F@tpf.co.jp>
 | |
| Comments: In-reply-to Hiroshi Inoue <Inoue@tpf.co.jp>
 | |
| 	message dated "Fri, 25 Jan 2002 16:45:40 +0900"
 | |
| Date: Fri, 25 Jan 2002 10:12:51 -0500
 | |
| Message-ID: <25361.1011971571@sss.pgh.pa.us>
 | |
| From: Tom Lane <tgl@sss.pgh.pa.us>
 | |
| Precedence: bulk
 | |
| Sender: pgsql-general-owner@postgresql.org
 | |
| Status: OR
 | |
| 
 | |
| Hiroshi Inoue <Inoue@tpf.co.jp> writes:
 | |
| > Tom Lane wrote:
 | |
| >> If it's not holding any locks, I can guarantee you it's not insensitive.
 | |
| >> Consider VACUUM, or even DROP TABLE.
 | |
| 
 | |
| > It's already possible to keep a lock accross transactions.
 | |
| > So it would keep an AccessShareLock across transactions.
 | |
| 
 | |
| AccessShareLock would fend off DROP/ALTER TABLE, but not VACUUM anymore.
 | |
| We'd need to invent Yet Another lock type that would prevent VACUUM.
 | |
| Clearly that's perfectly doable.
 | |
| 
 | |
| But: having just finished a lot of work to ensure that VACUUM could run
 | |
| in parallel with all "normal" database operations, I'm not that thrilled
 | |
| at the prospect of introducing a new mechanism that will block VACUUM.
 | |
| Especially not one that's *designed* to hold its lock for a long period
 | |
| of time.  This will just get us right back into all the operational
 | |
| problems that lazy VACUUM was intended to get around.  For example, this
 | |
| one: if transaction A has an insensitive-cursor lock on table T, and a
 | |
| VACUUM comes along to vacuum T and blocks waiting for the lock, then
 | |
| when subsequent transaction B wants to create an insensitive cursor on T
 | |
| it's going to be forced to queue up behind the VACUUM.
 | |
| 
 | |
| While temp tables may seem like an ugly, low-tech way to support
 | |
| insensitive cursors, I think they may have more merit than you realize.
 | |
| 
 | |
| 			regards, tom lane
 | |
| 
 | |
| ---------------------------(end of broadcast)---------------------------
 | |
| TIP 4: Don't 'kill -9' the postmaster
 | |
| 
 | |
| From pgsql-general-owner+M19849=candle.pha.pa.us=pgman@postgresql.org Fri Jan 25 11:21:44 2002
 | |
| Return-path: <pgsql-general-owner+M19849=candle.pha.pa.us=pgman@postgresql.org>
 | |
| Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g0PGLhe19804
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 11:21:44 -0500 (EST)
 | |
| Received: (qmail 65425 invoked by alias); 25 Jan 2002 16:15:14 -0000
 | |
| Received: from unknown (HELO postgresql.org) (64.49.215.8)
 | |
|   by www.postgresql.org with SMTP; 25 Jan 2002 16:15:14 -0000
 | |
| Received: from post.webmailer.de (natpost.webmailer.de [192.67.198.65])
 | |
| 	by postgresql.org (8.11.3/8.11.4) with ESMTP id g0PG5il56844
 | |
| 	for <pgsql-general@postgresql.org>; Fri, 25 Jan 2002 11:05:44 -0500 (EST)
 | |
| 	(envelope-from fwunderlich@devbrain.de)
 | |
| Received: from faxdial.hq.factor3.com (p3E9ED0CC.dip.t-dialin.net [62.158.208.204])
 | |
| 	by post.webmailer.de (8.9.3/8.8.7) with ESMTP id RAA07886;
 | |
| 	Fri, 25 Jan 2002 17:05:46 +0100 (MET)
 | |
| Received: from hq.factor3.com (florian@main.hq.factor3.com [192.168.1.2])
 | |
| 	by faxdial.hq.factor3.com (8.11.1/8.11.0) with ESMTP id g0PG4P210606;
 | |
| 	Fri, 25 Jan 2002 17:04:25 +0100
 | |
| Message-ID: <3C518231.F65DC636@hq.factor3.com>
 | |
| Date: Fri, 25 Jan 2002 17:05:05 +0100
 | |
| From: Florian Wunderlich <fwunderlich@devbrain.de>
 | |
| X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.4.17 i686)
 | |
| X-Accept-Language: en
 | |
| MIME-Version: 1.0
 | |
| To: Tom Lane <tgl@sss.pgh.pa.us>
 | |
| cc: Hiroshi Inoue <Inoue@tpf.co.jp>, Bruce Momjian <pgman@candle.pha.pa.us>,
 | |
|    pgsql-general@postgresql.org
 | |
| Subject: Re: [GENERAL] persistent portals/cursors (between transactions)
 | |
| References: <200201250319.g0P3Jq022575@candle.pha.pa.us> <23244.1011932544@sss.pgh.pa.us> <3C510D24.8E1FDF7F@tpf.co.jp> <25361.1011971571@sss.pgh.pa.us>
 | |
| Content-Type: text/plain; charset=us-ascii
 | |
| Content-Transfer-Encoding: 7bit
 | |
| Precedence: bulk
 | |
| Sender: pgsql-general-owner@postgresql.org
 | |
| Status: OR
 | |
| 
 | |
| Tom Lane wrote:
 | |
| > 
 | |
| > Hiroshi Inoue <Inoue@tpf.co.jp> writes:
 | |
| > > Tom Lane wrote:
 | |
| > >> If it's not holding any locks, I can guarantee you it's not insensitive.
 | |
| > >> Consider VACUUM, or even DROP TABLE.
 | |
| > 
 | |
| > > It's already possible to keep a lock accross transactions.
 | |
| > > So it would keep an AccessShareLock across transactions.
 | |
| > 
 | |
| > AccessShareLock would fend off DROP/ALTER TABLE, but not VACUUM anymore.
 | |
| > We'd need to invent Yet Another lock type that would prevent VACUUM.
 | |
| > Clearly that's perfectly doable.
 | |
| > 
 | |
| > But: having just finished a lot of work to ensure that VACUUM could run
 | |
| > in parallel with all "normal" database operations, I'm not that thrilled
 | |
| > at the prospect of introducing a new mechanism that will block VACUUM.
 | |
| > Especially not one that's *designed* to hold its lock for a long period
 | |
| > of time.  This will just get us right back into all the operational
 | |
| > problems that lazy VACUUM was intended to get around.  For example, this
 | |
| > one: if transaction A has an insensitive-cursor lock on table T, and a
 | |
| > VACUUM comes along to vacuum T and blocks waiting for the lock, then
 | |
| > when subsequent transaction B wants to create an insensitive cursor on T
 | |
| > it's going to be forced to queue up behind the VACUUM.
 | |
| 
 | |
| Why do you have to lock the whole table when all you want is just one
 | |
| set of rows from a set of versions? Am I missing something here?
 | |
| 
 | |
| When you're talking about in-transaction cursors for the above example,
 | |
| why would the cursor need anything more than the transaction A needs
 | |
| anyway? And for cross-transaction cursors, why lock the whole table when
 | |
| you could use the transaction information from the transaction in which
 | |
| the cursor was declared?
 | |
| 
 | |
| Generally spoken, where's the difference between an insensitive
 | |
| persistent cursor and a still running transaction?
 | |
| 
 | |
| > While temp tables may seem like an ugly, low-tech way to support
 | |
| > insensitive cursors, I think they may have more merit than you realize.
 | |
| 
 | |
| Obviously, that's the easy way to do it, and lots of other databases
 | |
| make use of that already to implement insensitive cursors (see my other
 | |
| post). But as the long-term goal should be updateable insensitive
 | |
| persistent cursors, I think the temp table solution will get really
 | |
| messy.
 | |
| 
 | |
| ---------------------------(end of broadcast)---------------------------
 | |
| TIP 5: Have you checked our extensive FAQ?
 | |
| 
 | |
| http://www.postgresql.org/users-lounge/docs/faq.html
 | |
| 
 | |
| From pgsql-general-owner+M19851=candle.pha.pa.us=pgman@postgresql.org Fri Jan 25 11:50:42 2002
 | |
| Return-path: <pgsql-general-owner+M19851=candle.pha.pa.us=pgman@postgresql.org>
 | |
| Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g0PGoge22600
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 11:50:42 -0500 (EST)
 | |
| Received: (qmail 80652 invoked by alias); 25 Jan 2002 16:45:09 -0000
 | |
| Received: from unknown (HELO postgresql.org) (64.49.215.8)
 | |
|   by www.postgresql.org with SMTP; 25 Jan 2002 16:45:09 -0000
 | |
| Received: from sss.pgh.pa.us ([192.204.191.242])
 | |
| 	by postgresql.org (8.11.3/8.11.4) with ESMTP id g0PGOUl75295
 | |
| 	for <pgsql-general@postgresql.org>; Fri, 25 Jan 2002 11:24:30 -0500 (EST)
 | |
| 	(envelope-from tgl@sss.pgh.pa.us)
 | |
| Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
 | |
| 	by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g0PGOFf25891;
 | |
| 	Fri, 25 Jan 2002 11:24:15 -0500 (EST)
 | |
| To: Florian Wunderlich <fwunderlich@devbrain.de>
 | |
| cc: Hiroshi Inoue <Inoue@tpf.co.jp>, Bruce Momjian <pgman@candle.pha.pa.us>,
 | |
|    pgsql-general@postgresql.org
 | |
| Subject: Re: [GENERAL] persistent portals/cursors (between transactions) 
 | |
| In-Reply-To: <3C518231.F65DC636@hq.factor3.com> 
 | |
| References: <200201250319.g0P3Jq022575@candle.pha.pa.us> <23244.1011932544@sss.pgh.pa.us> <3C510D24.8E1FDF7F@tpf.co.jp> <25361.1011971571@sss.pgh.pa.us> <3C518231.F65DC636@hq.factor3.com>
 | |
| Comments: In-reply-to Florian Wunderlich <fwunderlich@devbrain.de>
 | |
| 	message dated "Fri, 25 Jan 2002 17:05:05 +0100"
 | |
| Date: Fri, 25 Jan 2002 11:24:15 -0500
 | |
| Message-ID: <25888.1011975855@sss.pgh.pa.us>
 | |
| From: Tom Lane <tgl@sss.pgh.pa.us>
 | |
| Precedence: bulk
 | |
| Sender: pgsql-general-owner@postgresql.org
 | |
| Status: OR
 | |
| 
 | |
| Florian Wunderlich <fwunderlich@devbrain.de> writes:
 | |
| > When you're talking about in-transaction cursors for the above example,
 | |
| > why would the cursor need anything more than the transaction A needs
 | |
| > anyway?
 | |
| 
 | |
| It wouldn't.
 | |
| 
 | |
| > And for cross-transaction cursors, why lock the whole table when
 | |
| > you could use the transaction information from the transaction in which
 | |
| > the cursor was declared?
 | |
| 
 | |
| The problem is to keep the rows that are supposed to be still visible to
 | |
| you from disappearing.  If other backends think that transaction A is
 | |
| history, they will not think that they need to preserve rows that would
 | |
| have been visible to A, but are not visible to any still-running
 | |
| transaction.
 | |
| 
 | |
| [ ... thinks for awhile ... ]  Maybe we could extend the notion of
 | |
| "oldest XMIN" a little.  Perhaps what each backend should record in the
 | |
| PROC array is not just the oldest XMIN visible to its current
 | |
| transaction, but the oldest XMIN visible to either its current xact or
 | |
| any of its open cross-transaction cursors.  That together with an
 | |
| AccessShareLock on tables referenced by the cursors might work.
 | |
| 
 | |
| A drawback of this approach is that opening a cursor and sitting on it
 | |
| for a long time would effectively defeat VACUUM activity --- it wouldn't
 | |
| be blocked, but it wouldn't be able to reclaim rows either.  Anywhere,
 | |
| not only in the tables actually used by the cursor.
 | |
| 
 | |
| 			regards, tom lane
 | |
| 
 | |
| ---------------------------(end of broadcast)---------------------------
 | |
| TIP 4: Don't 'kill -9' the postmaster
 | |
| 
 | |
| From Inoue@tpf.co.jp Fri Jan 25 11:58:04 2002
 | |
| Return-path: <Inoue@tpf.co.jp>
 | |
| Received: from p2272.nsk.ne.jp ([210.145.18.145])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g0PGw3e24273
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 11:58:03 -0500 (EST)
 | |
| Received: from mcadnote1 (ppm139.noc.fukui.nsk.ne.jp [61.198.95.39])
 | |
| 	by p2272.nsk.ne.jp (8.9.3/3.7W-20000722) with SMTP id BAA07477;
 | |
| 	Sat, 26 Jan 2002 01:57:47 +0900 (JST)
 | |
| From: "Hiroshi Inoue" <Inoue@tpf.co.jp>
 | |
| To: "Tom Lane" <tgl@sss.pgh.pa.us>
 | |
| cc: "Bruce Momjian" <pgman@candle.pha.pa.us>,
 | |
|    "Florian Wunderlich" <fwunderlich@devbrain.de>,
 | |
|    <pgsql-general@postgresql.org>
 | |
| Subject: RE: [GENERAL] persistent portals/cursors (between transactions) 
 | |
| Date: Sat, 26 Jan 2002 01:57:54 +0900
 | |
| Message-ID: <EKEJJICOHDIEMGPNIFIJOELEGJAA.Inoue@tpf.co.jp>
 | |
| 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: <25361.1011971571@sss.pgh.pa.us>
 | |
| X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200
 | |
| Importance: Normal
 | |
| Status: OR
 | |
| 
 | |
| > -----Original Message-----
 | |
| > From: Tom Lane [mailto:tgl@sss.pgh.pa.us]
 | |
| > 
 | |
| > Hiroshi Inoue <Inoue@tpf.co.jp> writes:
 | |
| > > Tom Lane wrote:
 | |
| > >> If it's not holding any locks, I can guarantee you it's not 
 | |
| > insensitive.
 | |
| > >> Consider VACUUM, or even DROP TABLE.
 | |
| > 
 | |
| > > It's already possible to keep a lock accross transactions.
 | |
| > > So it would keep an AccessShareLock across transactions.
 | |
| > 
 | |
| > AccessShareLock would fend off DROP/ALTER TABLE, but not VACUUM anymore.
 | |
| 
 | |
| Really ? VACUUM FULL conflicts with AccessShareLock from the
 | |
| first. If new vacuum does wrong thing with persistent read-only cursors
 | |
| it would do the wrong thing with the current cursors as well.
 | |
| Of cource as Vadim mentioned before, HeapTupleSatisfiesVacuum()
 | |
| should take the transaction id in which the cursor was opened into
 | |
| account. 
 | |
| 
 | |
| regards,
 | |
| Hiroshi Inoue
 | |
| 
 | |
| 
 | |
| 
 | |
| From pgsql-general-owner+M19852=candle.pha.pa.us=pgman@postgresql.org Fri Jan 25 12:04:58 2002
 | |
| Return-path: <pgsql-general-owner+M19852=candle.pha.pa.us=pgman@postgresql.org>
 | |
| Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g0PH4ve25258
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 12:04:57 -0500 (EST)
 | |
| Received: (qmail 91567 invoked by alias); 25 Jan 2002 17:04:25 -0000
 | |
| Received: from unknown (HELO postgresql.org) (64.49.215.8)
 | |
|   by www.postgresql.org with SMTP; 25 Jan 2002 17:04:25 -0000
 | |
| Received: from post.webmailer.de (natpost.webmailer.de [192.67.198.65])
 | |
| 	by postgresql.org (8.11.3/8.11.4) with ESMTP id g0PGxNl89850
 | |
| 	for <pgsql-general@postgresql.org>; Fri, 25 Jan 2002 11:59:23 -0500 (EST)
 | |
| 	(envelope-from fwunderlich@devbrain.de)
 | |
| Received: from faxdial.hq.factor3.com (p3E9ED0CC.dip.t-dialin.net [62.158.208.204])
 | |
| 	by post.webmailer.de (8.9.3/8.8.7) with ESMTP id RAA15976;
 | |
| 	Fri, 25 Jan 2002 17:59:27 +0100 (MET)
 | |
| Received: from hq.factor3.com (florian@main.hq.factor3.com [192.168.1.2])
 | |
| 	by faxdial.hq.factor3.com (8.11.1/8.11.0) with ESMTP id g0PGwC210992;
 | |
| 	Fri, 25 Jan 2002 17:58:12 +0100
 | |
| Message-ID: <3C518EC9.FDE6DDC3@hq.factor3.com>
 | |
| Date: Fri, 25 Jan 2002 17:58:49 +0100
 | |
| From: Florian Wunderlich <fwunderlich@devbrain.de>
 | |
| X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.4.17 i686)
 | |
| X-Accept-Language: en
 | |
| MIME-Version: 1.0
 | |
| To: Tom Lane <tgl@sss.pgh.pa.us>
 | |
| cc: Hiroshi Inoue <Inoue@tpf.co.jp>, Bruce Momjian <pgman@candle.pha.pa.us>,
 | |
|    pgsql-general@postgresql.org
 | |
| Subject: Re: [GENERAL] persistent portals/cursors (between transactions)
 | |
| References: <200201250319.g0P3Jq022575@candle.pha.pa.us> <23244.1011932544@sss.pgh.pa.us> <3C510D24.8E1FDF7F@tpf.co.jp> <25361.1011971571@sss.pgh.pa.us> <3C518231.F65DC636@hq.factor3.com> <25888.1011975855@sss.pgh.pa.us>
 | |
| Content-Type: text/plain; charset=us-ascii
 | |
| Content-Transfer-Encoding: 7bit
 | |
| Precedence: bulk
 | |
| Sender: pgsql-general-owner@postgresql.org
 | |
| Status: OR
 | |
| 
 | |
| > > And for cross-transaction cursors, why lock the whole table when
 | |
| > > you could use the transaction information from the transaction in which
 | |
| > > the cursor was declared?
 | |
| > 
 | |
| > The problem is to keep the rows that are supposed to be still visible to
 | |
| > you from disappearing.  If other backends think that transaction A is
 | |
| > history, they will not think that they need to preserve rows that would
 | |
| > have been visible to A, but are not visible to any still-running
 | |
| > transaction.
 | |
| > 
 | |
| > [ ... thinks for awhile ... ]  Maybe we could extend the notion of
 | |
| > "oldest XMIN" a little.  Perhaps what each backend should record in the
 | |
| > PROC array is not just the oldest XMIN visible to its current
 | |
| > transaction, but the oldest XMIN visible to either its current xact or
 | |
| > any of its open cross-transaction cursors.  That together with an
 | |
| > AccessShareLock on tables referenced by the cursors might work.
 | |
| > 
 | |
| > A drawback of this approach is that opening a cursor and sitting on it
 | |
| > for a long time would effectively defeat VACUUM activity --- it wouldn't
 | |
| > be blocked, but it wouldn't be able to reclaim rows either.  Anywhere,
 | |
| > not only in the tables actually used by the cursor.
 | |
| 
 | |
| Isn't that exactly what beginning a transaction and keeping it
 | |
| uncommitted for a long time would do too?
 | |
| 
 | |
| I see the problem - your last sentence - but getting rid of that would
 | |
| mean to not only save an oldest XMIN, but also a reference to all tables
 | |
| that this not-quite-a-xact uses, kind of like a "selective transaction".
 | |
| I doubt that there really are any problems in the real world though, so
 | |
| having a naive implementation first would be fine too.
 | |
| 
 | |
| So from the vacuum perspective, it looks like more than just one
 | |
| transaction is running per backend, right? Probably I don't understand
 | |
| anything at all, or that's what I suggested way back in my second or
 | |
| third mail. Whatever. Assuming I understood a bit here, a read-write
 | |
| cross-transaction cursor shouldn't be too hard to implement then either.
 | |
| 
 | |
| ---------------------------(end of broadcast)---------------------------
 | |
| TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
 | |
| 
 | |
| From pgsql-general-owner+M19855=candle.pha.pa.us=pgman@postgresql.org Fri Jan 25 12:21:10 2002
 | |
| Return-path: <pgsql-general-owner+M19855=candle.pha.pa.us=pgman@postgresql.org>
 | |
| Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g0PHLAe26624
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 12:21:10 -0500 (EST)
 | |
| Received: (qmail 97865 invoked by alias); 25 Jan 2002 17:15:35 -0000
 | |
| Received: from unknown (HELO postgresql.org) (64.49.215.8)
 | |
|   by www.postgresql.org with SMTP; 25 Jan 2002 17:15:35 -0000
 | |
| Received: from sss.pgh.pa.us ([192.204.191.242])
 | |
| 	by postgresql.org (8.11.3/8.11.4) with ESMTP id g0PH6Nl94616
 | |
| 	for <pgsql-general@postgresql.org>; Fri, 25 Jan 2002 12:06:23 -0500 (EST)
 | |
| 	(envelope-from tgl@sss.pgh.pa.us)
 | |
| Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
 | |
| 	by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g0PH69f26446;
 | |
| 	Fri, 25 Jan 2002 12:06:09 -0500 (EST)
 | |
| To: "Hiroshi Inoue" <Inoue@tpf.co.jp>
 | |
| cc: "Bruce Momjian" <pgman@candle.pha.pa.us>,
 | |
|    "Florian Wunderlich" <fwunderlich@devbrain.de>,
 | |
|    pgsql-general@postgresql.org
 | |
| Subject: Re: [GENERAL] persistent portals/cursors (between transactions) 
 | |
| In-Reply-To: <EKEJJICOHDIEMGPNIFIJOELEGJAA.Inoue@tpf.co.jp> 
 | |
| References: <EKEJJICOHDIEMGPNIFIJOELEGJAA.Inoue@tpf.co.jp>
 | |
| Comments: In-reply-to "Hiroshi Inoue" <Inoue@tpf.co.jp>
 | |
| 	message dated "Sat, 26 Jan 2002 01:57:54 +0900"
 | |
| Date: Fri, 25 Jan 2002 12:06:08 -0500
 | |
| Message-ID: <26443.1011978368@sss.pgh.pa.us>
 | |
| From: Tom Lane <tgl@sss.pgh.pa.us>
 | |
| Precedence: bulk
 | |
| Sender: pgsql-general-owner@postgresql.org
 | |
| Status: OR
 | |
| 
 | |
| "Hiroshi Inoue" <Inoue@tpf.co.jp> writes:
 | |
| >> AccessShareLock would fend off DROP/ALTER TABLE, but not VACUUM anymore.
 | |
| 
 | |
| > Really ? VACUUM FULL conflicts with AccessShareLock from the
 | |
| > first.
 | |
| 
 | |
| I was speaking of lazy VACUUM, of course.
 | |
| 
 | |
| > If new vacuum does wrong thing with persistent read-only cursors
 | |
| > it would do the wrong thing with the current cursors as well.
 | |
| 
 | |
| No, because current cursors don't span transactions.
 | |
| 
 | |
| > Of cource as Vadim mentioned before, HeapTupleSatisfiesVacuum()
 | |
| > should take the transaction id in which the cursor was opened into
 | |
| > account. 
 | |
| 
 | |
| I haven't read all of that thread yet; maybe Vadim already had the idea
 | |
| I just had of playing games with oldest-XMIN.
 | |
| 
 | |
| 			regards, tom lane
 | |
| 
 | |
| ---------------------------(end of broadcast)---------------------------
 | |
| TIP 3: if posting/reading through Usenet, please send an appropriate
 | |
| subscribe-nomail command to majordomo@postgresql.org so that your
 | |
| message can get through to the mailing list cleanly
 | |
| 
 | |
| From tgl@sss.pgh.pa.us Fri Jan 25 12:07:42 2002
 | |
| Return-path: <tgl@sss.pgh.pa.us>
 | |
| Received: from sss.pgh.pa.us (root@[192.204.191.242])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g0PH7fe25517
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 12:07:41 -0500 (EST)
 | |
| Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
 | |
| 	by sss.pgh.pa.us (8.11.4/8.11.4) with ESMTP id g0PH7Pf26466;
 | |
| 	Fri, 25 Jan 2002 12:07:25 -0500 (EST)
 | |
| To: Florian Wunderlich <fwunderlich@devbrain.de>
 | |
| cc: Hiroshi Inoue <Inoue@tpf.co.jp>, Bruce Momjian <pgman@candle.pha.pa.us>,
 | |
|    pgsql-general@postgresql.org
 | |
| Subject: Re: [GENERAL] persistent portals/cursors (between transactions) 
 | |
| In-Reply-To: <3C518EC9.FDE6DDC3@hq.factor3.com> 
 | |
| References: <200201250319.g0P3Jq022575@candle.pha.pa.us> <23244.1011932544@sss.pgh.pa.us> <3C510D24.8E1FDF7F@tpf.co.jp> <25361.1011971571@sss.pgh.pa.us> <3C518231.F65DC636@hq.factor3.com> <25888.1011975855@sss.pgh.pa.us> <3C518EC9.FDE6DDC3@hq.factor3.com>
 | |
| Comments: In-reply-to Florian Wunderlich <fwunderlich@devbrain.de>
 | |
| 	message dated "Fri, 25 Jan 2002 17:58:49 +0100"
 | |
| Date: Fri, 25 Jan 2002 12:07:24 -0500
 | |
| Message-ID: <26463.1011978444@sss.pgh.pa.us>
 | |
| From: Tom Lane <tgl@sss.pgh.pa.us>
 | |
| Status: OR
 | |
| 
 | |
| Florian Wunderlich <fwunderlich@devbrain.de> writes:
 | |
| > Isn't that exactly what beginning a transaction and keeping it
 | |
| > uncommitted for a long time would do too?
 | |
| 
 | |
| Sure, but then you haven't got a cross-transaction cursor, only a plain
 | |
| cursor.
 | |
| 
 | |
| 			regards, tom lane
 | |
| 
 | |
| From Inoue@tpf.co.jp Fri Jan 25 12:23:39 2002
 | |
| Return-path: <Inoue@tpf.co.jp>
 | |
| Received: from p2272.nsk.ne.jp (p2272.nsk.ne.jp [210.145.18.145])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with ESMTP id g0PHNce26772
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 12:23:38 -0500 (EST)
 | |
| Received: from mcadnote1 (ppm103.noc.fukui.nsk.ne.jp [61.198.95.3])
 | |
| 	by p2272.nsk.ne.jp (8.9.3/3.7W-20000722) with SMTP id CAA08121;
 | |
| 	Sat, 26 Jan 2002 02:23:18 +0900 (JST)
 | |
| From: "Hiroshi Inoue" <Inoue@tpf.co.jp>
 | |
| To: "Florian Wunderlich" <fwunderlich@devbrain.de>
 | |
| cc: "Bruce Momjian" <pgman@candle.pha.pa.us>, "Tom Lane" <tgl@sss.pgh.pa.us>,
 | |
|    <pgsql-general@postgresql.org>, "Jan Wieck" <janwieck@yahoo.com>
 | |
| Subject: RE: [GENERAL] persistent portals/cursors (between transactions)
 | |
| Date: Sat, 26 Jan 2002 02:23:26 +0900
 | |
| Message-ID: <EKEJJICOHDIEMGPNIFIJEELHGJAA.Inoue@tpf.co.jp>
 | |
| MIME-Version: 1.0
 | |
| Content-Type: text/plain;
 | |
| 	charset="us-ascii"
 | |
| 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: <3C515739.74CCA819@hq.factor3.com>
 | |
| X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200
 | |
| Importance: Normal
 | |
| Status: OR
 | |
| 
 | |
| > -----Original Message-----
 | |
| > From: florian@hq.factor3.com [mailto:florian@hq.factor3.com]On 
 | |
| > 
 | |
| > 
 | |
| > Hiroshi, that's exactly what I need, though I am not sure if we are all
 | |
| > really talking about the same thing.
 | |
| > 
 | |
| > In case I misunderstood something: as far as I know, SQL92 defines that
 | |
| > a cursor is by default sensitive, which means that it displays the data
 | |
| > from all comitted transactions at any time. If the data changes, so does
 | |
| > what the cursor returns.
 | |
| 
 | |
| AFAIK SQL92's default is indeterminate which guarantees nothing 
 | |
| about sensitivity. Though we don't have insensitive cursors yet
 | |
| INSENSITIVE cursors are very natural for MVCC and it's not hard
 | |
| to implement. In reality the current cursors see no changes after
 | |
| the cursor was opened other than the ones made by the bakend
 | |
| itself.
 | |
| 
 | |
| regards,
 | |
| Hiroshi Inoue
 | |
| 
 | |
| From pgsql-general-owner+M19860=candle.pha.pa.us=pgman@postgresql.org Fri Jan 25 13:16:18 2002
 | |
| Return-path: <pgsql-general-owner+M19860=candle.pha.pa.us=pgman@postgresql.org>
 | |
| Received: from server1.pgsql.org (www.postgresql.org [64.49.215.9])
 | |
| 	by candle.pha.pa.us (8.11.6/8.10.1) with SMTP id g0PIGHe03507
 | |
| 	for <pgman@candle.pha.pa.us>; Fri, 25 Jan 2002 13:16:17 -0500 (EST)
 | |
| Received: (qmail 25543 invoked by alias); 25 Jan 2002 18:14:36 -0000
 | |
| Received: from unknown (HELO postgresql.org) (64.49.215.8)
 | |
|   by www.postgresql.org with SMTP; 25 Jan 2002 18:14:36 -0000
 | |
| Received: from post.webmailer.de (natpost.webmailer.de [192.67.198.65])
 | |
| 	by postgresql.org (8.11.3/8.11.4) with ESMTP id g0PHjpl13108
 | |
| 	for <pgsql-general@postgresql.org>; Fri, 25 Jan 2002 12:45:51 -0500 (EST)
 | |
| 	(envelope-from fwunderlich@devbrain.de)
 | |
| Received: from faxdial.hq.factor3.com (p3E9ED0CC.dip.t-dialin.net [62.158.208.204])
 | |
| 	by post.webmailer.de (8.9.3/8.8.7) with ESMTP id SAA01771;
 | |
| 	Fri, 25 Jan 2002 18:45:55 +0100 (MET)
 | |
| Received: from hq.factor3.com (florian@main.hq.factor3.com [192.168.1.2])
 | |
| 	by faxdial.hq.factor3.com (8.11.1/8.11.0) with ESMTP id g0PHiO211360;
 | |
| 	Fri, 25 Jan 2002 18:44:24 +0100
 | |
| Message-ID: <3C51999B.260171D6@hq.factor3.com>
 | |
| Date: Fri, 25 Jan 2002 18:44:59 +0100
 | |
| From: Florian Wunderlich <fwunderlich@devbrain.de>
 | |
| X-Mailer: Mozilla 4.76 [en] (X11; U; Linux 2.4.17 i686)
 | |
| X-Accept-Language: en
 | |
| MIME-Version: 1.0
 | |
| To: Tom Lane <tgl@sss.pgh.pa.us>
 | |
| cc: Hiroshi Inoue <Inoue@tpf.co.jp>, Bruce Momjian <pgman@candle.pha.pa.us>,
 | |
|    pgsql-general@postgresql.org
 | |
| Subject: Re: [GENERAL] persistent portals/cursors (between transactions)
 | |
| References: <200201250319.g0P3Jq022575@candle.pha.pa.us> <23244.1011932544@sss.pgh.pa.us> <3C510D24.8E1FDF7F@tpf.co.jp> <25361.1011971571@sss.pgh.pa.us> <3C518231.F65DC636@hq.factor3.com> <25888.1011975855@sss.pgh.pa.us> <3C518EC9.FDE6DDC3@hq.factor3.com> <26463.1011978444@sss.pgh.pa.us>
 | |
| Content-Type: text/plain; charset=us-ascii
 | |
| Content-Transfer-Encoding: 7bit
 | |
| Precedence: bulk
 | |
| Sender: pgsql-general-owner@postgresql.org
 | |
| Status: OR
 | |
| 
 | |
| Tom Lane wrote:
 | |
| > > Isn't that exactly what beginning a transaction and keeping it
 | |
| > > uncommitted for a long time would do too?
 | |
| > 
 | |
| > Sure, but then you haven't got a cross-transaction cursor, only a plain
 | |
| > cursor.
 | |
| 
 | |
| Sorry for being unclear - I wanted to say that this problem obviously
 | |
| already exists, so there's not a new (conceptual) problem here.
 | |
| 
 | |
| I'm sure you read the second part of my post where I suggested what a
 | |
| possible solution could look like.
 | |
| 
 | |
| ---------------------------(end of broadcast)---------------------------
 | |
| TIP 5: Have you checked our extensive FAQ?
 | |
| 
 | |
| http://www.postgresql.org/users-lounge/docs/faq.html
 | |
| 
 |