Re: [BUGS] General Bug Report: palloc fails with lots of ANDs and ORs

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: [BUGS] General Bug Report: palloc fails with lots of ANDs and ORs
Дата
Msg-id 199801121635.LAA05002@candle.pha.pa.us
обсуждение исходный текст
Список pgsql-hackers
Try changing your OS default memory size.  Unsure how to do this under
AIX.

>
>
> ============================================================================
>                         POSTGRESQL BUG REPORT TEMPLATE
> ============================================================================
>
>
> Your name        : David Hartwig
> Your email address    : daveh@insightdist.com
>
> Category        : runtime: back-end: SQL
> Severity        : serious
>
> Summary: palloc fails with lots of ANDs and ORs
>
> System Configuration
> --------------------
>   Operating System   : AIX 4.1
>
>   PostgreSQL version : 6.2
>
>   Compiler used      : native CC
>
> Hardware:
> ---------
> RS 6000
>
> Versions of other tools:
> ------------------------
> NA
>
> --------------------------------------------------------------------------
>
> Problem Description:
> --------------------
> The follow is a mail message describing the problem on the PostODBC mailing list:
>
>
> I have run across this also.   We traced it down to a failure in the PostgreSQL server.   This occurs under the
followingconditions.  
>
>     1.  MS Access
>     2.  Specify a multi-part key in the link time setup with postgresql
>     3.  Click on table view.
>
> What happens is MS Access takes the following steps.   First it selects all possible key values for the table being
viewed.  I 
> suspect it maps the key values to the relative row position in the display.   Then it uses the mapping to generate
futurequeries based 
> on the mapping and the rows showing on the screen.   The queries take the following form:
>
>     SELECT  keypart1, keypart2, keypart3, col4, col5, col6 ... FROM example_table
>     WHERE
>         (keypart1 = row1keypartval1 AND  keypart2 = row1keypartval2 AND  keypart3 = row1keypartval3) OR
>         (keypart1 = row2keypartval1 AND  keypart2 = row2keypartval2 AND  keypart3 = row2keypartval3) OR
>             .
>             .      --  28 lines of this stuff.   Why 28... Why not 28
>             .
>         (keypart1 = row27keypartval1 AND  keypart2 = row27keypartval2 AND  keypart3 = row27keypartval3) OR
>         (keypart1 = row28keypartval1 AND  keypart2 = row28keypartval2 AND  keypart3 = row28keypartval3);
>
>
> The PostgreSQL sever chokes on this statement claiming it is out of memory.  (palloc)  In this example I used a three
partkey.  I 
> do not recall if a three part key is enough to trash the backend.  It has been a while.    I have tried sending these
kindsof statements 
> directly through the psql monitor and get the same result.
>
>
> --------------------------------------------------------------------------
>
> Test Case:
> ----------
> select c1, c1 c3, c4, c5 ... from example_table
> where
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something) or
> (c1 = something and c2 = something and c3 = something and c4 = something);
>
>
> --------------------------------------------------------------------------
>
> Solution:
> ---------
>
>
> --------------------------------------------------------------------------
>
>
>


--
Bruce Momjian
maillist@candle.pha.pa.us

В списке pgsql-hackers по дате отправления:

Предыдущее
От: "Thomas G. Lockhart"
Дата:
Сообщение: Re: varchar() troubles
Следующее
От: Mattias Kregert
Дата:
Сообщение: Re: [HACKERS] Storing rows bigger than one block