Memory exhausted in AllocSetAlloc

From: george young <gry(at)ll(dot)mit(dot)edu>
To: pgsql-sql(at)postgresql(dot)org
Subject: Memory exhausted in AllocSetAlloc
Date: 2001-06-06 16:24:06
Message-ID: 20010606122406.122d4a6d.gry@ll.mit.edu
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

[Postgresql 7.0.3, intel Linux, 4 cpu, 2 GB RAM ]

create table stepparams(step_proc text, name text, txt text, units text, step_ver int2, width int2,
xpos int2, param_edit int2, xlevel int2, mandatory int2, primary key(step_proc));

The table stepparams has 15799 rows, 387 distinct values of step_proc.

For each value stepparams.step_proc e.g. 'foo', there should be a postgres table named "s_foo".
I want to check this for consistancy, i.e. find any stepparams.step_proc that does not have a corresponding table.

I thought this was a straight forward query:
select distinct step_proc
from stepparams sp
where not exists (select * from pg_class where text(relname)= 's_' || sp.step_proc);
but, after a while I get an error: FATAL 1: Memory exhausted in AllocSetAlloc()
pqReadData() -- backend closed the channel unexpectedly.
[indeed the backend had grown to 400MB, 173MB resident!]

So, I tried another formulation:
select distinct sp.step_proc
from stepparams sp
where substring(sp.step_proc from 2) not in (select sp.step_proc from pg_class);
but the same error results.

I tried:
select distinct step_proc
from stepparams sp
where not exists (select * from pg_class where text(relname)= 's_' || sp.step_proc);
but again the same error.

What am I doing wrong?

Here appended are the explain for these queries:

explain select distinct sp.step_proc from stepparams sp where substring(sp.step_proc from 2) not in (select sp.step_proc from pg_class);
NOTICE: QUERY PLAN:

Unique (cost=0.00..198558.04 rows=1580 width=12)
-> Index Scan using stepparams_idx on stepparams sp (cost=0.00..198518.54 rows=15799 width=12)
SubPlan
-> Seq Scan on pg_class (cost=0.00..24.96 rows=896 width=4)

explain select distinct step_proc from stepparams sp where sp.step_proc not in (select 's_' || sp.step_proc from pg_class);
NOTICE: QUERY PLAN:

Unique (cost=0.00..198518.54 rows=1580 width=12)
-> Index Scan using stepparams_idx on stepparams sp (cost=0.00..198479.04 rows=15799 width=12)
SubPlan
-> Seq Scan on pg_class (cost=0.00..24.96 rows=896 width=4)

explain select distinct step_proc from stepparams sp where not exists (select * from pg_class where text(relname)= 's_' || sp.step_proc);
NOTICE: QUERY PLAN:

Unique (cost=56244.75..56244.75 rows=0 width=12)
-> Sort (cost=56244.75..56244.75 rows=1 width=12)
-> Seq Scan on stepparams sp (cost=0.00..56244.74 rows=1 width=12)
SubPlan
-> Seq Scan on pg_class (cost=0.00..31.68 rows=9 width=85)

--
Your mouse has moved.
Windows NT must be restarted for the change to take effect.
Reboot now? [OK]

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message george young 2001-06-06 16:31:17 Re: seleting all dates between two dates
Previous Message Stephan Szabo 2001-06-06 16:23:15 Re: audit trail and system catalogs