Re: server-side extension in c++

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: server-side extension in c++
Дата
Msg-id 201006010255.o512t0w17761@momjian.us
обсуждение исходный текст
Ответ на Re: server-side extension in c++  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: server-side extension in c++  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Tom Lane wrote:
> Bruce Momjian <bruce@momjian.us> 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
>
>     <para>
>      Don't.
>     </para>
>
> 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 <productname>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  <bruce@momjian.us>        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 ****
       </listitem>
       <listitem>
        <para>
!        Use <function>malloc()</> to allocate any memory that might be
         freed by the backend C code (don't pass <function>new()</>-allocated
         memory).
        </para>
       </listitem>
       <listitem>
        <para>
!        Use <function>free()</> to free memory allocated by the backend
         C code (do not use <function>delete()</> for such cases).
        </para>
       </listitem>
--- 296,309 ----
       </listitem>
       <listitem>
        <para>
!        Use <function>palloc()</> to allocate any memory that might be
         freed by the backend C code (don't pass <function>new()</>-allocated
         memory).
        </para>
       </listitem>
       <listitem>
        <para>
!        Use <function>pfree()</> to free memory allocated by the backend
         C code (do not use <function>delete()</> for such cases).
        </para>
       </listitem>

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: server-side extension in c++
Следующее
От: Tom Lane
Дата:
Сообщение: Re: server-side extension in c++