Hi, Tom,
Thank you so much for pointing out the problems. The first one seems very silly :-(. For the second one, I may stay out
oftrouble if I don't use transform() at all (I can tolerate some error without transform), am I right?
--- On Wed 07/11, Tom Lane < tgl@sss.pgh.pa.us > wrote:
From: Tom Lane [mailto: tgl@sss.pgh.pa.us]
To: delphet@excite.com
Cc: pgsql-general@postgresql.org
Date: Wed, 11 Jul 2007 15:33:41 -0400
Subject: Re: [GENERAL] exit code -1073741819
"Shuo Liu" <delphet@excite.com> writes:>> Whoa ... that is a whole lot more data than I'm used to seeing in>>
TopMemoryContext.How many stats dump lines are there exactly (from>> here to the crash report)? > OK, I didn't know
thatwas a surprise. There are about 600 stats dump lines > in between.Well, my suspicion was correct: there were
boatloadsof memory contexts,but we weren't seeing all of them. The answer is twofold:1. Your function is opening a
cursor(maybe more than one, I didn't readtoo carefully) on each iteration, and not closing it. This results ina
sizableamount of memory being eaten --- it looks like a couplehundred K per cursor on my machine. Eventually you run
outof memory.2. PostGIS has a bug that causes a guaranteed crash once you run out ofmemory, if you've been using
transform(),because it sets up a memorycontext that has no stats() method. That's why the context statsprintout failed
partwaythrough --- it crashed as soon as it came toone of the
PostGIS contexts.I've complained to the PostGIS folk about the latter, and hopefullythey'll fix it in their next
release. Meanwhile, you need to be morecareful about closing cursors when you're done with them. regards,
tomlane---------------------------(end of broadcast)---------------------------TIP 9: In versions below 8.0, the
plannerwill ignore your desire to choose an index scan if your joining column's datatypes do not match
_______________________________________________
Join Excite! - http://www.excite.com
The most personalized portal on the Web!