Re: TCL fix in HEAD
От | Marshall, Steve |
---|---|
Тема | Re: TCL fix in HEAD |
Дата | |
Msg-id | 4700EFB9.8080903@wsi.com обсуждение исходный текст |
Ответ на | Re: TCL fix in HEAD (Bruce Momjian <bruce@momjian.us>) |
Ответы |
Re: TCL fix in HEAD
|
Список | pgsql-patches |
Bruce Momjian wrote: >Marshall, Steve wrote: > > >>>The recent TCL patch assumed Tcl_NotifierProcs.initNotifierProc >>>was added in TCL 8.2: >>>In fact it was added in 8.4 so I have modified the CVS with >>>the following patch. >>> >>> >>I confirmed this against the 8.2.5 release. Sorry I did not notice that >>when I initially created the patch. >> >>While the patch will not work for the earlier releases, it should be >>noted that the multithhreading problem still exists when linking >>postgresql against TCL 8.2 and 8.3 libraries that are compiled with the >>preprocessor symbol TCL_THREADS defined. Unfortunately, we cannot >>override the initNotifier behavior in those releases, so we don't have a >>workable solution. >> >>This is probably not a big problem, since TCL was not commonly compiled >>with multithreading enabled prior to 8.4. However, perhaps there should >>be a warning in the documentation on PL/TCL directing users to avoid >>linking postgresql against TCL libraries earlier than 8.4 that have >>multithreading enabled? >> >> > >Can you send in a patch against pltcl.sgml? > > PL/TCL documentation patch is attached. *** pltcl.sgml 2007-10-01 08:29:06.667578247 -0400 --- pltcl.sgml.new 2007-10-01 08:24:41.736708719 -0400 *************** *** 70,75 **** --- 70,87 ---- <literal>createlang pltcl <replaceable>dbname</></literal> or <literal>createlang pltclu <replaceable>dbname</></literal>. </para> + <para> + Care should be taken when linking the pltcl shared object code against + TCL libraries earlier than the TCL 8.4 release. The pre-8.4 versions of TCL must + be built <emphasis>without</emphasis> multithreading support, i.e. with TCL_THREADS + undefined. Otherwise, the first use of PL/TCL functions will cause the postgres + backend to become multithreaded, resulting in subsequent "unexpected state" errors. + PL/TCL <emphasis>can</emphasis> be safely linked against multithreaded versions of the + TCL library for TCL versions 8.4 and later. In these cases, the pltcl source code uses + capabilities introduced in TCL 8.4 to override and disable the multithreading behavior. + Note that pre-8.4 versions of TCL were rarely built with multithreading support in + pre-compiled distributions, so this problem is rather rare. + </para> </sect1> <!-- **** PL/Tcl description **** -->
В списке pgsql-patches по дате отправления: