Re: plperl SRF sanity check fix

Поиск
Список
Период
Сортировка
От Bruce Momjian
Тема Re: plperl SRF sanity check fix
Дата
Msg-id 200508122048.j7CKmRK27121@candle.pha.pa.us
обсуждение исходный текст
Ответ на plperl SRF sanity check fix  (Andrew Dunstan <andrew@dunslane.net>)
Список pgsql-patches
Andrew Dunstan wrote:
>
> The attached patch moves a plperl sanity check into the correct
> position. Performing the check in the existing position allows the call
> to go through to perl first, possibly resulting in a SEGV.

OK, patch applied.  Your version didn't apply cleanly so I just moved
the block manually.

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073
Index: src/pl/plperl/plperl.c
===================================================================
RCS file: /cvsroot/pgsql/src/pl/plperl/plperl.c,v
retrieving revision 1.86
diff -c -c -r1.86 plperl.c
*** src/pl/plperl/plperl.c    12 Jul 2005 20:35:42 -0000    1.86
--- src/pl/plperl/plperl.c    12 Aug 2005 20:45:56 -0000
***************
*** 921,926 ****
--- 921,936 ----
      plperl_current_tuple_store = 0;
      plperl_current_tuple_desc = 0;

+     if (!rsi || !IsA(rsi, ReturnSetInfo) ||
+         (rsi->allowedModes & SFRM_Materialize) == 0 ||
+         rsi->expectedDesc == NULL)
+     {
+         ereport(ERROR,
+                 (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
+                  errmsg("set-valued function called in context that "
+                         "cannot accept a set")));
+     }
+
      perlret = plperl_call_perl_func(prodesc, fcinfo);

      /************************************************************
***************
*** 936,951 ****

      if (prodesc->fn_retisset)
      {
-         if (!rsi || !IsA(rsi, ReturnSetInfo) ||
-             (rsi->allowedModes & SFRM_Materialize) == 0 ||
-             rsi->expectedDesc == NULL)
-         {
-             ereport(ERROR,
-                     (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
-                      errmsg("set-valued function called in context that "
-                             "cannot accept a set")));
-         }
-
          /* If the Perl function returned an arrayref, we pretend that it
           * called return_next() for each element of the array, to handle
           * old SRFs that didn't know about return_next(). Any other sort
--- 946,951 ----

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

Предыдущее
От: Mary Edie Meredith
Дата:
Сообщение: Re: [HACKERS] data on devel code perf dip
Следующее
От: Bruce Momjian
Дата:
Сообщение: Re: [HACKERS] data on devel code perf dip