Re: [HACKERS]

2005-02-16 Thread Benjamin Arai
What kind of performance difference can be expected between Linux and
Windows? 

Benjamin Arai
[EMAIL PROTECTED]
[EMAIL PROTECTED]
http://www.benjaminarai.com
 

-Original Message-
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Magnus Hagander
Sent: Tuesday, February 15, 2005 10:03 AM
To: E.Rodichev
Cc: pgsql-hackers@postgresql.org; oleg@sai.msu.su
Subject: Re: [HACKERS]

 I've tested the performance of 8.0.1 at my dual-boot notebook (Linux 
 and Windows XP).

 I installed 8.0.1 for Linux and Windows XP, and run pgbench -c 1 -t 
 1000 Under Linux (kernel 2.6.10) I got about 800 tps, and under 
 Windows XP - about 20-24 tps.

 Next I switched off virtual memory under Windows (as it was 
 recommended in posting 
 http://www.pgsql.ru/db/mw/msg.html?mid=2026070). It does not help. 
 Without virtual memory I got 15-17 tps.


 Question 1: Is your writeback cache really disabled in Linux, on the 
 harddrive? Windows fsync will *write through the disk write cache* if 
 the driver is properly implemented. AFAIK, on Linux if write cache is 
 enabled on the drive, fsync will only get into the cache.

Difficult to say concerning writeback cache... I have 2.6.10 without 
any additional tuning, file system is ext2. From dmesg:

hda: TOSHIBA MK8026GAX, ATA DISK drive
hda: max request size: 128KiB
hda: 156301488 sectors (80026 MB), CHS=65535/16/63, UDMA(100)
hda: cache flushes supported

Run:
hdparm -I /dev/hda

If you get a line like:
Commands/features:
Enabled Supported:
   *READ BUFFER cmd
   *WRITE BUFFER cmd
   *Host Protected Area feature set
   *Look-ahead
   *Write cache
...
(last line is what matters here)
you have write cacheing enabled.

To turn it of, run
hdparm -W0 /dev/hda

Not sure if you need to reboot, I don'tt hink so. Then re-run the benchmark
on linux.


 800tps sounds unreasonably high on a notebook.

Yes, I also was surprized. The same test at Xeon 2.4GHz server 
indicates about 700 tps. But it is another issue.

The CPU probably has nothing to do with this, it's probably all I/O.


 Question 2: Please try disabling the stats connector and see if that 
 helps. Merlin Moncure reported some scalability issues with the stats 
 collector previously.

Sorry, what is stats connector?

That's supposed to be stats collector, as you realised in your other mail.
Sorry.

 Several yeas ago (about 1997-1998) Oleg Bartunov and me had the same 
 performance results (Linux vs Windows NT + cygwin).
 It was the discussion at this list with resume that the reason is 
 the implementation of shared memory under Windows.
 Every IPC operation results the HDD access.

 It shouldn't in 8.0 - at least not on the native win32. 
Don't know about
 cygwin.

Yes, I also expected that the performance for native implementation 
will be more reasonable. In fact, during pgbench test under Windows and 
under Linux HDD LED lights continiously, so looks like under Windows 
there are much more disk operations compared with Linux.

That would be consistent with the theory that write-back caching is enabled
on linux and not on windows.

//Magnus

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly



---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS]

2005-02-16 Thread Magnus Hagander
 What kind of performance difference can be expected between 
 Linux and Windows? 

Not really known, as the native win version is a bit too new for that.

Expect linux performance to be better, though, that much is sure.

//Magnus

---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS]

2005-02-16 Thread Merlin Moncure
 Question 1: Is your writeback cache really disabled in Linux, on the
 harddrive? Windows fsync will *write through the disk write cache* if
 the driver is properly implemented. AFAIK, on Linux if write cache is
 enabled on the drive, fsync will only get into the cache.
 800tps sounds unreasonably high on a notebook.
 
 Question 2: Please try disabling the stats connector and see if that
 helps. Merlin Moncure reported some scalability issues with the stats
 collector previously.
 
 
  Several yeas ago (about 1997-1998) Oleg Bartunov and me had
  the same performance results (Linux vs Windows NT + cygwin).
  It was the discussion at this list with resume that the
  reason is the implementation of shared memory under Windows.
  Every IPC operation results the HDD access.
 
 It shouldn't in 8.0 - at least not on the native win32. Don't know
about
 cygwin.

The price on win32 for row level stats collector is fairly high.  Also
the stats collector resets randomly under very high loads.  However I
don't think this is what's going on here.

Also, IPC is out.  The win32 IPC implementation is fine, if somewhat
slower than linux implementation.  It's all about syncing, IMO.

Merlin

---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [HACKERS] Help me recovering data

2005-02-16 Thread pgsql
 The checkpointer is entirely incapable of either detecting the problem
 (it doesn't have enough infrastructure to examine pg_database in a
 reasonable way) or preventing backends from doing anything if it did
 know there was a problem.

 Well, I guess I meant 'some regularly running process'...

I think people'd rather their db just stopped accepting new transactions
rather than just losing data...

 Not being able to issue new transactions *is* data loss --- how are you
 going to get the system out of that state?

 Not allowing any transactions except a vacuum...

 autovacuum is the correct long-term solution to this, not some kind of
 automatic hara-kiri.

 Yeah, seems like it should really happen soon...

 Chris

Maybe I'm missing something, but shouldn't the prospect of data loss (even
in the presense of admin ignorance) be something that should be
unacceptable? Certainly within the realm normal PostgreSQL operation.



---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Tom Lane
[EMAIL PROTECTED] writes:
 Maybe I'm missing something, but shouldn't the prospect of data loss (even
 in the presense of admin ignorance) be something that should be
 unacceptable? Certainly within the realm normal PostgreSQL operation.

[ shrug... ]  The DBA will always be able to find a way to shoot himself
in the foot.  We've seen several instances of people blowing away
pg_xlog and pg_clog, for example, because they don't need log files.
Or how about failing to keep adequate backups?  That's a sure way for an
ignorant admin to lose data too.

Once autovacuum gets to the point where it's used by default, this
particular failure mode should be a thing of the past, but in the
meantime I'm not going to panic about it.

regards, tom lane

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Help me recovering data

2005-02-16 Thread pgsql
 [EMAIL PROTECTED] writes:
 Maybe I'm missing something, but shouldn't the prospect of data loss
 (even
 in the presense of admin ignorance) be something that should be
 unacceptable? Certainly within the realm normal PostgreSQL operation.

 [ shrug... ]  The DBA will always be able to find a way to shoot himself
 in the foot.  We've seen several instances of people blowing away
 pg_xlog and pg_clog, for example, because they don't need log files.
 Or how about failing to keep adequate backups?  That's a sure way for an
 ignorant admin to lose data too.

There is a difference between actively doing something stupid and failing
to realize a maintenence task is required.

PostgreSQL should stop working. When the admin tries to understand why,
they can read a troubleshooting FAQ and say oops, I gotta run this vacuum
thingy. That is a whole lot better than falling off a cliff you didn't
even know was there.


 Once autovacuum gets to the point where it's used by default, this
 particular failure mode should be a thing of the past, but in the
 meantime I'm not going to panic about it.

I don't know how to say this without sounding like a jerk, (I guess that's
my role sometimes) but would you go back and re-read this sentence?

To paraphrase: I know this causes a catestrophic data loss, and we have
plans to fix it in the future, but for now, I'm not going panic about it.

What would you do if the FreeBSD group or Linux kernel group said this
about a file system? If you failed to run fsck after 100 mounts, you loose
your data?

I thought PostgreSQL was about protecting your data. How many times have
we smugly said, yea, you can use MySQL if you don't care about your
data. Any data loss caused by postgresql should be seen as unacceptable.
It's funny, while I've known about this for a while, and it has always
seemed a sort of distant edge condition that is easily avoided. However,
with todays faster machines and disks, it is easier to reach this
limitation than ever before. All PostgreSQL needs is one or two VERY UPSET
mainstream users who lose data to completely reverse the momemntum that it
is gaining.

No amount of engineering discussion about it not being the fault of
postgresql will be lost, and rightfully so, IMHO.

Sorry.


---(end of broadcast)---
TIP 7: don't forget to increase your free space map settings


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Stephan Szabo
On Wed, 16 Feb 2005 [EMAIL PROTECTED] wrote:

 
  Once autovacuum gets to the point where it's used by default, this
  particular failure mode should be a thing of the past, but in the
  meantime I'm not going to panic about it.

 I don't know how to say this without sounding like a jerk, (I guess that's
 my role sometimes) but would you go back and re-read this sentence?

 To paraphrase: I know this causes a catestrophic data loss, and we have
 plans to fix it in the future, but for now, I'm not going panic about it.

Do you have a useful suggestion about how to fix it?  Stop working is
handwaving and merely basically saying, one of you people should do
something about this is not a solution to the problem, it's not even an
approach towards a solution to the problem.

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Joshua D. Drake

in the foot.  We've seen several instances of people blowing away
pg_xlog and pg_clog, for example, because they don't need log files.
Or how about failing to keep adequate backups?  That's a sure way for an
ignorant admin to lose data too.
   

There is a difference between actively doing something stupid and failing
to realize a maintenence task is required.
PostgreSQL should stop working. When the admin tries to understand why,
they can read a troubleshooting FAQ and say oops, I gotta run this vacuum
thingy. That is a whole lot better than falling off a cliff you didn't
even know was there.
 

There is another way to look at this as lends itself to mohawksoft's
argument.
More often than not DBAs and Sysadmins are neither one. They are people
that get shoved into the job because they happen to mention around
the water cooler that they once installed linux/freebsd -- whatever.
Maybe it is an executive that has some of his brains left after
sitting behind a desk all day for the last 10 years. One day he/she
gets a thought in his head to create a new project named foo.
He does not want to waste his internal resources so said executive
decides he will do it himself as a hobby. For some reason, the project
actually succeeds (I have seen this many times) and the company starts
using it.
Well guess what... it uses PostgreSQL. The guy isn't a DBA, heck he is
even really a programmer. He had know idea about this vacuum thing. He
had never heard of other databases having to do it.
So they run for a year, and then all of a sudden **BOOM** the world ends.
Do you think they are going to care that we documented the issue? Uhmmm
no they won't. Chances are they will drop kick PostgreSQL and bad talk it
to all their other executive friends.
In short, this whole argument has the mark of irresponsibility on both 
parties but it is is the PostgreSQL projects responisbility to make 
reasonable effort to produce a piece of software that doesn't break.

We are not talking about a user who ran a query: delete from foo;
At this point we have a known critical bug. Usually the PostgreSQL community
is all over critical bugs. Why is this any different?
It sounds to me that people are just annoyed that users don't RTFM. Get 
over it. Most won't. If users RTFM more often, it would put most support 
companies out of business.

Sincerely,
Joshua D. Drake
--
Command Prompt, Inc., home of Mammoth PostgreSQL - S/ODBC and S/JDBC
Postgresql support, programming shared hosting and dedicated hosting.
+1-503-667-4564 - [EMAIL PROTECTED] - http://www.commandprompt.com
PostgreSQL Replicator -- production quality replication for PostgreSQL
begin:vcard
fn:Joshua Drake
n:Drake;Joshua
org:Command Prompt, Inc.
adr:;;PO Box 215 ;Cascade Locks;OR;97014;US
email;internet:[EMAIL PROTECTED]
title:Consultant
tel;work:503-667-4564
tel;fax:503-210-0334
x-mozilla-html:FALSE
url:http://www.commandprompt.com
version:2.1
end:vcard


---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Christopher Kings-Lynne
At this point we have a known critical bug. Usually the PostgreSQL 
community
is all over critical bugs. Why is this any different?

It sounds to me that people are just annoyed that users don't RTFM. Get 
over it. Most won't. If users RTFM more often, it would put most support 
companies out of business.
I wonder if I should point out that we just had 3 people suffering XID 
wraparound failure in 2 days in the IRC channel...

Chris
---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Joshua D. Drake

Do you have a useful suggestion about how to fix it?  Stop working is
handwaving and merely basically saying, one of you people should do
something about this is not a solution to the problem, it's not even an
approach towards a solution to the problem.
 

I believe that the ability for PostgreSQL to stop accepting
queries and to log to the file or STDERR why it stopped working
and how to resolve it is appropriate.
Also it is probably appropriate to warn ahead of time...
WARNING: Only 50,000 transactions left before lock out
 or something like that.
J

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]
 


--
Command Prompt, Inc., home of Mammoth PostgreSQL - S/ODBC and S/JDBC
Postgresql support, programming shared hosting and dedicated hosting.
+1-503-667-4564 - [EMAIL PROTECTED] - http://www.commandprompt.com
PostgreSQL Replicator -- production quality replication for PostgreSQL
begin:vcard
fn:Joshua Drake
n:Drake;Joshua
org:Command Prompt, Inc.
adr:;;PO Box 215 ;Cascade Locks;OR;97014;US
email;internet:[EMAIL PROTECTED]
title:Consultant
tel;work:503-667-4564
tel;fax:503-210-0334
x-mozilla-html:FALSE
url:http://www.commandprompt.com
version:2.1
end:vcard


---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Joshua D. Drake
Christopher Kings-Lynne wrote:
At this point we have a known critical bug. Usually the PostgreSQL 
community
is all over critical bugs. Why is this any different?

It sounds to me that people are just annoyed that users don't RTFM. 
Get over it. Most won't. If users RTFM more often, it would put most 
support companies out of business.

I wonder if I should point out that we just had 3 people suffering XID 
wraparound failure in 2 days in the IRC channel...
I have had half a dozen new customers in the last six months that have
had the same problem. Nothing like the phone call:
Uhmmm I am a new customer, help I can't see my databases.
Sincerely,
Joshua D. Drake

Chris

--
Command Prompt, Inc., home of Mammoth PostgreSQL - S/ODBC and S/JDBC
Postgresql support, programming shared hosting and dedicated hosting.
+1-503-667-4564 - [EMAIL PROTECTED] - http://www.commandprompt.com
PostgreSQL Replicator -- production quality replication for PostgreSQL
begin:vcard
fn:Joshua Drake
n:Drake;Joshua
org:Command Prompt, Inc.
adr:;;PO Box 215 ;Cascade Locks;OR;97014;US
email;internet:[EMAIL PROTECTED]
title:Consultant
tel;work:503-667-4564
tel;fax:503-210-0334
x-mozilla-html:FALSE
url:http://www.commandprompt.com
version:2.1
end:vcard


---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Stephan Szabo

On Wed, 16 Feb 2005, Joshua D. Drake wrote:


 Do you have a useful suggestion about how to fix it?  Stop working is
 handwaving and merely basically saying, one of you people should do
 something about this is not a solution to the problem, it's not even an
 approach towards a solution to the problem.
 
 
 I believe that the ability for PostgreSQL to stop accepting
 queries and to log to the file or STDERR why it stopped working
 and how to resolve it is appropriate.

Right, but since the how to resolve it currently involves executing a
query, simply stopping dead won't allow you to resolve it. Also, if we
stop at the exact wraparound point, can we run into problems actually
trying to do the vacuum if that's still the resolution technique?  If so,
how far in advance of wraparound must we stop to guarantee it will
succeed? It's not rocket science, but figuring such things out is part of
actually making a workable solution.



---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Help me recovering data

2005-02-16 Thread pgsql
 On Wed, 16 Feb 2005 [EMAIL PROTECTED] wrote:

 
  Once autovacuum gets to the point where it's used by default, this
  particular failure mode should be a thing of the past, but in the
  meantime I'm not going to panic about it.

 I don't know how to say this without sounding like a jerk, (I guess
 that's
 my role sometimes) but would you go back and re-read this sentence?

 To paraphrase: I know this causes a catestrophic data loss, and we have
 plans to fix it in the future, but for now, I'm not going panic about
 it.

 Do you have a useful suggestion about how to fix it?  Stop working is
 handwaving and merely basically saying, one of you people should do
 something about this is not a solution to the problem, it's not even an
 approach towards a solution to the problem.

Actually, it is not a solution to the problem of losing data. It is a drop
dead last ditch failsafe that EVERY PRODUCT should have before losing
data.





---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Stephan Szabo

On Wed, 16 Feb 2005 [EMAIL PROTECTED] wrote:

  On Wed, 16 Feb 2005 [EMAIL PROTECTED] wrote:
 
  
   Once autovacuum gets to the point where it's used by default, this
   particular failure mode should be a thing of the past, but in the
   meantime I'm not going to panic about it.
 
  I don't know how to say this without sounding like a jerk, (I guess
  that's
  my role sometimes) but would you go back and re-read this sentence?
 
  To paraphrase: I know this causes a catestrophic data loss, and we have
  plans to fix it in the future, but for now, I'm not going panic about
  it.
 
  Do you have a useful suggestion about how to fix it?  Stop working is
  handwaving and merely basically saying, one of you people should do
  something about this is not a solution to the problem, it's not even an
  approach towards a solution to the problem.

 Actually, it is not a solution to the problem of losing data. It is a drop
 dead last ditch failsafe that EVERY PRODUCT should have before losing
 data.

Let's try again. Saying, one of you people should do something about
this is not a solution to the problem or an approach thereto.  Stop
working is handwaving since I see no approach therein that allows the
user to actually recover the data.


---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] Design notes for BufMgrLock rewrite

2005-02-16 Thread Jim C. Nasby
On Sun, Feb 13, 2005 at 06:56:47PM -0500, Tom Lane wrote:
 Bruce Momjian pgman@candle.pha.pa.us writes:
  Tom Lane wrote:
  One thing I realized quickly is that there is no natural way in a clock
  algorithm to discourage VACUUM from blowing out the cache.  I came up
  with a slightly ugly idea that's described below.  Can anyone do better?
 
  Uh, is the clock algorithm also sequential-scan proof?  Is that
  something that needs to be done too?
 
 If you can think of a way.  I don't see any way to make the algorithm
 itself scan-proof, but if we modified the bufmgr API to tell ReadBuffer
 (or better ReleaseBuffer) that a request came from a seqscan, we could
 do the same thing as for VACUUM.  Whether that's good enough isn't
 clear --- for one thing it would kick up the contention for the
 BufFreelistLock, and for another it might mean *too* short a lifetime
 for blocks fetched by seqscan.

Is there anything (in the buffer headers?) that keeps track of buffer
access frequency? *BSD uses a mechanism to track roughly how often a page
in memory has been accessed, and uses that to determine what pages to
free. In 4.3BSD, a simple 2 hand clock sweep is used; the first hand
sets a not-used bit in each page, the second hand (which sweeps a fixed
distance behind the 1st hand) checks this bit and if it's still clear
moves the page either to the inactive list if it's dirty, or to the
cache list if it's clean. There is also a free list, which is generally
fed by the cache and inactive lists.

Postgresql has a big advantage over an OS though, in that it can
tolerate much more overhead in buffer access code than an OS can in it's
vm system. If I understand correctly, any use of a buffer at all means a
lock needs to be aquired on it's buffer header. As part of this access,
a counter could be incremented with very little additional cost. A
background process would then sweep through 'active' buffers,
decrementing this counter by some amount. Any buffer that was
decremented below 0 would be considered inactive, and a candidate for
being freed. The advantage of using a counter instead of a simple active
bit is that buffers that are (or have been) used heavily will be able to
go through several sweeps of the clock before being freed. Infrequently
used buffers (such as those from a vacuum or seq.  scan), would get
marked as inactive the first time they were hit by the clock hand.
-- 
Jim C. Nasby, Database Consultant   [EMAIL PROTECTED] 
Give your computer some brain candy! www.distributed.net Team #1828

Windows: Where do you want to go today?
Linux: Where do you want to go tomorrow?
FreeBSD: Are you guys coming, or what?

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [HACKERS] Help me recovering data

2005-02-16 Thread pgsql

 On Wed, 16 Feb 2005, Joshua D. Drake wrote:


 Do you have a useful suggestion about how to fix it?  Stop working is
 handwaving and merely basically saying, one of you people should do
 something about this is not a solution to the problem, it's not even
 an
 approach towards a solution to the problem.
 
 
 I believe that the ability for PostgreSQL to stop accepting
 queries and to log to the file or STDERR why it stopped working
 and how to resolve it is appropriate.

 Right, but since the how to resolve it currently involves executing a
 query, simply stopping dead won't allow you to resolve it. Also, if we
 stop at the exact wraparound point, can we run into problems actually
 trying to do the vacuum if that's still the resolution technique?  If so,
 how far in advance of wraparound must we stop to guarantee it will
 succeed? It's not rocket science, but figuring such things out is part of

I would say, have a GUC parameter set at 1000 transactions. When fewer
than this number are available, postmaster will not run and issue a
message

Transaction wrap-around error! You must run vacuum in stingle user
postgres mode to correct it, to avoid this message run the vacuum command
more frequently

Hell, why not block  all the PostgreSQL processes and run vacuum? But, for
now, versions of PostgreSQL should stop before losing data.


---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] Help me recovering data

2005-02-16 Thread pgsql
 Stephan Szabo [EMAIL PROTECTED] writes:
 Right, but since the how to resolve it currently involves executing a
 query, simply stopping dead won't allow you to resolve it. Also, if we
 stop at the exact wraparound point, can we run into problems actually
 trying to do the vacuum if that's still the resolution technique?

 We'd have to do something with a fair amount of slop.  The idea I was
 toying with just now involved a forcible shutdown once we get within
 say 100,000 transactions of a wrap failure; but apply this check only
 when in interactive operation.  This would allow the DBA to perform
 the needed VACUUMing manually in a standalone backend.

 The real question here is exactly how large a cluestick do you want to
 hit the DBA with.  I don't think we can guarantee no data loss with
 anything less than forced shutdown, but that's not so much a cluestick
 as a clue howitzer.

I think a DBA or accidental DBA would prefer stating in a meeting:

Yea, the database shut down because I didn't perform normal maintenence,
its fixed now and we have a script in place so it won't happen again

Over

Yea, the database lost all its data and we have to restore from our last
backup because I didn't perform normal maintenence.

One gets a boy are you lucky over a you're fired.


 Maybe

 (a) within 200,000 transactions of wrap, every transaction start
 delivers a WARNING message;

 (b) within 100,000 transactions, forced shutdown as above.

I agree.

---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] Help me recovering data

2005-02-16 Thread pgsql

 On Wed, 16 Feb 2005 [EMAIL PROTECTED] wrote:

  On Wed, 16 Feb 2005 [EMAIL PROTECTED] wrote:
 
  
   Once autovacuum gets to the point where it's used by default, this
   particular failure mode should be a thing of the past, but in the
   meantime I'm not going to panic about it.
 
  I don't know how to say this without sounding like a jerk, (I guess
  that's
  my role sometimes) but would you go back and re-read this sentence?
 
  To paraphrase: I know this causes a catestrophic data loss, and we
 have
  plans to fix it in the future, but for now, I'm not going panic about
  it.
 
  Do you have a useful suggestion about how to fix it?  Stop working
 is
  handwaving and merely basically saying, one of you people should do
  something about this is not a solution to the problem, it's not even
 an
  approach towards a solution to the problem.

 Actually, it is not a solution to the problem of losing data. It is a
 drop
 dead last ditch failsafe that EVERY PRODUCT should have before losing
 data.

 Let's try again. Saying, one of you people should do something about
 this is not a solution to the problem or an approach thereto.  Stop
 working is handwaving since I see no approach therein that allows the
 user to actually recover the data.



Well, it is sort of the the Hockey strike, now that it seems like stoping
normal operation is better than losing billions of rows of data. We can
decide who to do it and how to correct it.



---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Tom Lane
Stephan Szabo [EMAIL PROTECTED] writes:
 Right, but since the how to resolve it currently involves executing a
 query, simply stopping dead won't allow you to resolve it. Also, if we
 stop at the exact wraparound point, can we run into problems actually
 trying to do the vacuum if that's still the resolution technique?

We'd have to do something with a fair amount of slop.  The idea I was
toying with just now involved a forcible shutdown once we get within
say 100,000 transactions of a wrap failure; but apply this check only
when in interactive operation.  This would allow the DBA to perform
the needed VACUUMing manually in a standalone backend.

The real question here is exactly how large a cluestick do you want to
hit the DBA with.  I don't think we can guarantee no data loss with
anything less than forced shutdown, but that's not so much a cluestick
as a clue howitzer.

Maybe

(a) within 200,000 transactions of wrap, every transaction start
delivers a WARNING message;

(b) within 100,000 transactions, forced shutdown as above.

regards, tom lane

---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [HACKERS] Design notes for BufMgrLock rewrite

2005-02-16 Thread Tom Lane
Jim C. Nasby [EMAIL PROTECTED] writes:
 The advantage of using a counter instead of a simple active
 bit is that buffers that are (or have been) used heavily will be able to
 go through several sweeps of the clock before being freed. Infrequently
 used buffers (such as those from a vacuum or seq.  scan), would get
 marked as inactive the first time they were hit by the clock hand.

Hmm.  It would certainly be nearly as easy to adjust a counter as to
manipulate the RECENTLY_USED flag bit that's in the patch now.  (You
could imagine the RECENTLY_USED flag bit as a counter with max value 1.)

What I'm envisioning is that pinning (actually unpinning) a buffer
increments the counter (up to some limit), and the clock sweep
decrements it (down to zero), and only buffers with count zero are taken
by the sweep for recycling.  That could work well, but I think the limit
needs to be relatively small, else we could have the clock sweep having
to go around many times before it finally frees a buffer.  Any thoughts
about that?  Anyone seen any papers about this sort of algorithm?

regards, tom lane

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Stephan Szabo
On Wed, 16 Feb 2005, Tom Lane wrote:

 Stephan Szabo [EMAIL PROTECTED] writes:
  Right, but since the how to resolve it currently involves executing a
  query, simply stopping dead won't allow you to resolve it. Also, if we
  stop at the exact wraparound point, can we run into problems actually
  trying to do the vacuum if that's still the resolution technique?

 We'd have to do something with a fair amount of slop.  The idea I was
 toying with just now involved a forcible shutdown once we get within
 say 100,000 transactions of a wrap failure; but apply this check only
 when in interactive operation.  This would allow the DBA to perform
 the needed VACUUMing manually in a standalone backend.

 The real question here is exactly how large a cluestick do you want to
 hit the DBA with.  I don't think we can guarantee no data loss with
 anything less than forced shutdown, but that's not so much a cluestick
 as a clue howitzer.

 Maybe

 (a) within 200,000 transactions of wrap, every transaction start
 delivers a WARNING message;

 (b) within 100,000 transactions, forced shutdown as above.

This seems reasonable, although perhaps the former could be something
configurable.  I'm not sure there's a good reason to allow the latter to
change unless there'd ever be a case where 100,000 transactions wasn't
enough to vacuum or something like that.

All in all, I figure that odds are very high that if someone isn't
vacuuming in the rest of the transaction id space, either the transaction
rate is high enough that 100,000 warning may not be enough or they aren't
going to pay attention anyway and the howitzer might not be bad.

---(end of broadcast)---
TIP 8: explain analyze is your friend


[HACKERS] win32 performance - fsync question

2005-02-16 Thread E.Rodichev
Hi,
looking for the way how to increase performance at Windows XP box, I found
the parameters
#fsync = true   # turns forced synchronization on or off
#wal_sync_method = fsync# the default varies across platforms:
# fsync, fdatasync, open_sync, or open_datasync
I have no idea how it works with win32. May I try fsync = false, or it is
dangerous? Which of wal_sync_method may I try at WinXP?
Regards,
E.R.
_
Evgeny Rodichev  Sternberg Astronomical Institute
email: [EMAIL PROTECTED]  Moscow State University
Phone: 007 (095) 939 2383
Fax:   007 (095) 932 8841   http://www.sai.msu.su/~er
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
   (send unregister YourEmailAddressHere to [EMAIL PROTECTED])


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Bruno Wolff III
On Wed, Feb 16, 2005 at 09:38:31 -0800,
  Stephan Szabo [EMAIL PROTECTED] wrote:
 On Wed, 16 Feb 2005, Tom Lane wrote:
 
  (a) within 200,000 transactions of wrap, every transaction start
  delivers a WARNING message;
 
  (b) within 100,000 transactions, forced shutdown as above.
 
 This seems reasonable, although perhaps the former could be something
 configurable.  I'm not sure there's a good reason to allow the latter to
 change unless there'd ever be a case where 100,000 transactions wasn't
 enough to vacuum or something like that.

I don't think there is much point in making it configurable. If they knew
to do that they would most likely know to vacuum as well.

However, 100K out of 1G seems too small. Just to get wrap around there
must be a pretty high transaction rate, so 100K may not give much warning.
1M or 10M seem to be better.

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Richard Huxton
Stephan Szabo wrote:
On Wed, 16 Feb 2005, Tom Lane wrote:
Stephan Szabo [EMAIL PROTECTED] writes:
(a) within 200,000 transactions of wrap, every transaction start
delivers a WARNING message;
(b) within 100,000 transactions, forced shutdown as above.

This seems reasonable, although perhaps the former could be something
configurable.  I'm not sure there's a good reason to allow the latter to
change unless there'd ever be a case where 100,000 transactions wasn't
enough to vacuum or something like that.
All in all, I figure that odds are very high that if someone isn't
vacuuming in the rest of the transaction id space, either the transaction
rate is high enough that 100,000 warning may not be enough or they aren't
going to pay attention anyway and the howitzer might not be bad.
How would people feel about stopping after the first 100 transactions too?
Pro: Teaches the lesson straight away.
Con: Irritating
Con: Might not be enough time for automated installers
--
  Richard Huxton
  Archonet Ltd
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to [EMAIL PROTECTED] so that your
 message can get through to the mailing list cleanly


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Andrew Dunstan

Tom Lane wrote:
Maybe
(a) within 200,000 transactions of wrap, every transaction start
delivers a WARNING message;
(b) within 100,000 transactions, forced shutdown as above.
 

This seems sound enough, but if the DBA and/or SA can't be bothered 
reading the docs where this topic features quite prominently, I suspect 
the warning messages won't have much effect either. Basically ISTM we're 
talking about people who *need* a clue howitzer.

This will possibly hit us more now we have the Windows port (or maybe 
not, if the Windows servers are regularly rebooted ;-) )

cheers
andrew
---(end of broadcast)---
TIP 2: you can get off all lists at once with the unregister command
   (send unregister YourEmailAddressHere to [EMAIL PROTECTED])


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Tom Lane
Stephan Szabo [EMAIL PROTECTED] writes:
 All in all, I figure that odds are very high that if someone isn't
 vacuuming in the rest of the transaction id space, either the transaction
 rate is high enough that 100,000 warning may not be enough or they aren't
 going to pay attention anyway and the howitzer might not be bad.

Yeah.  It's easy to imagine scenarios where the majority of the warnings
go into the bit bucket (because they are going to noninteractive client
applications that just ignore NOTICE messages).  So I think it's
appropriate to be delivering the warnings for a good long time, in hopes
that someone at least occasionally fires up psql and happens to actually
see them.  Something like 100K or 1M transactions feels about right
to me.

Pulling the failure trigger with 100K transactions still to go is surely
overly conservative, but compared to the size of the ID space it is not
worth noticing.

As far as the actual implementation, I was envisioning adding a limiting
XID variable and a database name variable to shared memory (protected by
the same LWLock that protects the nextXID counter).  These would
be computed and loaded during the bootstrap process, right after we
finish WAL replay if any.  It would probably cost us one XID to do this
(though maybe it could be done without running a real transaction?  This
ties in with my thoughts about replacing GetRawDatabaseInfo with a flat
file...), but one XID per postmaster start attempt is hopefully not
gonna kill us.  Subsequently, any VACUUM that updates a datfrozenxid
entry in pg_database would update these variables to reflect the new
safe limit and the name of the database with the currently oldest
datfrozenxid.  This would allow a very cheap comparison during
GetNewTransactionId to see if we are near enough to generate a warning:
WARNING: database foo must be vacuumed within 58372 transactions
or past the limit and generate an error:
ERROR: database is shut down to avoid wraparound data loss in database foo
HINT: Stop the postmaster and use a standalone backend to VACUUM in foo.
In the error case, we could error out *without* advancing nextXID,
so that even automated clients continually retrying failed transactions
couldn't blow past the safety margin.

regards, tom lane

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Tom Lane
Bruno Wolff III [EMAIL PROTECTED] writes:
 I don't think there is much point in making it configurable. If they knew
 to do that they would most likely know to vacuum as well.

Agreed.

 However, 100K out of 1G seems too small. Just to get wrap around there
 must be a pretty high transaction rate, so 100K may not give much warning.
 1M or 10M seem to be better.

Good point.  Even 10M is less than 1% of the ID space.  Dunno about you,
but the last couple cars I've owned start flashing warnings when the gas
tank is about 20% full, not 1% full...

regards, tom lane

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [HACKERS] UTF8 or Unicode

2005-02-16 Thread Agent M
On Feb 14, 2005, at 9:27 PM, Abhijit Menon-Sen wrote:

I know UTF8 is a type of unicode but do we need to rename anything
from Unicode to UTF8?
I don't know. I'll go through the documentation to see if I can find
anything that needs changing.
It's not the documentation that is wrong. Specifying the database 
encoding as Unicode is simply a bug (see initdb). What if 
postgresql supports UTF-16 in the future? What would you call it?

Also, the backend protocol also uses UNICODE when specifying the 
encoding. All the other encoding names are specified correctly AFAICS.

I brought this up before:
http://archives.postgresql.org/pgsql-hackers/2004-10/msg00811.php
We could make UTF8 the canonical form in the aliasing mechanism, but
beta 4 is a bit late to come up with this kind of idea.
--
Peter Eisentraut
http://developer.postgresql.org/~petere/


---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to [EMAIL PROTECTED] so that your
 message can get through to the mailing list cleanly


[HACKERS] Urgent problem: Unicode characters greater than or equal to 0x10000 are not supported

2005-02-16 Thread Gilles
Hi all,
When I try to input a unicode caracter which code is greater than 
U+2, phpPgAdmin returns the following error message :

ERROR:  Unicode characters greater than or equal to 0x1 are not 
supported

Could someone fix this problem ?
If yes, would you please tell me where can i download the new postgre 
debian package.

Actually, i need this limitation to be pushed at least to U+2F800, but 
10FFFB would even be better (it looks to be the last unicode character, 
according the gnome charmap).

I use Debian testing with psql 7.4.7
Also, I have experienced the same problem with MySQL 4.1.9, that's what 
made me try PostGre.

Thanks for your help,
Gilles Vigner
[EMAIL PROTECTED]

---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


[HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Sergey E. Koposov
Hi All

I have a quite strange problem with RETURN NEXT statement.
I have a big table with 500 millions of rows running on Postgres 8.0. 
 Table public.usno
 Column |  Type  | Modifiers 
++---
 ra | real   | 
 dec| real   | 
 bmag   | real   | 
 rmag   | real   | 
 ipix   | bigint | 
 errbox | box| 
Indexes:
box_ind rtree (errbox)
ipix_ind btree (ipix)
radec_ind btree (ra, dec)

I actually wrote some procedures in PL/SQL using dynamical queries, 
and once I obtained the following error. 
ERROR:  wrong record type supplied in RETURN NEXT
CONTEXT:  PL/pgSQL function yyy line 8 at return next

To solve the problem, I used just the following simple PL/SQL functions, and 
a query select * from yyy()

CREATE OR REPLACE FUNCTION xxx(refcursor) RETURNS refcursor AS '
DECLARE query varchar;
BEGIN 
query = ''SELECT * FROM usno'';
OPEN $1 FOR EXECUTE query;
RETURN $1;
END;
' LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION yyy() RETURNS SETOF usno AS '
DECLARE rec record; 
DECLARE cur refcursor;
BEGIN 
cur=xxx(''curs_name'');
LOOP
FETCH cur into rec;
RETURN NEXT rec;
EXIT WHEN NOT FOUND;
END LOOP;
RETURN;
END;
' LANGUAGE plpgsql;

I was quite surprised by this errors, because I have tried the same
functions on rather same (but smaller table) on Postgres 7.4.6 on my laptop
without any problems.

For debugging purposes, I just have created by hand on Postgres 8.0 machine 
the small table q3c with just two rows, but same structure as usno table. 
 Table public.q3c
 Column |  Type  | Modifiers 
++---
 ra | real   | 
 dec| real   | 
 bmag   | real   | 
 rmag   | real   | 
 ipix   | bigint | 
 errbox | box| 
Indexes:
box_ind1 rtree (errbox)
ipix_ind1 btree (ipix)
radec_ind1 btree (ra, dec)

And, after replacing usno-q3c in the xxx() and yyy(), the query 
select * from yyy() worked without problems!!! 

So, how can it be, that my PL/SQL functions works fine on one(smaller)
table, but fails on another(bigger) table.

Thanks in advance for any ideas. 
Sergey
PS
I have tried my code replacing the declaration 
rec record;  by rec TABLE_NAME%ROWTYPE, and it worked for both (big and
small table), but I don't understand, why it doesn't work with the type
record.


Sergey E. Koposov
Sternberg Astronomical Institute, Moscow University (Russia)
Max-Planck Institute for Astronomy (Germany) 
Internet: [EMAIL PROTECTED], http://lnfm1.sai.msu.su/~math/



---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


[HACKERS] Work on Table Inheritance

2005-02-16 Thread Eliot Simcoe
Hello everyone,

I'm working on a project which makes extensive use of the PostgreSQL table 
inheritance features and am interested in fixing some bugs I have come across. 
To my knowledge, triggers, primary keys, index, foreign key and unique 
constraints are not inherited. I am more than willing to put the time into 
learning the PgSQL source tree and creating/submitting patches to correct the 
above issues, but I need some help getting started. If there is anyone on the 
list familiar with this topic who could point me in the right direction, I'll 
start asap.

Thanks,
Eliot Simcoe

---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] Design notes for BufMgrLock rewrite

2005-02-16 Thread Kenneth Marshall
On Wed, Feb 16, 2005 at 12:33:38PM -0500, Tom Lane wrote:
 Jim C. Nasby [EMAIL PROTECTED] writes:
  The advantage of using a counter instead of a simple active
  bit is that buffers that are (or have been) used heavily will be able to
  go through several sweeps of the clock before being freed. Infrequently
  used buffers (such as those from a vacuum or seq.  scan), would get
  marked as inactive the first time they were hit by the clock hand.
 
 Hmm.  It would certainly be nearly as easy to adjust a counter as to
 manipulate the RECENTLY_USED flag bit that's in the patch now.  (You
 could imagine the RECENTLY_USED flag bit as a counter with max value 1.)
 
 What I'm envisioning is that pinning (actually unpinning) a buffer
 increments the counter (up to some limit), and the clock sweep
 decrements it (down to zero), and only buffers with count zero are taken
 by the sweep for recycling.  That could work well, but I think the limit
 needs to be relatively small, else we could have the clock sweep having
 to go around many times before it finally frees a buffer.  Any thoughts
 about that?  Anyone seen any papers about this sort of algorithm?
 
I have seen this algorithm described as a more generalized clock type
algorithm. As the size of the counter increases, up to the number of
buffers, the clock algorithm becomes LRU. One bit is the lightest
weight approximation. Increasing the number of bits or a count makes
the clock algorithm more closely approximate LRU. You need to balance
how long it takes to find a free buffer. That time increases as the
count size increases.

Ken

---(end of broadcast)---
TIP 7: don't forget to increase your free space map settings


Re: [HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Tom Lane
Sergey E. Koposov [EMAIL PROTECTED] writes:
 LOOP
 FETCH cur into rec;
 RETURN NEXT rec;
 EXIT WHEN NOT FOUND;
 END LOOP;
 RETURN;

Don't you think you should have the EXIT *above* the RETURN NEXT?
I would expect this to emit a bogus row of nulls after the last row
returned by the cursor.  (At least that's what I get with current
sources.  Pre-8.0 it might return the last row twice.)

Running it on a 500-million-row table would quite possibly run out of
memory or disk space, too, because RETURN NEXT accumulates all the
results before the function is actually exited.

regards, tom lane

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] win32 performance - fsync question

2005-02-16 Thread Merlin Moncure
 looking for the way how to increase performance at Windows XP box, I
found
 the parameters
 
 #fsync = true   # turns forced synchronization on or
off
 #wal_sync_method = fsync# the default varies across platforms:
  # fsync, fdatasync, open_sync, or
 open_datasync
 
 I have no idea how it works with win32. May I try fsync = false, or it
is
 dangerous? Which of wal_sync_method may I try at WinXP?

wal_sync_method does nothing on XP.  The fsync option will tremendously
increase performance on writes at the cost of possible data corruption
in the event of a expected server power down.

The main performance difference between win32 and various unix systems
is that fsync() takes much longer on win32 than linux.  

Merlin

---(end of broadcast)---
TIP 7: don't forget to increase your free space map settings


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Greg Stark

Joshua D. Drake [EMAIL PROTECTED] writes:

 Christopher Kings-Lynne wrote:
 
  I wonder if I should point out that we just had 3 people suffering XID
  wraparound failure in 2 days in the IRC channel...
 
 I have had half a dozen new customers in the last six months that have
 had the same problem. Nothing like the phone call:

How are so many people doing so many transactions so soon after installing?

To hit wraparound you have to do a billion transactions? (With a `B') That
takes real work. If you did 1,000 txn/minute for every minute of every day it
would still take a couple years to get there.

And most databases get a mix of updates and selects. I would expect it would
be pretty hard to go that long with any significant level of update activity
and no vacuums and not notice the performance problems from the dead tuples.

What am I missing. Is there a significant percentage of the user base that's
doing nothing but loading huge static databases and then performing massive
loads (like thousands of queries per second) of purely read-only queries
against them?

-- 
greg


---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Tom Lane
Sergey E. Koposov [EMAIL PROTECTED] writes:
 Concerning to the exact form of my functions (using cursors, but still
 collecting all the data in the memory). As I understand this is the only one
 way (or just the simplest way ???) 
 to execute fully dynamic queries returned by C function in PL/SQL.
 For the real functions which I use, instead of 

 query = ''SELECT * FROM usno''; 

 I have 

 query = my_C_function(some_args);

Oh?  I'd make a small side bet that the underlying error is in your C
function --- possibly it's tromping on some data structure and the
damage doesn't have an effect till later.  If you can demonstrate the
problem without using any custom C functions then I'd be interested to
see a test case.

regards, tom lane

---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly


Re: [HACKERS] Work on Table Inheritance

2005-02-16 Thread elein
That the children tables do not inherit these items is mostly
by design, for better or worse.  Many people take advantage
of the indexes distribution across the tables and the ability
to have triggers and keys different across the inheritance
can be useful.

This is a controversial subject.  You should be familiar
with the original intentions of the UC postgres project with
regards to table inheritances as well as the well trodden
arguments for and against pushing all of the features
in the parent table into the children tables.  For example,
the is a Stonebraker not a Date implementation of table
inheritance.

--elein
[EMAIL PROTECTED]


On Wed, Feb 16, 2005 at 07:22:39AM -0800, Eliot Simcoe wrote:
 Hello everyone,
 
 I'm working on a project which makes extensive use of the PostgreSQL table 
 inheritance features and am interested in fixing some bugs I have come 
 across. To my knowledge, triggers, primary keys, index, foreign key and 
 unique constraints are not inherited. I am more than willing to put the time 
 into learning the PgSQL source tree and creating/submitting patches to 
 correct the above issues, but I need some help getting started. If there is 
 anyone on the list familiar with this topic who could point me in the right 
 direction, I'll start asap.
 
 Thanks,
 Eliot Simcoe
 
 ---(end of broadcast)---
 TIP 8: explain analyze is your friend
 

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Sergey E. Koposov
  For the real functions which I use, instead of 
 
  query = ''SELECT * FROM usno''; 
 
  I have 
 
  query = my_C_function(some_args);
 
 Oh?  I'd make a small side bet that the underlying error is in your C
 function --- possibly it's tromping on some data structure and the
 damage doesn't have an effect till later.  If you can demonstrate the
 problem without using any custom C functions then I'd be interested to
 see a test case.

I want to clarify, that I have a problem even without my C functions!! 

And show the full exact(but long) test case, which I performed just now
specially.

I begin from table usno with 500 millions records
 
wsdb=# \d usno
 Table public.usno
 Column |  Type  | Modifiers 
++---
 ra | real   | 
 dec| real   | 
 bmag   | real   | 
 rmag   | real   | 
 ipix   | bigint | 
 errbox | box| 
Indexes:
box_ind rtree (errbox)
ipix_ind btree (ipix)
radec_ind btree (ra, dec)



The declaration of the functions: 


CREATE OR REPLACE FUNCTION xxx(refcursor) RETURNS refcursor AS '
DECLARE query varchar;
BEGIN 
query = ''SELECT * FROM usno'';
OPEN $1 FOR EXECUTE query;
RETURN $1;
END;
' LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION yyy() RETURNS SETOF usno AS '
DECLARE rec record; 
DECLARE cur refcursor;
BEGIN 
cur=xxx(''curs_name'');
LOOP
FETCH cur into rec; 
EXIT WHEN NOT FOUND;
RETURN NEXT rec;
END LOOP;
RETURN;
END;
' LANGUAGE plpgsql;



wsdb=# \i q3c.sql  
CREATE FUNCTION
CREATE FUNCTION
wsdb=# select * from yyy();
ERROR:  wrong record type supplied in RETURN NEXT
CONTEXT:  PL/pgSQL function yyy line 10 at return next


We see the error

#

Now with q3c table instead of unso 



wsdb=# \d q3c  
 Table public.q3c
 Column |  Type  | Modifiers 
++---
 ra | real   | 
 dec| real   | 
 bmag   | real   | 
 rmag   | real   | 
 ipix   | bigint | 
 errbox | box| 
Indexes:
box_ind1 rtree (errbox)
ipix_ind1 btree (ipix)
radec_ind1 btree (ra, dec)


That table is not empty but filled by random numbers


wsdb=# select * from q3c;
 ra | dec | bmag | rmag | ipix |   errbox
+-+--+--+--+-
  3 |   3 |4 |5 |   55 | (5,6),(3,4)
  4 |   5 |6 |5 |   33 | (3,4),(1,2)
(2 rows)



Now the changed functions (notice, the only difference is 
replacing all occurencies of usno to q3c)


CREATE OR REPLACE FUNCTION xxx(refcursor) RETURNS refcursor AS '
DECLARE query varchar;
BEGIN 
query = ''SELECT * FROM q3c'';
OPEN $1 FOR EXECUTE query;
RETURN $1;
END;
' LANGUAGE plpgsql;

CREATE OR REPLACE FUNCTION yyy() RETURNS SETOF q3c AS '
DECLARE rec record; 
DECLARE cur refcursor;
BEGIN 
cur=xxx(''curs_name'');
LOOP
FETCH cur into rec;
EXIT WHEN NOT FOUND;
RETURN NEXT rec;
END LOOP;
RETURN;  
END; 
' LANGUAGE plpgsql;


wsdb=# drop FUNCTION yyy();
DROP FUNCTION
wsdb=# \i q3c.sql  
CREATE FUNCTION
CREATE FUNCTION
wsdb=# select * from yyy();
 ra | dec | bmag | rmag | ipix |   errbox
+-+--+--+--+-
  3 |   3 |4 |5 |   55 | (5,6),(3,4)
  4 |   5 |6 |5 |   33 | (3,4),(1,2)
(2 rows)

We don't see the error. But the only change was the change from one big
table to a smaller one with the precisely same structure.

### 


---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


[HACKERS] how to make table inherits another ?

2005-02-16 Thread Oleg Bartunov
Hi there,
is't possible to make table to be inherited from another table  in case
both tables already exist.  I tried to insert record to pg_inherits,
but it doesn't helped.
openfts=# select * from pg_inherits;
 inhrelid | inhparent | inhseqno 
--+---+--
  2617283 |   2417279 |1

did I miss something ?
Regards,
Oleg
_
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to [EMAIL PROTECTED] so that your
 message can get through to the mailing list cleanly


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Tom Lane
Greg Stark [EMAIL PROTECTED] writes:
 How are so many people doing so many transactions so soon after installing?

 To hit wraparound you have to do a billion transactions? (With a `B') That
 takes real work. If you did 1,000 txn/minute for every minute of every day it
 would still take a couple years to get there.

 And most databases get a mix of updates and selects. I would expect it would
 be pretty hard to go that long with any significant level of update activity
 and no vacuums and not notice the performance problems from the dead tuples.

I think the people who've managed to shoot themselves in the foot this
way are those who decided to optimize their cron jobs to only vacuum
their user tables, and forgot about the system catalogs.  So it's
probably more of a case of a little knowledge is a dangerous thing
than never having heard of VACUUM at all.  I too don't see that you
could possibly get to 2 billion transactions without having found out
that Postgres requires regular VACUUMing.

regards, tom lane

---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] how to make table inherits another ?

2005-02-16 Thread elein
You specify the inheritance on the creation of the child table.
See CREATE TABLE

--elein

On Wed, Feb 16, 2005 at 11:48:54PM +0300, Oleg Bartunov wrote:
 Hi there,
 
 is't possible to make table to be inherited from another table  in case
 both tables already exist.  I tried to insert record to pg_inherits,
 but it doesn't helped.
 
 openfts=# select * from pg_inherits;
  inhrelid | inhparent | inhseqno 
 --+---+--
   2617283 |   2417279 |1
 
 did I miss something ?
 
   Regards,
   Oleg
 _
 Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
 Sternberg Astronomical Institute, Moscow University (Russia)
 Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
 phone: +007(095)939-16-83, +007(095)939-23-83
 
 ---(end of broadcast)---
 TIP 3: if posting/reading through Usenet, please send an appropriate
  subscribe-nomail command to [EMAIL PROTECTED] so that your
  message can get through to the mailing list cleanly
 

---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [HACKERS] how to make table inherits another ?

2005-02-16 Thread Oleg Bartunov
On Wed, 16 Feb 2005, elein wrote:
You specify the inheritance on the creation of the child table.
See CREATE TABLE
I know this. I need to create inheritance for already created tables.
There is no way to do this using alter table, so I tried to 
define it by hand :)

--elein
On Wed, Feb 16, 2005 at 11:48:54PM +0300, Oleg Bartunov wrote:
Hi there,
is't possible to make table to be inherited from another table  in case
both tables already exist.  I tried to insert record to pg_inherits,
but it doesn't helped.
openfts=# select * from pg_inherits;
 inhrelid | inhparent | inhseqno
--+---+--
  2617283 |   2417279 |1
did I miss something ?
Regards,
Oleg
_
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to [EMAIL PROTECTED] so that your
 message can get through to the mailing list cleanly

Regards,
Oleg
_
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?
  http://www.postgresql.org/docs/faq


Re: [HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Sergey E. Koposov
On Wed, 16 Feb 2005, Richard Huxton wrote:
 This is just a shot in the dark, but I don't suppose you've dropped or 
 modified any columns in usno have you?
 
 I seem to remember some subtle problems with dropped columns and plpgsql 
 functions - could be one of those still left. It'd look like tablesize 
 was the problem because of course no-one's got time to test with 500 
 million test rows.

1) I have static tables. I dont modify them!
2) My test table is q3c (with 2 rows), and the table with 500 millions of
rows is not test table, it is the table with data :-)



 --
Richard Huxton
Archonet Ltd
 


---(end of broadcast)---
TIP 1: subscribe and unsubscribe commands go to [EMAIL PROTECTED]


Re: [HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Richard Huxton
Sergey E. Koposov wrote:
For the real functions which I use, instead of 

query = ''SELECT * FROM usno''; 

I have 

query = my_C_function(some_args);
Oh?  I'd make a small side bet that the underlying error is in your C
function --- possibly it's tromping on some data structure and the
damage doesn't have an effect till later.  If you can demonstrate the
problem without using any custom C functions then I'd be interested to
see a test case.

I want to clarify, that I have a problem even without my C functions!! 

And show the full exact(but long) test case, which I performed just now
specially.
I begin from table usno with 500 millions records
 
wsdb=# \d usno
 Table public.usno
 Column |  Type  | Modifiers 
++---
 ra | real   | 
 dec| real   | 
 bmag   | real   | 
 rmag   | real   | 
 ipix   | bigint | 
 errbox | box| 
Indexes:
box_ind rtree (errbox)
ipix_ind btree (ipix)
radec_ind btree (ra, dec)
This is just a shot in the dark, but I don't suppose you've dropped or 
modified any columns in usno have you?

I seem to remember some subtle problems with dropped columns and plpgsql 
functions - could be one of those still left. It'd look like tablesize 
was the problem because of course no-one's got time to test with 500 
million test rows.
--
  Richard Huxton
  Archonet Ltd

---(end of broadcast)---
TIP 7: don't forget to increase your free space map settings


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Joshua D. Drake

I think the people who've managed to shoot themselves in the foot this
way are those who decided to optimize their cron jobs to only vacuum
their user tables, and forgot about the system catalogs.  So it's
probably more of a case of a little knowledge is a dangerous thing
than never having heard of VACUUM at all.  I too don't see that you
could possibly get to 2 billion transactions without having found out
that Postgres requires regular VACUUMing.
I have had two new customers in the last year who didn't do any vacuums 
that had a rollover. The database sat in a backroom and did processing.
It just worked so they didn't worry about it.

It took one of them almost two years to get there but it does happen.
Sincerely,
Joshua D. Drake

regards, tom lane
---(end of broadcast)---
TIP 6: Have you searched our list archives?
   http://archives.postgresql.org

--
Command Prompt, Inc., your source for PostgreSQL replication,
professional support, programming, managed services, shared
and dedicated hosting. Home of the Open Source Projects plPHP,
plPerlNG, pgManage,  and pgPHPtoolkit.
Contact us now at: +1-503-667-4564 - http://www.commandprompt.com
begin:vcard
fn:Joshua D. Drake
n:Drake;Joshua D.
org:Command Prompt, Inc.
adr:;;PO Box 215;Cascade Locks;Oregon;97014;USA
email;internet:[EMAIL PROTECTED]
title:Consultant
tel;work:503-667-4564
tel;fax:503-210-0334
note:Command Prompt, Inc. is the largest and oldest US based commercial PostgreSQL support provider. We  provide the only commercially viable integrated PostgreSQL replication solution, but also custom programming, and support. We authored  the book Practical PostgreSQL, the procedural language plPHP, and adding trigger capability to plPerl.
x-mozilla-html:FALSE
url:http://www.commandprompt.com/
version:2.1
end:vcard


---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] how to make table inherits another ?

2005-02-16 Thread Tom Lane
Oleg Bartunov oleg@sai.msu.su writes:
 I know this. I need to create inheritance for already created tables.
 There is no way to do this using alter table, so I tried to 
 define it by hand :)

Did you remember to set relhassubclass for the parent table?
AFAIR, all that you really need are that and the pg_inherits row.

It'd be a good idea to install a pg_depend entry, and to modify the
child's pg_attribute rows to show the columns as inherited (attislocal
and attinhcount) but I believe the latter would only bite you if you
tried to do ALTER commands on the tables later.

regards, tom lane

---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] how to make table inherits another ?

2005-02-16 Thread Oleg Bartunov
On Wed, 16 Feb 2005, Tom Lane wrote:
Oleg Bartunov oleg@sai.msu.su writes:
I know this. I need to create inheritance for already created tables.
There is no way to do this using alter table, so I tried to
define it by hand :)
Did you remember to set relhassubclass for the parent table?
AFAIR, all that you really need are that and the pg_inherits row.
Aha, that works. Thanks, Tom.
It'd be a good idea to install a pg_depend entry, and to modify the
child's pg_attribute rows to show the columns as inherited (attislocal
and attinhcount) but I believe the latter would only bite you if you
tried to do ALTER commands on the tables later.
I'll save this info.
regards, tom lane
Regards,
Oleg
_
Oleg Bartunov, sci.researcher, hostmaster of AstroNet,
Sternberg Astronomical Institute, Moscow University (Russia)
Internet: oleg@sai.msu.su, http://www.sai.msu.su/~megera/
phone: +007(095)939-16-83, +007(095)939-23-83
---(end of broadcast)---
TIP 3: if posting/reading through Usenet, please send an appropriate
 subscribe-nomail command to [EMAIL PROTECTED] so that your
 message can get through to the mailing list cleanly


Re: [HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Tom Lane
Sergey E. Koposov [EMAIL PROTECTED] writes:
 But concerning to the added columns, I can say that before the column errbox
 didn't, and I revealed the problems began after adding it (together with
 index creation on that column).

Does starting a new backend session make the problem go away?

regards, tom lane

---(end of broadcast)---
TIP 9: the planner will ignore your desire to choose an index scan if your
  joining column's datatypes do not match


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Matthew T. O'Connor
Tom Lane wrote:
[EMAIL PROTECTED] writes:
 

Maybe I'm missing something, but shouldn't the prospect of data loss (even
in the presense of admin ignorance) be something that should be
unacceptable? Certainly within the realm normal PostgreSQL operation.
   

Once autovacuum gets to the point where it's used by default, this
particular failure mode should be a thing of the past, but in the
meantime I'm not going to panic about it.
Which I hope will be soon.
---(end of broadcast)---
TIP 6: Have you searched our list archives?
  http://archives.postgresql.org


Re: [HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Sergey E. Koposov
 Does starting a new backend session make the problem go away?

No 



---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Strange RETURN NEXT behaviour in Postgres 8.0

2005-02-16 Thread Tom Lane
Richard Huxton dev@archonet.com writes:
 I seem to remember some subtle problems with dropped columns and plpgsql 
 functions - could be one of those still left.

For instance:

regression=# create table usno (ra real, dec real, bmag real, rmag real,ipix 
int8);
CREATE TABLE
regression=# [ create Sergey's functions ]
regression=# insert into usno values(1,2,3,4);
INSERT 1132435 1
regression=# select * from yyy();
 ra | dec | bmag | rmag | ipix
+-+--+--+--
  1 |   2 |3 |4 |
(1 row)

regression=# alter table usno add column errbox box;
ALTER TABLE
regression=# select * from yyy();
 ra | dec | bmag | rmag | ipix | errbox
+-+--+--+--+
  1 |   2 |3 |4 |  |
(1 row)

regression=# alter table usno drop column errbox;
ALTER TABLE
regression=# select * from yyy();
ERROR:  wrong record type supplied in RETURN NEXT
CONTEXT:  PL/pgSQL function yyy line 8 at return next
regression=#

It looks like the code that handles returning a RECORD variable doesn't
cope with dropped columns in the function result rowtype.

(If you instead declare rec as usno%rowtype, you get a different set
of misbehaviors after adding/dropping columns, so that code path isn't
perfect either :-()

regards, tom lane

---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Gaetano Mendola
Greg Stark wrote:
 Joshua D. Drake [EMAIL PROTECTED] writes:
 
 
Christopher Kings-Lynne wrote:


I wonder if I should point out that we just had 3 people suffering XID
wraparound failure in 2 days in the IRC channel...

I have had half a dozen new customers in the last six months that have
had the same problem. Nothing like the phone call:
 
 
 How are so many people doing so many transactions so soon after installing?
 
 To hit wraparound you have to do a billion transactions? (With a `B') That
 takes real work. If you did 1,000 txn/minute for every minute of every day it
 would still take a couple years to get there.

We do ~4000 txn/minute so in 6 month you are screewd up...



Regards
Gaetano Mendola



---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Gaetano Mendola
Stephan Szabo wrote:
 On Wed, 16 Feb 2005 [EMAIL PROTECTED] wrote:
 
 
Once autovacuum gets to the point where it's used by default, this
particular failure mode should be a thing of the past, but in the
meantime I'm not going to panic about it.

I don't know how to say this without sounding like a jerk, (I guess that's
my role sometimes) but would you go back and re-read this sentence?

To paraphrase: I know this causes a catestrophic data loss, and we have
plans to fix it in the future, but for now, I'm not going panic about it.
 
 
 Do you have a useful suggestion about how to fix it?  Stop working is
 handwaving and merely basically saying, one of you people should do
 something about this is not a solution to the problem, it's not even an
 approach towards a solution to the problem.

Is not a solution but between loose data and shutdown the postmaster I
prefer the shutdown.

Regards
Gaetano Mendola



---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Gaetano Mendola
Tom Lane wrote:
 Bruno Wolff III [EMAIL PROTECTED] writes:
 
I don't think there is much point in making it configurable. If they knew
to do that they would most likely know to vacuum as well.
 
 
 Agreed.
 
 
However, 100K out of 1G seems too small. Just to get wrap around there
must be a pretty high transaction rate, so 100K may not give much warning.
1M or 10M seem to be better.
 
 
 Good point.  Even 10M is less than 1% of the ID space.  Dunno about you,
 but the last couple cars I've owned start flashing warnings when the gas
 tank is about 20% full, not 1% full...

BTW, why not do an automatic vacuum instead of shutdown ? At least the
DB do not stop working untill someone study what the problem is and
how solve it.


Regards
Gaetano Mendola


---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Tom Lane
Gaetano Mendola [EMAIL PROTECTED] writes:
 BTW, why not do an automatic vacuum instead of shutdown ? At least the
 DB do not stop working untill someone study what the problem is and
 how solve it.

No, the entire point of this discussion is to whup the DBA upside the
head with a big enough cluestick to get him to install autovacuum.

Once autovacuum is default, it won't matter anymore.

regards, tom lane

---(end of broadcast)---
TIP 8: explain analyze is your friend


[HACKERS] Apple disabled fsync??

2005-02-16 Thread Tom Lane
Found on a certain other DBMS' mailing list:

   * InnoDB: When MySQL/InnoDB is compiled on Mac OS X 10.2 or earlier,
 detect the operating system version at run time and use the
 `fcntl()' file flush method on Mac OS X versions 10.3 and later.
 Apple had disabled `fsync()' in Mac OS X for internal disk drives,
 which caused corruption at power outages.

If that claim is true then we are vulnerable to data corruption on power
failure on OS X.  Comments, test cases?

regards, tom lane

---(end of broadcast)---
TIP 8: explain analyze is your friend


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Greg Stark
Gaetano Mendola [EMAIL PROTECTED] writes:

 We do ~4000 txn/minute so in 6 month you are screewd up...

Sure, but if you ran without vacuuming for 6 months, wouldn't you notice the
huge slowdowns from all those dead tuples before that?

-- 
greg


---(end of broadcast)---
TIP 6: Have you searched our list archives?

   http://archives.postgresql.org


Re: [HACKERS] Design notes for BufMgrLock rewrite

2005-02-16 Thread Jim C. Nasby
On Wed, Feb 16, 2005 at 11:42:11AM -0600, Kenneth Marshall wrote:
 I have seen this algorithm described as a more generalized clock type
 algorithm. As the size of the counter increases, up to the number of
 buffers, the clock algorithm becomes LRU. One bit is the lightest
 weight approximation. Increasing the number of bits or a count makes
 the clock algorithm more closely approximate LRU. You need to balance
 how long it takes to find a free buffer. That time increases as the
 count size increases.

Yeah, the trick to this seems to be how you tweak the rate at which
stuff 'falls out' of the active list. I can think of 3 ways to
accomplish this:

1) Change the maximum value to count to (or the value at which a buffer
is considered no longer in use).

This has the disadvantage of changing how effective the count is. In an
extreme situation, it would retuce back to a single bit. It also won't
affect buffers that already have higher counts, meaning older data is
more likely to stay in buffer than newer data.

2) Change the amount the counter is incremented by on each use (and/or
the amount it's decremented by).

An example of this might be having the clock decrement by 10. Under a
light to medium load, the system might increment by 10 on each use, but
if the system starts getting pressed for free buffers, that could be
reduced.

A downside of this would be that it potentially requires more space in
each header to store a larger value. An advatage is that it allows more
flexability than #1. For example, if the decrement value is increased in
order to speed up reclaiming of buffers, it won't create a difference in
how buffers are weighted based on when they were accessed like #1 will.

3) Change the speed of the clock.

This is what BSD effectively does. The OS periodically checks to see how
many pages are available on the free list, as well as how many were
removed since the last check. This information is used to decide how
many pages the clock algorithm should attempt to free in the next time
period (which can be 0).

If a two-hand algorithm is used, the distance between the two hands can
also be varied.

I think #3 probably means you'd need a seperate process to handle the
clock and moving buffers to a free list. Or perhaps this gets tied in
with the background writer. This might mean more overhead, but it could
improve contention if it means only one process needs to aquire some of
these locks.

So much for a simple design discussion. :) Fortunately, #1 and #2 should
be easy to test. #3 will certainly require more code, but it would
probably be simpler to implement than having multiple backends running
the clock algorithm (which I think is the current plan).

Something else I thought of; by using a counter instead of a bit, you
can also 'pre-seed' buffers based on why they were populated. For
example, pages brought in from an index might start with a value of 4;
heap pages 3, heap pages from a seqscan 2, and pages from vacuum, 1, or
maybe even 0.
-- 
Jim C. Nasby, Database Consultant   [EMAIL PROTECTED] 
Give your computer some brain candy! www.distributed.net Team #1828

Windows: Where do you want to go today?
Linux: Where do you want to go tomorrow?
FreeBSD: Are you guys coming, or what?

---(end of broadcast)---
TIP 4: Don't 'kill -9' the postmaster


Re: [HACKERS] Help me recovering data

2005-02-16 Thread Dennis Bjorklund
On 17 Feb 2005, Greg Stark wrote:

 Gaetano Mendola [EMAIL PROTECTED] writes:
 
  We do ~4000 txn/minute so in 6 month you are screewd up...
 
 Sure, but if you ran without vacuuming for 6 months, wouldn't you notice the
 huge slowdowns from all those dead tuples before that?

Most people that we have seen on irc that run into the problem do vacuum
some tables, but forget to vacuum all. Then their tables work fine but
suddenly some system tables like pg_databases and pg_shadow become empty
since they never was vacuumed...

-- 
/Dennis Björklund


---(end of broadcast)---
TIP 5: Have you checked our extensive FAQ?

   http://www.postgresql.org/docs/faq