Re: server-side extension in c++

Поиск
Список
Период
Сортировка
Искать
От
Bruce Momjian
Тема
Re: server-side extension in c++
Дата
в 23:55:12
Msg-id
201006010255.o512t0w17761@momjian.us
Ответ на
Список
Дерево обсуждения
server-side extension in c++ Igor <igor@carcass.ath.cx>
Re: server-side extension in c++ Craig Ringer <craig@postnewspapers.com.au>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ Tom Lane <tgl@sss.pgh.pa.us>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ Tom Lane <tgl@sss.pgh.pa.us>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ Tom Lane <tgl@sss.pgh.pa.us>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ Craig Ringer <craig@postnewspapers.com.au>
Re: server-side extension in c++ David Fetter <david@fetter.org>
Re: server-side extension in c++ Tom Lane <tgl@sss.pgh.pa.us>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ Craig Ringer <craig@postnewspapers.com.au>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ David Fetter <david@fetter.org>
Re: server-side extension in c++ Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>
Re: server-side extension in c++ David Fetter <david@fetter.org>
Re: server-side extension in c++ Mark Cave-Ayland <mark.cave-ayland@siriusit.co.uk>
Re: server-side extension in c++ Peter Geoghegan <peter.geoghegan86@gmail.com>
Re: server-side extension in c++ Peter Geoghegan <peter.geoghegan86@gmail.com>
Re: server-side extension in c++ Craig Ringer <craig@postnewspapers.com.au>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ Peter Geoghegan <peter.geoghegan86@gmail.com>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ Bruce Momjian <bruce@momjian.us>
Re: server-side extension in c++ Craig Ringer <craig@postnewspapers.com.au>
Re: server-side extension in c++ Peter Geoghegan <peter.geoghegan86@gmail.com>
Re: server-side extension in c++ Craig Ringer <craig@postnewspapers.com.au>
Tom Lane wrote:
> Bruce Momjian  writes:
> > That is great new information.  I have created a new documentation
> > section called "Using C++ for Extensibility", and listed you as the
> > author in the CVS commit;  patch attached.  Thanks. 
> 
> Too bad two out of the four pieces of advice are wrong (how many pieces
> of memory managed by the backend are allocated directly with malloc?).
> The other two are not wrong as far as they go, but they're certainly
> woefully inadequate, because no interesting backend extension is going
> to be able to get along without calling back into the core code.

Good point.  I assumed others would chime in to improve this.

> Personally I would reduce this section to
> 
> 	
> 	 Don't.
> 	
> 
> I don't think it is worth our time to try to support people who run into
> the inevitable memory management and error handling incompatibilities.
> Nor are they likely to be happy at the end of the experience, if we
> blithely tell them up front that it'll work.

Well, I would have avoided this mine-trap except we have this 9.0
release note item:

       Allow use of C++</> functions in backend code (Kurt
       Harriman, Peter Eisentraut)

I figure if we don't provide some guidance, things will be even worse.

I have updated the docs to mention palloc/pfree instead;  applied patch
attached.

-- 
  Bruce Momjian          http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + None of us is going to be here forever. +
Index: doc/src/sgml/extend.sgml
===================================================================
RCS file: /cvsroot/pgsql/doc/src/sgml/extend.sgml,v
retrieving revision 1.40
diff -c -c -r1.40 extend.sgml
*** doc/src/sgml/extend.sgml	1 Jun 2010 02:35:37 -0000	1.40
--- doc/src/sgml/extend.sgml	1 Jun 2010 02:53:30 -0000
***************
*** 296,309 ****
       
       
        
!        Use malloc()</> to allocate any memory that might be
         freed by the backend C code (don't pass new()</>-allocated
         memory).
        
       
       
        
!        Use free()</> to free memory allocated by the backend
         C code (do not use delete()</> for such cases).
        
       
--- 296,309 ----
       
       
        
!        Use palloc()</> to allocate any memory that might be
         freed by the backend C code (don't pass new()</>-allocated
         memory).
        
       
       
        
!        Use pfree()</> to free memory allocated by the backend
         C code (do not use delete()</> for such cases).
        
       
В списке pgsql-general по дате отправления
От: Tom Lane
Дата:
От: Tom Lane
Дата:
FAQ