Re: libpq-events windows gotcha

Поиск
Список
Период
Сортировка
От Andrew Chernow
Тема Re: libpq-events windows gotcha
Дата
Msg-id 491C5706.8040007@esilo.com
обсуждение исходный текст
Ответ на Re: libpq-events windows gotcha  (Andrew Chernow <ac@esilo.com>)
Список pgsql-hackers
Andrew Chernow wrote:
> Tom Lane wrote:
>> Andrew Chernow <ac@esilo.com> writes:
>>> Just noticed that the last libpqtypes release was broken on windows 
>>> when dynamically linking.  The problem is that windows has two 
>>> addresses for functions, the import library uses a stub "ordinal" 
>>> address while the DLL itself is using the real address; yet another 
>>> m$ annoyance.  This breaks the PQEventProc being used as a unique 
>>> lookup value.
>>> This is a big gotcha for any libpq-events implementors.  It should 
>>> probably be documented in some fashion.
>>
>> Hmm.  Well, it's not too late to reconsider the use of the function
>> address as a lookup key ... but what else would we use instead?
>>
>>             regards, tom lane
>>
>>
> 
> Here are the options we see:
> 
> 1. PQregisterEventProc returns a handle, synchronized counter 
> incremented by libpq.  A small table could map handle value to proc 
> address, so register always returns the same handle for a provided 
> eventproc.  Only register would take an eventproc, instanceData 
> functions would take this magical handle.
> 
> 2. string key, has collision issues (already been ruled out)
> 
> 3. have implementors return a static variable address (doesn't seem all 
> that different from returning a static funcaddr)
> 
> 4. what we do now, but document loudly that PGEventProc must be static. 
>  If it can't be referenced outside the DLL directly then the issue can't 
> arise.  If you need the function address for calls to PQinstanceData, an 
> implementor can create a public function that returns their private 
> PGEventProc address.
> 

Do you have a preference form the list above, or an another idea?  If 
not, we would probably implement #1.  Although, the simplest thing is #4 
which leaves everything as is and updates the sgml docs with a strong 
warning to implementors.

I am not sure which is best.

-- 
Andrew Chernow
eSilo, LLC
every bit counts
http://www.esilo.com/


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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: pg_filedump for CVS HEAD
Следующее
От: Alvaro Herrera
Дата:
Сообщение: pg_filedump for CVS HEAD