Re: [HACKERS] pl/perl extension fails on Windows

Поиск
Список
Период
Сортировка
От Andrew Dunstan
Тема Re: [HACKERS] pl/perl extension fails on Windows
Дата
Msg-id bb3d3eb6-e310-471c-1d8c-d239ecaf52ad@2ndQuadrant.com
обсуждение исходный текст
Ответ на Re: [HACKERS] pl/perl extension fails on Windows  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: [HACKERS] pl/perl extension fails on Windows  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers

On 07/13/2017 10:36 AM, Tom Lane wrote:
> Andrew Dunstan <andrew.dunstan@2ndquadrant.com> writes:
>> On 07/13/2017 08:08 AM, Ashutosh Sharma wrote:
>>> -    dVAR; dXSBOOTARGSAPIVERCHK;
>>> +    dVAR; dXSBOOTARGSNOVERCHK;
>> Good job hunting this down!
>> One suggestion I saw in a little googling was that we add this to the XS
>> file after the inclusion of XSUB.h:
>>     #undef dXSBOOTARGSAPIVERCHK
>>     #define dXSBOOTARGSAPIVERCHK dXSBOOTARGSNOVERCHK
> I don't see anything even vaguely like that in the Util.c file generated
> by Perl 5.10.1, which is what I've got on my RHEL machine.




This is all fairly modern, so it's hardly surprising that it doesn't
happen with the ancient perl 5.10.

here's a snippet from the generated Util.c on crake (Fedora 25, perl 5.24):
   XS_EXTERNAL(boot_PostgreSQL__InServer__Util); /* prototype to pass   -Wmissing-prototypes */
XS_EXTERNAL(boot_PostgreSQL__InServer__Util)  {   #if PERL_VERSION_LE(5, 21, 5)       dVAR; dXSARGS;   #else
dVAR;dXSBOOTARGSAPIVERCHK;   #endif
 



>
> What I do notice is this in Util.xs:
>
> VERSIONCHECK: DISABLE
>
> which leads immediately to two questions:
>
> 1. Why is your version of xsubpp apparently ignoring this directive
> and generating a version check anyway?
>
> 2. Why do we have this directive in the first place?  It does not seem
> to me like a terribly great idea to ignore low-level version mismatches.
>
> In the same vein, I'm suspicious of proposals to "fix" this problem
> by removing the version check, which seems to be where Ashutosh
> is headed.  In the long run that seems certain to cause huge headaches.



That is a different version check. It's the equivalent of xsubpp's
--noversioncheck flag. The versions it would check are the object file
and the corresponding pm file.

In fact the usage I suggested seems to be blessed in XSUB.h in this comment:
   /* dXSBOOTARGSNOVERCHK has no API in xsubpp to choose it so do   #undef dXSBOOTARGSXSAPIVERCHK   #define
dXSBOOTARGSXSAPIVERCHKdXSBOOTARGSNOVERCHK */
 





It would be nice to get to the bottom of why we're getting a version
mismatch on Windows, since we're clearly not getting one on Linux. But
since we've got on happily all these years without the API version check
we might well survive a few more going on as we are.

cheers

andrew

-- 
Andrew Dunstan                https://www.2ndQuadrant.com
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services




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

Предыдущее
От: David Kohn
Дата:
Сообщение: Re: [HACKERS] Function Volatility and Views Unexpected Behavior
Следующее
От: Fabien COELHO
Дата:
Сообщение: Re: [HACKERS] [WIP] Zipfian distribution in pgbench