+Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA10148
+ for
; Tue, 18 Jan 2000 20:08:27 -0500 (EST)
+Received: from cadzone ([126.0.1.40] (may be forged))
+ by sd.tpf.co.jp (2.5 Build 2640 (Berkeley 8.8.6)/8.8.4) with SMTP
+ id KAA02790; Wed, 19 Jan 2000 10:08:02 +0900
From: "Hiroshi Inoue"
Subject: RE: [HACKERS] Index recreation in vacuum
Date: Wed, 19 Jan 2000 10:13:40 +0900
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset="iso-8859-1"
+Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
Importance: Normal
-Content-Length: 1479
+Status: ORr
-[ Charset ISO-8859-1 unsupported, converting... ]
> -----Original Message-----
>
+Received: from hub.org (hub.org [216.126.84.1])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA10454
+ for
; Tue, 18 Jan 2000 20:15:26 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id UAA42280;
+ Tue, 18 Jan 2000 20:10:35 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Tue, 18 Jan 2000 20:10:30 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id UAA42081
+ for pgsql-hackers-outgoing; Tue, 18 Jan 2000 20:09:31 -0500 (EST)
+Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34])
+ by hub.org (8.9.3/8.9.3) with ESMTP id UAA41943
+ for
; Tue, 18 Jan 2000 20:08:39 -0500 (EST)
+Received: from cadzone ([126.0.1.40] (may be forged))
+ by sd.tpf.co.jp (2.5 Build 2640 (Berkeley 8.8.6)/8.8.4) with SMTP
+ id KAA02790; Wed, 19 Jan 2000 10:08:02 +0900
From: "Hiroshi Inoue"
Subject: RE: [HACKERS] Index recreation in vacuum
Date: Wed, 19 Jan 2000 10:13:40 +0900
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset="iso-8859-1"
+Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
Importance: Normal
-Content-Length: 1493
+Status: OR
-[ Charset ISO-8859-1 unsupported, converting... ]
> -----Original Message-----
>
************
+Received: from hub.org (hub.org [216.126.84.1])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id UAA11764
+ for
; Tue, 18 Jan 2000 20:57:19 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id UAA50653;
+ Tue, 18 Jan 2000 20:52:38 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Tue, 18 Jan 2000 20:52:30 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id UAA50513
+ for pgsql-hackers-outgoing; Tue, 18 Jan 2000 20:51:32 -0500 (EST)
+ by hub.org (8.9.3/8.9.3) with ESMTP id UAA50462
+ for
; Tue, 18 Jan 2000 20:51:06 -0500 (EST)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.9.0/8.9.0) id UAA11421;
+ Tue, 18 Jan 2000 20:50:50 -0500 (EST)
Subject: Re: [HACKERS] Index recreation in vacuum
Date: Tue, 18 Jan 2000 20:50:50 -0500 (EST)
X-Mailer: ELM [version 2.4ME+ PL66 (25)]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
-Content-Length: 2329
+Status: ORr
> > > Add a new option to force index recreation in vacuum
> > > and if index recreation is specified.
************
From pgman Tue Jan 18 20:04:11 2000
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.9.0/8.9.0) id VAA11990;
+ Tue, 18 Jan 2000 21:04:11 -0500 (EST)
Subject: Re: [HACKERS] Index recreation in vacuum
CC: Hiroshi Inoue ,
X-Mailer: ELM [version 2.4ME+ PL66 (25)]
-Content-Length: 2434
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
+Status: OR
> > I don't know how people estimate this disadvantage.
>
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
+Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id VAA12437
+ for
; Tue, 18 Jan 2000 21:18:46 -0500 (EST)
+Received: from cadzone ([126.0.1.40] (may be forged))
+ by sd.tpf.co.jp (2.5 Build 2640 (Berkeley 8.8.6)/8.8.4) with SMTP
+ id LAA02845; Wed, 19 Jan 2000 11:18:18 +0900
From: "Hiroshi Inoue"
Subject: RE: [HACKERS] Index recreation in vacuum
Date: Wed, 19 Jan 2000 11:23:55 +0900
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset="iso-8859-1"
+Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
Importance: Normal
-Content-Length: 2308
+Status: ORr
-[ Charset ISO-8859-1 unsupported, converting... ]
> -----Original Message-----
>
+Received: from hub.org (hub.org [216.126.84.1])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id VAA13285
+ for
; Tue, 18 Jan 2000 21:53:47 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id VAA65183;
+ Tue, 18 Jan 2000 21:47:47 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Tue, 18 Jan 2000 21:47:33 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id VAA65091
+ for pgsql-hackers-outgoing; Tue, 18 Jan 2000 21:46:33 -0500 (EST)
+ by hub.org (8.9.3/8.9.3) with ESMTP id VAA65034
+ for
; Tue, 18 Jan 2000 21:46:12 -0500 (EST)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.9.0/8.9.0) id VAA13040;
+ Tue, 18 Jan 2000 21:45:27 -0500 (EST)
Subject: Re: [HACKERS] Index recreation in vacuum
Date: Tue, 18 Jan 2000 21:45:27 -0500 (EST)
X-Mailer: ELM [version 2.4ME+ PL66 (25)]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
-Content-Length: 2480
+Status: OR
> > > In fact, for REINDEX cases where you don't have a lock on the entire
> > > table as you do in vacuum, you could reindex the table with a simple
************
+Received: from hub.org (hub.org [216.126.84.1])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id WAA14115
+ for
; Tue, 18 Jan 2000 22:15:23 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id WAA72950;
+ Tue, 18 Jan 2000 22:10:40 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Tue, 18 Jan 2000 22:10:32 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id WAA72644
+ for pgsql-hackers-outgoing; Tue, 18 Jan 2000 22:09:36 -0500 (EST)
+ by hub.org (8.9.3/8.9.3) with ESMTP id WAA72504
+ for
; Tue, 18 Jan 2000 22:08:40 -0500 (EST)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.9.0/8.9.0) id WAA13965;
+ Tue, 18 Jan 2000 22:08:25 -0500 (EST)
Subject: Re: [HACKERS] Index recreation in vacuum
Date: Tue, 18 Jan 2000 22:08:25 -0500 (EST)
X-Mailer: ELM [version 2.4ME+ PL66 (25)]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UNKNOWN-8BIT
+Content-Transfer-Encoding: 8bit
-Content-Length: 50
+Status: OR
-[ Charset UNKNOWN-8BIT unsupported, skipping... ]
+> I heard from someone that old vacuum had been like so.
+> Probably 2x disk space for big tables was a big disadvantage.
+
+That's interesting.
+
+>
+> In addition,rename(),unlink(),mv aren't preferable for transaction
+> control as far as I see. We couldn't avoid inconsistency using
+> those OS functions.
+
+I disagree. Vacuum can't be rolled back anyway in the sense you can
+bring back expire tuples, though I have no idea why you would want to.
+
+You have an exclusive lock on the table. Putting new heap/indexes in
+place that match and have no expired tuples seems like it can not fail
+in any situation.
+
+Of course, the buffers of the old table have to be marked as invalid,
+but with an exclusive lock, that is not a problem. I am sure we do that
+anyway in vacuum.
+
+> We have to wait the change of relation file naming if copying
+> vacuum is needed.
+> Under the spec we need not rename(),mv etc.
+
+Sorry, I don't agree, yet...
+
+--
+ Bruce Momjian | http://www.op.net/~candle
+ + If your life is a hard drive, | 830 Blythe Avenue
+ + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
+
+************
+Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id WAA13858
+ for
; Tue, 18 Jan 2000 22:05:21 -0500 (EST)
+Received: from cadzone ([126.0.1.40] (may be forged))
+ by sd.tpf.co.jp (2.5 Build 2640 (Berkeley 8.8.6)/8.8.4) with SMTP
+ id MAA02870; Wed, 19 Jan 2000 12:04:55 +0900
From: "Hiroshi Inoue"
Subject: RE: [HACKERS] Index recreation in vacuum
Date: Wed, 19 Jan 2000 12:10:32 +0900
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset="iso-8859-1"
+Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
Importance: Normal
-Content-Length: 1509
+Status: ORr
-[ Charset ISO-8859-1 unsupported, converting... ]
> -----Original Message-----
> > >
+Received: from relay.wplus.net (relay.wplus.net [195.131.52.179])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id QAA25919
+ for
; Wed, 19 Jan 2000 16:30:38 -0500 (EST)
+Received: from wplus.net (ppdms.dialup.wplus.net [195.131.52.71])
+ by relay.wplus.net (8.9.1/8.9.1/wplus.2) with ESMTP id AAA64218;
+ Thu, 20 Jan 2000 00:26:37 +0300 (MSK)
Date: Thu, 20 Jan 2000 00:29:01 +0300
From: Dmitry Samersoff
X-Mailer: Mozilla 4.61 [en] (WinNT; I)
X-Accept-Language: ru,en
+MIME-Version: 1.0
To: Hiroshi Inoue
Subject: Re: [HACKERS] Index recreation in vacuum
-Content-Length: 1204
+Content-Type: text/plain; charset=koi8-r
+Content-Transfer-Encoding: 7bit
+Status: ORr
-[ Charset KOI8-R unsupported, converting... ]
Hiroshi Inoue wrote:
> > > Yes,I believe so. It's necessary to keep consistency between heap
> > > table and indexes even in case of abort/crash.
* there will come soft rains
+Received: from relay.wplus.net (relay.wplus.net [195.131.52.179])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id QAA26645
+ for
; Wed, 19 Jan 2000 16:42:47 -0500 (EST)
+Received: from wplus.net (ppdms.dialup.wplus.net [195.131.52.71])
+ by relay.wplus.net (8.9.1/8.9.1/wplus.2) with ESMTP id AAA65264;
+ Thu, 20 Jan 2000 00:39:02 +0300 (MSK)
Date: Thu, 20 Jan 2000 00:41:26 +0300
From: Dmitry Samersoff
X-Mailer: Mozilla 4.61 [en] (WinNT; I)
X-Accept-Language: ru,en
+MIME-Version: 1.0
CC: Hiroshi Inoue ,
Subject: Re: [HACKERS] Index recreation in vacuum
-Content-Length: 431
+Content-Type: text/plain; charset=koi8-r
+Content-Transfer-Encoding: 7bit
+Status: ORr
-[ Charset KOI8-R unsupported, converting... ]
Bruce Momjian wrote:
>
> We need two things:
* there will come soft rains
+Received: from hub.org (hub.org [216.126.84.1])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id AAA13891
+ for
; Fri, 21 Jan 2000 00:51:31 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id AAA91784;
+ Fri, 21 Jan 2000 00:47:07 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Fri, 21 Jan 2000 00:45:38 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id AAA91495
+ for pgsql-hackers-outgoing; Fri, 21 Jan 2000 00:44:40 -0500 (EST)
+ by hub.org (8.9.3/8.9.3) with ESMTP id AAA91378
+ for
; Fri, 21 Jan 2000 00:44:04 -0500 (EST)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.9.0/8.9.0) id AAA13592;
+ Fri, 21 Jan 2000 00:43:49 -0500 (EST)
+Subject: [HACKERS] vacuum timings
+To: Tom Lane
+Date: Fri, 21 Jan 2000 00:43:49 -0500 (EST)
+CC: PostgreSQL-development
+X-Mailer: ELM [version 2.4ME+ PL66 (25)]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
+Status: OR
+
+I loaded 10,000,000 rows into CREATE TABLE test (x INTEGER); Table is
+400MB and index is 160MB.
+
+With index on the single in4 column, I got:
+ 78 seconds for a vacuum
+ 121 seconds for vacuum after deleting a single row
+ 662 seconds for vacuum after deleting the entire table
+
+With no index, I got:
+ 43 seconds for a vacuum
+ 43 seconds for vacuum after deleting a single row
+ 43 seconds for vacuum after deleting the entire table
+
+I find this quite interesting.
+
+--
+ Bruce Momjian | http://www.op.net/~candle
+ + If your life is a hard drive, | 830 Blythe Avenue
+ + Christ can be your backup. | Drexel Hill, Pennsylvania 19026
+
+************
+
+Received: from hub.org (hub.org [216.126.84.1])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id BAA15559
+ for
; Fri, 21 Jan 2000 01:34:55 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id BAA06108;
+ Fri, 21 Jan 2000 01:32:23 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Fri, 21 Jan 2000 01:30:38 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id BAA03704
+ for pgsql-hackers-outgoing; Fri, 21 Jan 2000 01:27:53 -0500 (EST)
+Received: from sunpine.krs.ru (SunPine.krs.ru [195.161.16.37])
+ by hub.org (8.9.3/8.9.3) with ESMTP id BAA01710
+ for
; Fri, 21 Jan 2000 01:26:44 -0500 (EST)
+Received: from krs.ru (dune.krs.ru [195.161.16.38])
+ by sunpine.krs.ru (8.8.8/8.8.8) with ESMTP id NAA01685;
+ Fri, 21 Jan 2000 13:26:33 +0700 (KRS)
Date: Fri, 21 Jan 2000 13:26:33 +0700
From: Vadim Mikheev
Organization: OJSC Rostelecom (Krasnoyarsk)
X-Mailer: Mozilla 4.5 [en] (X11; I; FreeBSD 3.0-RELEASE i386)
X-Accept-Language: ru, en
+MIME-Version: 1.0
CC: Tom Lane ,
Subject: Re: [HACKERS] vacuum timings
+Content-Type: text/plain; charset=us-ascii
+Content-Transfer-Encoding: 7bit
-Content-Length: 557
+Status: OR
Bruce Momjian wrote:
>
************
+Received: from sunpine.krs.ru (SunPine.krs.ru [195.161.16.37])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id BAA15239
+ for
; Fri, 21 Jan 2000 01:26:31 -0500 (EST)
+Received: from krs.ru (dune.krs.ru [195.161.16.38])
+ by sunpine.krs.ru (8.8.8/8.8.8) with ESMTP id NAA01685;
+ Fri, 21 Jan 2000 13:26:33 +0700 (KRS)
Date: Fri, 21 Jan 2000 13:26:33 +0700
Organization: OJSC Rostelecom (Krasnoyarsk)
X-Mailer: Mozilla 4.5 [en] (X11; I; FreeBSD 3.0-RELEASE i386)
X-Accept-Language: ru, en
+MIME-Version: 1.0
CC: Tom Lane ,
Subject: Re: [HACKERS] vacuum timings
-Content-Length: 543
+Content-Type: text/plain; charset=us-ascii
+Content-Transfer-Encoding: 7bit
+Status: ORr
Bruce Momjian wrote:
>
Vadim
+Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id BAA15684
+ for
; Fri, 21 Jan 2000 01:40:33 -0500 (EST)
+Received: from cadzone ([126.0.1.40] (may be forged))
+ by sd.tpf.co.jp (2.5 Build 2640 (Berkeley 8.8.6)/8.8.4) with SMTP
+ id PAA04316; Fri, 21 Jan 2000 15:40:35 +0900
From: "Hiroshi Inoue"
Cc: "PostgreSQL-development"
,
Subject: RE: [HACKERS] vacuum timings
Date: Fri, 21 Jan 2000 15:46:15 +0900
+MIME-Version: 1.0
+Content-Type: text/plain;
+ charset="iso-8859-1"
+Content-Transfer-Encoding: 7bit
X-Priority: 3 (Normal)
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook 8.5, Build 4.71.2173.0
Importance: Normal
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300
-Content-Length: 737
+Status: OR
-[ Charset ISO-8859-1 unsupported, converting... ]
> -----Original Message-----
+Received: from hub.org (hub.org [216.126.84.1])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA13329
+ for
; Fri, 21 Jan 2000 13:00:47 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id MAA96106;
+ Fri, 21 Jan 2000 12:55:34 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Fri, 21 Jan 2000 12:53:53 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id MAA95775
+ for pgsql-hackers-outgoing; Fri, 21 Jan 2000 12:52:54 -0500 (EST)
+ by hub.org (8.9.3/8.9.3) with ESMTP id MAA95720
+ for
; Fri, 21 Jan 2000 12:52:39 -0500 (EST)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.9.0/8.9.0) id MAA12106;
+ Fri, 21 Jan 2000 12:51:53 -0500 (EST)
Subject: [HACKERS] Re: vacuum timings
Date: Fri, 21 Jan 2000 12:51:53 -0500 (EST)
CC: PostgreSQL-development
X-Mailer: ELM [version 2.4ME+ PL66 (25)]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
-Content-Length: 1437
+Status: OR
> > I loaded 10,000,000 rows into CREATE TABLE test (x INTEGER); Table is
************
+Received: from thelab.hub.org (nat200.60.mpoweredpc.net [142.177.200.60])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id NAA14380
+ for
; Fri, 21 Jan 2000 13:45:29 -0500 (EST)
+Received: from localhost (scrappy@localhost)
+ by thelab.hub.org (8.9.3/8.9.1) with ESMTP id OAA68289;
+ Fri, 21 Jan 2000 14:45:35 -0400 (AST)
X-Authentication-Warning: thelab.hub.org: scrappy owned process doing -bs
Date: Fri, 21 Jan 2000 14:45:34 -0400 (AST)
From: The Hermit Hacker
Subject: Re: [HACKERS] Re: vacuum timings
-Content-Length: 787
+MIME-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+Status: OR
On Fri, 21 Jan 2000, Bruce Momjian wrote:
+Received: from sss2.sss.pgh.pa.us (sss.pgh.pa.us [209.114.166.2])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA14618
+ for
; Fri, 21 Jan 2000 14:06:33 -0500 (EST)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+ by sss2.sss.pgh.pa.us (8.9.3/8.9.3) with ESMTP id OAA16501;
+ Fri, 21 Jan 2000 14:06:31 -0500 (EST)
cc: PostgreSQL-development
Subject: Re: vacuum timings
Date: Fri, 21 Jan 2000 14:06:31 -0500
From: Tom Lane
-Content-Length: 391
+Status: OR
> Conclusions:
regards, tom lane
+Received: from relay.wplus.net (relay.wplus.net [195.131.52.179])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id OAA15623
+ for
; Fri, 21 Jan 2000 14:51:24 -0500 (EST)
+Received: from wplus.net (ppdms.dialup.wplus.net [195.131.52.71])
+ by relay.wplus.net (8.9.1/8.9.1/wplus.2) with ESMTP id WAA89451;
+ Fri, 21 Jan 2000 22:46:19 +0300 (MSK)
Date: Fri, 21 Jan 2000 22:48:50 +0300
From: Dmitry Samersoff
X-Mailer: Mozilla 4.7 [en] (WinNT; I)
X-Accept-Language: ru,en
+MIME-Version: 1.0
To: Tom Lane
Subject: Re: [HACKERS] Re: vacuum timings
-Content-Length: 585
+Content-Type: text/plain; charset=koi8-r
+Content-Transfer-Encoding: 7bit
+Status: ORr
-[ Charset KOI8-R unsupported, converting... ]
Tom Lane wrote:
>
* there will come soft rains
+Received: from hub.org (hub.org [216.126.84.1])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id PAA16140
+ for
; Fri, 21 Jan 2000 15:04:06 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id OAA34808;
+ Fri, 21 Jan 2000 14:59:30 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Fri, 21 Jan 2000 14:57:48 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id OAA34320
+ for pgsql-hackers-outgoing; Fri, 21 Jan 2000 14:56:50 -0500 (EST)
+ by hub.org (8.9.3/8.9.3) with ESMTP id OAA34255
+ for
; Fri, 21 Jan 2000 14:56:18 -0500 (EST)
+Received: (from pgman@localhost)
+ by candle.pha.pa.us (8.9.0/8.9.0) id OAA15772;
+ Fri, 21 Jan 2000 14:54:22 -0500 (EST)
Subject: Re: [HACKERS] Re: vacuum timings
CC: Tom Lane ,
X-Mailer: ELM [version 2.4ME+ PL66 (25)]
+MIME-Version: 1.0
+Content-Type: text/plain; charset=US-ASCII
+Content-Transfer-Encoding: 7bit
-Content-Length: 1093
+Status: OR
[Charset koi8-r unsupported, filtering to ASCII...]
> Tom Lane wrote:
************
+Received: from thelab.hub.org (nat200.60.mpoweredpc.net [142.177.200.60])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id PAA16521
+ for
; Fri, 21 Jan 2000 15:12:13 -0500 (EST)
+Received: from localhost (scrappy@localhost)
+ by thelab.hub.org (8.9.3/8.9.1) with ESMTP id QAA69039;
+ Fri, 21 Jan 2000 16:12:25 -0400 (AST)
X-Authentication-Warning: thelab.hub.org: scrappy owned process doing -bs
Date: Fri, 21 Jan 2000 16:12:25 -0400 (AST)
From: The Hermit Hacker
Subject: Re: [HACKERS] Re: vacuum timings
-Content-Length: 2345
+MIME-Version: 1.0
+Content-Type: TEXT/PLAIN; charset=US-ASCII
+Status: OR
On Fri, 21 Jan 2000, Bruce Momjian wrote:
+Received: from sss2.sss.pgh.pa.us (sss.pgh.pa.us [209.114.166.2])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id RAA20290
+ for
; Fri, 21 Jan 2000 17:02:06 -0500 (EST)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+ by sss2.sss.pgh.pa.us (8.9.3/8.9.3) with ESMTP id RAA09697;
+ Fri, 21 Jan 2000 17:02:06 -0500 (EST)
To: The Hermit Hacker
Date: Fri, 21 Jan 2000 17:02:06 -0500
From: Tom Lane
-Content-Length: 1274
+Status: OR
The Hermit Hacker writes:
>> lock table for less duration, or read lock
regards, tom lane
+Received: from sss2.sss.pgh.pa.us (sss.pgh.pa.us [209.114.166.2])
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id XAA01657
+ for
; Fri, 21 Jan 2000 23:50:28 -0500 (EST)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+ by sss2.sss.pgh.pa.us (8.9.3/8.9.3) with ESMTP id XAA19681;
+ Fri, 21 Jan 2000 23:50:13 -0500 (EST)
cc: PostgreSQL-development
Subject: Re: vacuum timings
Date: Fri, 21 Jan 2000 23:50:13 -0500
From: Tom Lane
-Content-Length: 1302
+Status: ORr
> Conclusions:
regards, tom lane
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id DAA06743
+ for
; Sat, 22 Jan 2000 03:31:02 -0500 (EST)
+Received: from hub.org (hub.org [216.126.84.1]) by renoir.op.net (o1/$Revision: 1.2 $) with ESMTP id DAA07529 for
; Sat, 22 Jan 2000 03:25:13 -0500 (EST)
+Received: from localhost (majordom@localhost)
+ by hub.org (8.9.3/8.9.3) with SMTP id DAA31900;
+ Sat, 22 Jan 2000 03:19:53 -0500 (EST)
+ (envelope-from owner-pgsql-hackers)
+Received: by hub.org (bulk_mailer v1.5); Sat, 22 Jan 2000 03:17:56 -0500
+Received: (from majordom@localhost)
+ by hub.org (8.9.3/8.9.3) id DAA31715
+ for pgsql-hackers-outgoing; Sat, 22 Jan 2000 03:16:58 -0500 (EST)
+Received: from sd.tpf.co.jp (sd.tpf.co.jp [210.161.239.34])
+ by hub.org (8.9.3/8.9.3) with ESMTP id DAA31647
+ for
; Sat, 22 Jan 2000 03:16:26 -0500 (EST)
+Received: from mcadnote1 (ppm114.noc.fukui.nsk.ne.jp [210.161.188.33])
+ by sd.tpf.co.jp (2.5 Build 2640 (Berkeley 8.8.6)/8.8.4) with SMTP
+ id RAA04754; Sat, 22 Jan 2000 17:14:43 +0900
From: "Hiroshi Inoue"
To: "Tom Lane"
, "Bruce Momjian"
Cc: "PostgreSQL-development"
Subject: RE: [HACKERS] Re: vacuum timings
Date: Sat, 22 Jan 2000 17:15:37 +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)
Importance: Normal
-Content-Length: 49
+Status: OR
-[ Charset iso-2022-jp unsupported, skipping... ]
+> -----Original Message-----
+>
+> > Conclusions:
+> > o indexes never get smaller
+>
+> Which we knew...
+>
+> > o drop/recreate index is slower than vacuum of indexes
+>
+> Quite a few people have reported finding the opposite in practice.
+> You should probably try vacuuming after deleting or updating some
+> fraction of the rows, rather than just the all or none cases.
+>
+
+Vacuum after delelting all rows isn't a worst case.
+There's no moving in that case and vacuum doesn't need to call
+index_insert() corresponding to the moving of heap tuples.
+
+Vacuum after deleting half of rows may be one of the worst case.
+In this case,index_delete() is called as many times as 'delete all'
+case and expensive index_insert() is called for moved_in tuples.
+
+Regards.
+
+Hiroshi Inoue
+
+************
+ by candle.pha.pa.us (8.9.0/8.9.0) with ESMTP id LAA20882
+ for
; Sat, 22 Jan 2000 11:31:00 -0500 (EST)
+Received: from sss2.sss.pgh.pa.us (sss.pgh.pa.us [209.114.166.2]) by renoir.op.net (o1/$Revision: 1.2 $) with ESMTP id LAA26612 for
; Sat, 22 Jan 2000 11:12:44 -0500 (EST)
+Received: from sss2.sss.pgh.pa.us (tgl@localhost [127.0.0.1])
+ by sss2.sss.pgh.pa.us (8.9.3/8.9.3) with ESMTP id LAA20569;
+ Sat, 22 Jan 2000 11:11:26 -0500 (EST)
To: "Hiroshi Inoue"
Date: Sat, 22 Jan 2000 11:11:25 -0500
From: Tom Lane
-Content-Length: 186
+Status: OR
"Hiroshi Inoue" writes:
> Vacuum after deleting half of rows may be one of the worst case.
Frequently Asked Questions (FAQ) for PostgreSQL
-Last updated: Thu Jun 1 13:57:15 EDT 2000
+Last updated: Fri Jun 2 11:32:13 EDT 2000
Current maintainer: Bruce Momjian (
Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
Fix too long syslog message (Tatsuo)
Fix problem with quoted indexes that are too long (Tom)
+JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
+ecpg changes (Michael)
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.15 2000/06/02 10:20:25 vadim Exp $
+ * $Header: /cvsroot/pgsql/src/backend/access/transam/xlog.c,v 1.16 2000/06/02 15:57:16 momjian Exp $
*
*-------------------------------------------------------------------------
*/
XLogFileName(path, log, seg);
unlink(path);
-#ifndef __CYGWIN__
- fd = BasicOpenFile(path, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
-#else
- fd = BasicOpenFile(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR);
-#endif
+ fd = BasicOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, S_IRUSR | S_IWUSR);
if (fd < 0)
elog(STOP, "Open(logfile %u seg %u) failed: %d",
logId, logSeg, errno);
XLogFileName(path, log, seg);
-#ifndef __CYGWIN__
- fd = BasicOpenFile(path, O_RDWR, S_IRUSR | S_IWUSR);
-#else
- fd = BasicOpenFile(path, O_RDWR | O_BINARY, S_IRUSR | S_IWUSR);
-#endif
+ fd = BasicOpenFile(path, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
if (fd < 0)
{
if (econt && errno == ENOENT)
{
int fd;
-#ifndef __CYGWIN__
- fd = BasicOpenFile(ControlFilePath, O_RDWR, S_IRUSR | S_IWUSR);
-#else
- fd = BasicOpenFile(ControlFilePath, O_RDWR | O_BINARY, S_IRUSR | S_IWUSR);
-#endif
+ fd = BasicOpenFile(ControlFilePath, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
if (fd < 0)
elog(STOP, "Open(cntlfile) failed: %d", errno);
#endif
-#ifndef __CYGWIN__
- fd = BasicOpenFile(ControlFilePath, O_RDWR | O_CREAT | O_EXCL, S_IRUSR | S_IWUSR);
-#else
- fd = BasicOpenFile(ControlFilePath, O_RDWR | O_CREAT | O_EXCL | O_BINARY, S_IRUSR | S_IWUSR);
-#endif
+ fd = BasicOpenFile(ControlFilePath, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, S_IRUSR | S_IWUSR);
if (fd < 0)
elog(STOP, "BootStrapXLOG failed to create control file (%s): %d",
ControlFilePath, errno);
/*
* Open/read Control file
*/
-#ifndef __CYGWIN__
- fd = BasicOpenFile(ControlFilePath, O_RDWR, S_IRUSR | S_IWUSR);
-#else
- fd = BasicOpenFile(ControlFilePath, O_RDWR | O_BINARY, S_IRUSR | S_IWUSR);
-#endif
+ fd = BasicOpenFile(ControlFilePath, O_RDWR | PG_BINARY, S_IRUSR | S_IWUSR);
if (fd < 0)
elog(STOP, "Open(\"%s\") failed: %d", ControlFilePath, errno);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.109 2000/05/30 04:25:00 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/commands/copy.c,v 1.110 2000/06/02 15:57:18 momjian Exp $
*
*-------------------------------------------------------------------------
*/
}
else
{
-#ifndef __CYGWIN32__
- fp = AllocateFile(filename, "r");
-#else
- fp = AllocateFile(filename, "rb");
-#endif
+ fp = AllocateFile(filename, PG_BINARY_R);
if (fp == NULL)
elog(ERROR, "COPY command, running in backend with "
"effective uid %d, could not open file '%s' for "
" COPY command.");
oumask = umask((mode_t) 022);
-
-#ifndef __CYGWIN32__
- fp = AllocateFile(filename, "w");
-#else
- fp = AllocateFile(filename, "wb");
-#endif
+ fp = AllocateFile(filename, PG_BINARY_W);
umask(oumask);
if (fp == NULL)
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.44 2000/04/12 17:15:14 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/libpq/be-fsstubs.c,v 1.45 2000/06/02 15:57:20 momjian Exp $
*
* NOTES
* This should be moved to a more appropriate place. It is here
if (nbytes > FNAME_BUFSIZE)
nbytes = FNAME_BUFSIZE;
StrNCpy(fnamebuf, VARDATA(filename), nbytes);
-#ifndef __CYGWIN32__
- fd = PathNameOpenFile(fnamebuf, O_RDONLY, 0666);
-#else
- fd = PathNameOpenFile(fnamebuf, O_RDONLY | O_BINARY, 0666);
-#endif
+ fd = PathNameOpenFile(fnamebuf, O_RDONLY | PG_BINARY, 0666);
if (fd < 0)
{ /* error */
elog(ERROR, "lo_import: can't open unix file \"%s\": %m",
nbytes = FNAME_BUFSIZE;
StrNCpy(fnamebuf, VARDATA(filename), nbytes);
oumask = umask((mode_t) 0022);
-#ifndef __CYGWIN32__
- fd = PathNameOpenFile(fnamebuf, O_CREAT | O_WRONLY | O_TRUNC, 0666);
-#else
- fd = PathNameOpenFile(fnamebuf, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0666);
-#endif
+ fd = PathNameOpenFile(fnamebuf, O_CREAT | O_WRONLY | O_TRUNC | PG_BINARY, 0666);
umask(oumask);
if (fd < 0)
{ /* error */
* Dec 17, 1997 - Todd A. Brandys
* Orignal Version Completed.
*
- * $Id: crypt.c,v 1.23 1999/07/17 20:17:01 momjian Exp $
+ * $Id: crypt.c,v 1.24 2000/06/02 15:57:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
FILE *pwdfile;
filename = crypt_getpwdfilename();
-#ifndef __CYGWIN32__
- pwdfile = AllocateFile(filename, "r");
-#else
- pwdfile = AllocateFile(filename, "rb");
-#endif
+ pwdfile = AllocateFile(filename, PG_BINARY_R);
return pwdfile;
}
* wherein you authenticate a user by seeing what IP address the system
* says he comes from and possibly using ident).
*
- * $Id: hba.c,v 1.51 2000/04/12 17:15:14 momjian Exp $
+ * $Id: hba.c,v 1.52 2000/06/02 15:57:20 momjian Exp $
*
*-------------------------------------------------------------------------
*/
old_conf_file = (char *) palloc(bufsize);
snprintf(old_conf_file, bufsize, "%s/%s", DataDir, OLD_CONF_FILE);
-#ifndef __CYGWIN32__
- if ((fd = open(old_conf_file, O_RDONLY, 0)) != -1)
-#else
- if ((fd = open(old_conf_file, O_RDONLY | O_BINARY, 0)) != -1)
-#endif
+ if ((fd = open(old_conf_file, O_RDONLY | PG_BINARY, 0)) != -1)
{
/* Old config file exists. Tell this guy he needs to upgrade. */
close(fd);
map_file = (char *) palloc(bufsize);
snprintf(map_file, bufsize, "%s/%s", DataDir, USERMAP_FILE);
-#ifndef __CYGWIN32__
- file = AllocateFile(map_file, "r");
-#else
- file = AllocateFile(map_file, "rb");
-#endif
+ file = AllocateFile(map_file, PG_BINARY_R);
if (file == NULL)
{
/* The open of the map file failed. */
bufsize = (strlen(DataDir) + strlen(CHARSET_FILE) + 2) * sizeof(char);
map_file = (char *) palloc(bufsize);
snprintf(map_file, bufsize, "%s/%s", DataDir, CHARSET_FILE);
-#ifndef __CYGWIN32__
- file = AllocateFile(map_file, "r");
-#else
- file = AllocateFile(map_file, "rb");
-#endif
+ file = AllocateFile(map_file, PG_BINARY_R);
if (file == NULL)
return;
while (!eof)
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: password.c,v 1.28 2000/01/26 05:56:29 momjian Exp $
+ * $Id: password.c,v 1.29 2000/06/02 15:57:21 momjian Exp $
*
*/
strcat(pw_file_fullname, "/");
strcat(pw_file_fullname, auth_arg);
-#ifndef __CYGWIN32__
- pw_file = AllocateFile(pw_file_fullname, "r");
-#else
- pw_file = AllocateFile(pw_file_fullname, "rb");
-#endif
+ pw_file = AllocateFile(pw_file_fullname, PG_BINARY_R);
if (!pw_file)
{
snprintf(PQerrormsg, PQERRORMSG_LENGTH,
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: pqcomm.c,v 1.93 2000/05/31 00:28:18 petere Exp $
+ * $Id: pqcomm.c,v 1.94 2000/06/02 15:57:21 momjian Exp $
*
*-------------------------------------------------------------------------
*/
* can safely delete the file.
*/
#ifdef HAVE_FCNTL_SETLK
-#ifndef __CYGWIN32__
- if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK, 0666)) >= 0)
-#else
- if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK | O_BINARY, 0666)) >= 0)
-#endif
+ if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK | PG_BINARY, 0666)) >= 0)
{
struct flock lck;
* lock_fd is left open to keep the lock.
*/
#ifdef HAVE_FCNTL_SETLK
-#ifndef __CYGWIN32__
- if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK, 0666)) >= 0)
-#else
- if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK | O_BINARY, 0666)) >= 0)
-#endif
+ if ((lock_fd = open(sock_path, O_WRONLY | O_NONBLOCK | PG_BINARY, 0666)) >= 0)
{
struct flock lck;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.144 2000/05/31 00:28:25 petere Exp $
+ * $Header: /cvsroot/pgsql/src/backend/postmaster/postmaster.c,v 1.145 2000/06/02 15:57:22 momjian Exp $
*
* NOTES
*
snprintf(path, sizeof(path), "%s%cbase%ctemplate1%cpg_class",
DataDir, SEP_CHAR, SEP_CHAR, SEP_CHAR);
-#ifndef __CYGWIN32__
- fp = AllocateFile(path, "r");
-#else
- fp = AllocateFile(path, "rb");
-#endif
+ fp = AllocateFile(path, PG_BINARY_R);
if (fp == NULL)
{
fprintf(stderr, "%s does not find the database system. "
*/
umask((mode_t) 0077);
- ResetAllOptions();
+ ResetAllOptions();
if (!(hostName = getenv("PGHOST")))
{
MyProcPid = getpid();
DataDir = getenv("PGDATA"); /* default value */
- /*
- * First we must scan for a -D argument to get the data dir. Then
- * read the config file. Finally, scan all the other arguments.
- * (Command line switches override config file.)
+ /*
+ * First we must scan for a -D argument to get the data dir. Then
+ * read the config file. Finally, scan all the other arguments.
+ * (Command line switches override config file.)
*
* Note: The two lists of options must be exactly the same, even
* though perhaps the first one would only have to be "D:" with
* to the local world view) which will result in some switches
* being associated with the wrong argument. Death and destruction
* will occur.
- */
+ */
opterr = 1;
while ((opt = getopt(nonblank_argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
- {
- if (opt == 'D')
- DataDir = optarg;
- }
+ {
+ if (opt == 'D')
+ DataDir = optarg;
+ }
- optind = 1; /* start over */
+ optind = 1; /* start over */
checkDataDir(DataDir, &DataDirOK); /* issues error messages */
if (!DataDirOK)
{
exit(2);
}
- ProcessConfigFile(PGC_POSTMASTER);
+ ProcessConfigFile(PGC_POSTMASTER);
IgnoreSystemIndexes(false);
while ((opt = getopt(nonblank_argc, argv, "A:a:B:b:D:d:Film:MN:no:p:Ss-:")) != EOF)
}
break;
case 'D':
- /* already done above */
+ /* already done above */
break;
case 'd':
*/
DebugLvl = atoi(optarg);
break;
- case 'F':
- enableFsync = false;
- break;
+ case 'F':
+ enableFsync = false;
+ break;
case 'i':
NetServer = true;
break;
*/
SendStop = true;
break;
- case '-':
- {
- /* A little 'long argument' simulation */
- size_t equal_pos = strcspn(optarg, "=");
- char *cp;
-
- if (optarg[equal_pos] != '=')
- elog(ERROR, "--%s requires argument", optarg);
- optarg[equal_pos] = '\0';
- for(cp = optarg; *cp; cp++)
- if (*cp == '-')
- *cp = '_';
- SetConfigOption(optarg, optarg + equal_pos + 1, PGC_POSTMASTER);
- break;
- }
+ case '-':
+ {
+ /* A little 'long argument' simulation */
+ size_t equal_pos = strcspn(optarg, "=");
+ char *cp;
+
+ if (optarg[equal_pos] != '=')
+ elog(ERROR, "--%s requires argument", optarg);
+ optarg[equal_pos] = '\0';
+ for(cp = optarg; *cp; cp++)
+ if (*cp == '-')
+ *cp = '_';
+ SetConfigOption(optarg, optarg + equal_pos + 1, PGC_POSTMASTER);
+ break;
+ }
default:
/* usage() never returns */
usage(progname);
exit(1);
}
#endif
-#ifndef __CYGWIN32__
- i = open(NULL_DEV, O_RDWR);
-#else
- i = open(NULL_DEV, O_RDWR | O_BINARY);
-#endif
+ i = open(NULL_DEV, O_RDWR | PG_BINARY);
dup2(i, 0);
dup2(i, 1);
dup2(i, 2);
* Portions Copyright (c) 1994, Regents of the University of California
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.58 2000/06/02 03:58:32 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/file/fd.c,v 1.59 2000/06/02 15:57:24 momjian Exp $
*
* NOTES:
*
"pg_sorttemp%d.%ld", MyProcPid, tempFileCounter++);
/* Open the file */
-#ifndef __CYGWIN32__
file = FileNameOpenFile(tempfilename,
- O_RDWR | O_CREAT | O_TRUNC, 0600);
-#else
- file = FileNameOpenFile(tempfilename,
- O_RDWR | O_CREAT | O_TRUNC | O_BINARY, 0600);
-#endif
-
+ O_RDWR | O_CREAT | O_TRUNC | PG_BINARY, 0600);
if (file <= 0)
elog(ERROR, "Failed to create temporary file %s", tempfilename);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.69 2000/06/02 03:58:33 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/storage/smgr/md.c,v 1.70 2000/06/02 15:57:26 momjian Exp $
*
*-------------------------------------------------------------------------
*/
Assert(reln->rd_unlinked && reln->rd_fd < 0);
path = relpath(RelationGetPhysicalRelationName(reln));
-#ifndef __CYGWIN32__
- fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL, 0600);
-#else
- fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600);
-#endif
+ fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0600);
/*
* During bootstrap processing, we skip that check, because pg_time,
reln->rd_rel->relkind == RELKIND_UNCATALOGED)
return -1;
-#ifndef __CYGWIN32__
- fd = FileNameOpenFile(path, O_RDWR, 0600);
-#else
- fd = FileNameOpenFile(path, O_RDWR | O_BINARY, 0600);
-#endif
+ fd = FileNameOpenFile(path, O_RDWR | PG_BINARY, 0600);
if (fd < 0)
return -1;
if (!IsBootstrapProcessingMode())
Assert(reln->rd_fd < 0);
path = relpath(RelationGetPhysicalRelationName(reln));
-#ifndef __CYGWIN32__
- fd = FileNameOpenFile(path, O_RDWR, 0600);
-#else
- fd = FileNameOpenFile(path, O_RDWR | O_BINARY, 0600);
-#endif
-
+ fd = FileNameOpenFile(path, O_RDWR | PG_BINARY, 0600);
if (fd < 0)
{
/* in bootstrap mode, accept mdopen as substitute for mdcreate */
if (IsBootstrapProcessingMode())
- {
-#ifndef __CYGWIN32__
- fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL, 0600);
-#else
- fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | O_BINARY, 0600);
-#endif
- }
+ fd = FileNameOpenFile(path, O_RDWR | O_CREAT | O_EXCL | PG_BINARY, 0600);
if (fd < 0)
{
elog(NOTICE, "mdopen: couldn't open %s: %m", path);
fullpath = path;
/* open the file */
-#ifndef __CYGWIN32__
- fd = FileNameOpenFile(fullpath, O_RDWR | oflags, 0600);
-#else
- fd = FileNameOpenFile(fullpath, O_RDWR | O_BINARY | oflags, 0600);
-#endif
+ fd = FileNameOpenFile(fullpath, O_RDWR | PG_BINARY | oflags, 0600);
pfree(fullpath);
#endif
/* call fd.c to allow other FDs to be closed if needed */
-#ifndef __CYGWIN32__
- fd = BasicOpenFile(path, O_RDWR, 0600);
-#else
- fd = BasicOpenFile(path, O_RDWR | O_BINARY, 0600);
-#endif
-
+ fd = BasicOpenFile(path, O_RDWR | PG_BINARY, 0600);
if (fd < 0)
elog(DEBUG, "_mdfd_blind_getseg: couldn't open %s: %m", path);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.54 2000/05/30 04:24:50 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/adt/arrayfuncs.c,v 1.55 2000/06/02 15:57:28 momjian Exp $
*
*-------------------------------------------------------------------------
*/
{
FILE *afd;
-#ifndef __CYGWIN32__
- if ((afd = AllocateFile(accessfile, "r")) == NULL)
-#else
- if ((afd = AllocateFile(accessfile, "r")) == NULL)
-#endif
+ if ((afd = AllocateFile(accessfile, PG_BINARY_R)) == NULL)
elog(ERROR, "unable to open access pattern file");
*chunkFlag = true;
retStr = _ChunkArray(*fd, afd, ndim, dim, baseSize, nbytes,
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.98 2000/05/30 00:49:54 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/cache/relcache.c,v 1.99 2000/06/02 15:57:30 momjian Exp $
*
*-------------------------------------------------------------------------
*/
int i;
int relno;
-#ifndef __CYGWIN32__
- if ((fd = FileNameOpenFile(RELCACHE_INIT_FILENAME, O_RDONLY, 0600)) < 0)
-#else
- if ((fd = FileNameOpenFile(RELCACHE_INIT_FILENAME, O_RDONLY | O_BINARY, 0600)) < 0)
-#endif
+ if ((fd = FileNameOpenFile(RELCACHE_INIT_FILENAME, O_RDONLY | PG_BINARY, 0600)) < 0)
{
write_irels();
return;
snprintf(finalfilename, sizeof(finalfilename), "%s%c%s",
DatabasePath, SEP_CHAR, RELCACHE_INIT_FILENAME);
-#ifndef __CYGWIN32__
- fd = PathNameOpenFile(tempfilename, O_WRONLY | O_CREAT | O_TRUNC, 0600);
-#else
- fd = PathNameOpenFile(tempfilename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY, 0600);
-#endif
+ fd = PathNameOpenFile(tempfilename, O_WRONLY | O_CREAT | O_TRUNC | PG_BINARY, 0600);
if (fd < 0)
elog(FATAL, "cannot create init file %s", tempfilename);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.46 2000/05/02 08:13:08 ishii Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/init/miscinit.c,v 1.47 2000/06/02 15:57:32 momjian Exp $
*
*-------------------------------------------------------------------------
*/
map_file = (char *) malloc((strlen(DataDir) +
strlen(p) + 2) * sizeof(char));
sprintf(map_file, "%s/%s", DataDir, p);
-#ifndef __CYGWIN32__
- file = AllocateFile(map_file, "r");
-#else
- file = AllocateFile(map_file, "rb");
-#endif
+ file = AllocateFile(map_file, PG_BINARY_R);
if (file == NULL)
return;
eof = false;
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.37 2000/04/12 17:16:07 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/backend/utils/misc/Attic/database.c,v 1.38 2000/06/02 15:57:34 momjian Exp $
*
*-------------------------------------------------------------------------
*/
dbfname = (char *) palloc(strlen(DataDir) + strlen(DatabaseRelationName) + 2);
sprintf(dbfname, "%s%c%s", DataDir, SEP_CHAR, DatabaseRelationName);
-#ifndef __CYGWIN32__
- if ((dbfd = open(dbfname, O_RDONLY, 0)) < 0)
-#else
- if ((dbfd = open(dbfname, O_RDONLY | O_BINARY, 0)) < 0)
-#endif
+ if ((dbfd = open(dbfname, O_RDONLY | PG_BINARY, 0)) < 0)
elog(FATAL, "cannot open %s: %s", dbfname, strerror(errno));
pfree(dbfname);
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.148 2000/05/28 20:34:52 tgl Exp $
+ * $Header: /cvsroot/pgsql/src/bin/pg_dump/pg_dump.c,v 1.149 2000/06/02 15:57:38 momjian Exp $
*
*
g_fout = stdout;
else
{
-#ifndef __CYGWIN32__
- g_fout = fopen(filename, "w");
-#else
- g_fout = fopen(filename, "wb");
-#endif
+ g_fout = fopen(filename, PG_BINARY_W);
if (g_fout == NULL)
{
fprintf(stderr,
int i;
try_again:
-#ifndef __CYGWIN32__
- fp = fopen(filename, "r");
-#else
- fp = fopen(filename, "rb");
-#endif
+ fp = fopen(filename, PG_BINARY_R);
if (fp == NULL)
{
if (errno == ENOENT)
{
case 'y':
case 'Y':
-#ifndef __CYGWIN32__
- fp = fopen(filename, "w");
-#else
- fp = fopen(filename, "wb");
-#endif
+ fp = fopen(filename, PG_BINARY_W);
if (fp == NULL)
{
perror(filename);
}
/* open file */
-#ifndef __CYGWIN32__
- if ((fp = fopen(filename, "w")) == NULL)
-#else
- if ((fp = fopen(filename, "wb")) == NULL)
-#endif
+ if ((fp = fopen(filename, PG_BINARY_W)) == NULL)
{
perror(filename);
exit(1);
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $Id: c.h,v 1.70 2000/05/28 17:56:09 tgl Exp $
+ * $Id: c.h,v 1.71 2000/06/02 15:57:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
#include
#include
#include
+#include
#ifdef STDC_HEADERS
#include
#include
* ----------------------------------------------------------------
*/
+#ifndef __CYGWIN32__
+#define PG_BINARY 0
+#define PG_BINARY_R "rb"
+#define PG_BINARY_W "wb"
+#else
+#define PG_BINARY O_BINARY
+#define PG_BINARY_R "r"
+#define PG_BINARY_W "w"
+#endif
+
#ifdef FIXADE
#if defined(hpux)
#include "port/hpux/fixade.h" /* for unaligned access fixup */
* Portions Copyright (c) 1996-2000, PostgreSQL, Inc
* Portions Copyright (c) 1995, Regents of the University of California
*
- * $Id: postgres.h,v 1.39 2000/05/28 17:56:12 tgl Exp $
+ * $Id: postgres.h,v 1.40 2000/06/02 15:57:40 momjian Exp $
*
*-------------------------------------------------------------------------
*/
*/
#ifdef CYR_RECODE
extern void SetCharSet();
-
#endif /* CYR_RECODE */
#endif /* POSTGRES_H */
switch (c)
{
case 'o':
-#ifndef __CYGWIN32__
- yyout = fopen(optarg, "w");
-#else
- yyout = fopen(optarg, "wb");
-#endif
+ yyout = fopen(optarg, PG_BINARY_W);
if (yyout == NULL)
perror(optarg);
else
ptr2ext[1] = 'c';
ptr2ext[2] = '\0';
-#ifndef __CYGWIN32__
- yyout = fopen(output_filename, "w");
-#else
- yyout = fopen(output_filename, "wb");
-#endif
+ yyout = fopen(output_filename, PG_BINARY_W);
if (yyout == NULL)
{
perror(output_filename);
}
}
-#ifndef __CYGWIN32__
- yyin = fopen(input_filename, "r");
-#else
- yyin = fopen(input_filename, "rb");
-#endif
+ yyin = fopen(input_filename, PG_BINARY_R);
if (yyin == NULL)
perror(argv[fnr]);
else
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v 1.29 2000/04/12 17:17:15 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/interfaces/libpq/fe-lobj.c,v 1.30 2000/06/02 15:57:42 momjian Exp $
*
*-------------------------------------------------------------------------
*/
/*
* open the file to be read in
*/
-#ifndef __CYGWIN32__
- fd = open(filename, O_RDONLY, 0666);
-#else
- fd = open(filename, O_RDONLY | O_BINARY, 0666);
-#endif
+ fd = open(filename, O_RDONLY | PG_BINARY, 0666);
if (fd < 0)
{ /* error */
printfPQExpBuffer(&conn->errorMessage,
/*
* open the file to be written to
*/
-#ifndef __CYGWIN32__
- fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC, 0666);
-#else
- fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | O_BINARY, 0666);
-#endif
+ fd = open(filename, O_CREAT | O_WRONLY | O_TRUNC | PG_BINARY, 0666);
if (fd < 0)
{ /* error */
printfPQExpBuffer(&conn->errorMessage,
* ----------------
*/
res = PQexec(conn, "select proname, oid from pg_proc \
- where proname = 'lo_open' \
+ where proname = 'lo_open' \
or proname = 'lo_close' \
or proname = 'lo_creat' \
or proname = 'lo_unlink' \
BOOL aSectionFound = FALSE;
BOOL aKeyFound = FALSE;
int j = 0;
-
+
j = strlen(theIniFileName) + 1;
ptr = (char*)getpwuid(getuid()); /* get user info */
/* This code makes it so that a file in the users home dir
* overrides a the "default" file as passed in
*/
-#ifndef __CYGWIN32__
- aFile = (FILE*)(buf ? fopen(buf, "r") : NULL);
-#else
- aFile = (FILE*)(buf ? fopen(buf, "rb") : NULL);
-#endif
+ aFile = (FILE*)(buf ? fopen(buf, PG_BINARY_R) : NULL);
if(!aFile) {
sprintf(buf,"%s",theIniFileName);
-#ifndef __CYGWIN32__
- aFile = (FILE*)(buf ? fopen(buf, "r") : NULL);
-#else
- aFile = (FILE*)(buf ? fopen(buf, "rb") : NULL);
-#endif
+ aFile = (FILE*)(buf ? fopen(buf, PG_BINARY_R) : NULL);
}
-
+
aLength = (theDefault == NULL) ? 0 : strlen(theDefault);
if(theReturnBufferLength == 0 || theReturnBuffer == NULL)
case ';': /* comment line */
continue;
break;
-
+
case '[': /* section marker */
if( (aString = strchr(aLine, ']')) )
if(aSectionFound)
{
/* try to match requested key */
-
+
if( (aString = aValue = strchr(aLine, '=')) )
{
*aValue = '\0';
/* remove trailing blanks from aValue if any */
aString = aValue + aLength - 1;
-
+
while(--aString > aValue && *aString == ' ')
{
*aString = '\0';
BOOL aSectionFound = FALSE;
BOOL keyFound = FALSE;
int j = 0;
-
+
/* If this isn't correct processing we'll change it later */
- if(theSection == NULL || theKey == NULL || theBuffer == NULL ||
+ if(theSection == NULL || theKey == NULL || theBuffer == NULL ||
theIniFileName == NULL) return 0;
aLength = strlen(theBuffer);
if(!aFile) return 0;
}
-
+
aLength = strlen(theBuffer);
/* We have to search for theKey, because if it already */
case ';': /* comment line */
continue;
break;
-
+
case '[': /* section marker */
if( (aString = strchr(aLine, ']')) )
if(aSectionFound)
{
/* try to match requested key */
-
+
if( (aString = aValue = strchr(aLine, '=')) )
{
*aValue = '\0';
if (! LOGFP) {
generate_filename(MYLOGDIR,MYLOGFILE,filebuf);
-#ifndef __CYGWIN32__
- LOGFP = fopen(filebuf, "w");
-#else
- LOGFP = fopen(filebuf, "wb");
-#endif
+ LOGFP = fopen(filebuf, PG_BINARY_W);
globals.mylogFP = LOGFP;
setbuf(LOGFP, NULL);
}
if (! LOGFP) {
generate_filename(QLOGDIR,QLOGFILE,filebuf);
-#ifndef __CYGWIN32__
- LOGFP = fopen(filebuf, "w");
-#else
- LOGFP = fopen(filebuf, "wb");
-#endif
+ LOGFP = fopen(filebuf, PG_BINARY_W);
globals.qlogFP = LOGFP;
setbuf(LOGFP, NULL);
}
#include
#endif
-
+
/* returns STRCPY_FAIL, STRCPY_TRUNCATED, or #bytes copied (not including null term) */
-int
+int
my_strcpy(char *dst, int dst_len, char *src, int src_len)
{
if (dst_len <= 0)
if (src_len == SQL_NULL_DATA) {
dst[0] = '\0';
- return STRCPY_NULL;
+ return STRCPY_NULL;
}
else if (src_len == SQL_NTS)
src_len = strlen(src);
if (src_len <= 0)
return STRCPY_FAIL;
- else {
+ else {
if (src_len < dst_len) {
memcpy(dst, src, src_len);
dst[src_len] = '\0';
}
- else {
+ else {
memcpy(dst, src, dst_len-1);
dst[dst_len-1] = '\0'; /* truncated */
return STRCPY_TRUNCATED;
if (len == SQL_NULL_DATA) {
dst[0] = '\0';
return NULL;
- }
+ }
else if (len == SQL_NTS)
len = strlen(src) + 1;
int length;
char *str;
- if(s && (len > 0 || (len == SQL_NTS && strlen(s) > 0))) {
+ if(s && (len > 0 || (len == SQL_NTS && strlen(s) > 0))) {
length = (len > 0) ? len : strlen(s);
if (buf) {
return buf;
}
- str = malloc(length + 1);
+ str = malloc(length + 1);
if ( ! str)
return NULL;
- strncpy_null(str, s, length+1);
+ strncpy_null(str, s, length+1);
return str;
}
my_strcat(char *buf, char *fmt, char *s, int len)
{
- if (s && (len > 0 || (len == SQL_NTS && strlen(s) > 0))) {
+ if (s && (len > 0 || (len == SQL_NTS && strlen(s) > 0))) {
int length = (len > 0) ? len : strlen(s);
int pos = strlen(buf);
void remove_newlines(char *string)
{
- unsigned int i;
-
- for(i=0; i < strlen(string); i++) {
- if((string[i] == '\n') ||
- (string[i] == '\r')) {
- string[i] = ' ';
- }
- }
+ unsigned int i;
+
+ for(i=0; i < strlen(string); i++) {
+ if((string[i] == '\n') ||
+ (string[i] == '\r')) {
+ string[i] = ' ';
+ }
+ }
}
char *
*
*
* IDENTIFICATION
- * $Header: /cvsroot/pgsql/src/utils/Attic/version.c,v 1.15 2000/04/12 17:17:22 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/utils/Attic/version.c,v 1.16 2000/06/02 15:57:44 momjian Exp $
*
* STANDALONE CODE - do not use error routines as this code is not linked
* with any...
sprintf(myversion, "%s.%s\n", PG_RELEASE, PG_VERSION);
-#ifndef __CYGWIN32__
- if ((fd = open(full_path, O_RDONLY, 0)) == -1)
-#else
- if ((fd = open(full_path, O_RDONLY | O_BINARY, 0)) == -1)
-#endif
+ if ((fd = open(full_path, O_RDONLY | PG_BINARY, 0)) == -1)
{
*reason_p = malloc(100 + strlen(full_path));
sprintf(*reason_p, "File '%s' does not exist or no read permission.", full_path);
sprintf(version, "%s.%s\n", PG_RELEASE, PG_VERSION);
-#ifndef __CYGWIN32__
- fd = open(full_path, O_WRONLY | O_CREAT | O_EXCL, 0666);
-#else
- fd = open(full_path, O_WRONLY | O_CREAT | O_EXCL | O_BINARY, 0666);
-#endif
+ fd = open(full_path, O_WRONLY | O_CREAT | O_EXCL | PG_BINARY, 0666);
if (fd < 0)
{
*reason_p = malloc(100 + strlen(full_path));