Problem in contrib/tablefunc's crosstab()

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Problem in contrib/tablefunc's crosstab()
Дата
Msg-id 13839.1228089327@sss.pgh.pa.us
обсуждение исходный текст
Список pgsql-hackers
While fooling with the recent contrib problem
http://archives.postgresql.org/pgsql-committers/2008-11/msg00346.php
I noticed another way that tablefunc.c is being cavalier about the
state when it returns control: the crosstab() function returns with
an internal SPI call still active!  This is relatively harmless in
the case where it's being called by MakeTableFunctionResult; but you
can expose an error in other cases, for instance running two of 'em
in parallel:

contrib_regression=# SELECT crosstab3( 'select rowid, attribute, value  from ct  where attribute = ''att2'' or
attribute= ''att3''  order by 1,2'), crosstab3( 'select rowid, attribute, value  from ct  where attribute = ''att2'' or
attribute= ''att3''  order by 1,2');
 
ERROR:  crosstab: SPI_connect returned -1

The right way to fix this IMHO is to change the function to be called
only once and accumulate its results into a tuplestore.  That'll be
marginally more efficient, too.

Think I'll go fix this while I'm watching the football game ...
        regards, tom lane


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: [COMMITTERS] pgsql: Remove inappropriate memory context switch in
Следующее
От: "Fujii Masao"
Дата:
Сообщение: Re: Comments to Synchronous replication patch v3