unnesting of array of different size explodes memory - Mailing list pgsql-sql

From Andreas Gaab
Subject unnesting of array of different size explodes memory
Date
Msg-id 48DA836F3865C54B8FBF424A3B775AF667239FFDEF@Exchange-Server
Whole thread Raw
Responses Re: unnesting of array of different size explodes memory
List pgsql-sql

Hi,

 

I need to sum up the elements of two arrays. Most arrays were of the same size, thus I just unnested the arrays in one table and grouped the results in a loop for every row. When two arrays of different size (1200 and 1300) were processed, the memory usage exploded and the query was killed by the kernel.

 

As I now understand, the following query leads to 12 results, not just 4 (or 3…):

 

SELECT unnest(ARRAY[1,2,3]), unnest(ARRAY[4,5,6,7]);

 

Why could postgres use as much memory till the kernel complained when unnesting 1200 and 1300 elements resulting in 1.6e6 rows. Are there settings to prevent this such as “work_mem”?

 

Regards,

Andreas

 

___________________________________________________________________________

 

SCANLAB AG

Dr. Andreas Simon Gaab

Entwicklung • R & D

 

Siemensstr. 2a • 82178 Puchheim • Germany

Tel. +49 (89) 800 746-513 • Fax +49 (89) 800 746-199

mailto:a.gaab@scanlab.dewww.scanlab.de

 

Amtsgericht München: HRB 124707 • USt-IdNr.: DE 129 456 351

Vorstand: Georg Hofner (Sprecher), Christian Huttenloher, Norbert Petschik

Aufsichtsrat (Vorsitz): Dr. Hans J. Langer

___________________________________________________________________________

 

Besuchen Sie uns auf der / Meet us at
LASER World of PHOTONICS 2011
Munich, Germany
May 23 - 26, 2011
Hall C2, Booth 461

pgsql-sql by date:

Previous
From: Anish Kejariwal
Date:
Subject: pass in array to function for use by where clause? how optimize?
Next
From: Tom Lane
Date:
Subject: Re: unnesting of array of different size explodes memory