Re: wrong values in ODBC parameters?

Поиск
Список
Период
Сортировка
От Johann Zuschlag
Тема Re: wrong values in ODBC parameters?
Дата
Msg-id E14DXki-0002RQ-00@mrelay01.kundenserver.de
обсуждение исходный текст
Ответ на Re: wrong values in ODBC parameters?  (Bruce Momjian <pgman@candle.pha.pa.us>)
Ответы Re: wrong values in ODBC parameters?  (Bruce Momjian <pgman@candle.pha.pa.us>)
Список pgsql-interfaces
Hi Bruce,

Thanks for your reply.
I tried to build psqlodbc.dll using 7.1 beta1. 
Sorry, still the same exception.

Do you have any other ideas, hints,etc.?

Unfortunately I don't know enough about ODBC.

regards

Johann


On Tue, 2 Jan 2001 02:44:58 -0500 (EST), Bruce Momjian wrote:

>Try 7.1 beta1 and see if the bug has been fixed already.
>
>> Hi,
>> 
>> now my initial problem:
>> 
>> I'm using a commercial application which is crashing while trying to
>> insert sets into tables (using psqlodbc.dll).
>> 
>> I did some tracing:
>> 
>> It crashes in module convert.c / copy_statement_with_parameters 
>> in function: 
>> 
>> convert_special_chars(char *si, char *dst, int used)
>> 
>> The access violation appears at:
>> 
>> if (si[i] == '\r' && i+1 < strlen(si) && si[i+1] == '\n')
>> 
>> si = 0x00000001
>> used = -103
>> 
>> It seems that it runs into an access violation, since 'si' has 
>> been assigned a wrong value. Also 'used = -103' doesn't
>> seem to be healthy value. 'dst' seems to be alright.
>> 
>> convert_special_chars was called in
>> copy_statement_with_parameters:
>> 
>> convert_special_chars(buf, &new_statement[npos], used);
>> 
>> 'buf' seems to be the same like 'buffer':
>> 
>> So 'used' and 'buffer' where assigned at (in copy_statement_with_parameters):
>> 
>>         /*    Assign correct buffers based on data at exec param or not */
>>         if ( stmt->parameters[param_number].data_at_exec) {
>>             used = stmt->parameters[param_number].EXEC_used ? *stmt->parameters[param_number].EXEC_used : SQL_NTS;
>>             buffer = stmt->parameters[param_number].EXEC_buffer;
>>         }
>>         else {
>>             used = stmt->parameters[param_number].used ? *stmt->parameters[param_number].used : SQL_NTS;
>>             buffer = stmt->parameters[param_number].buffer;
>>         }
>> 
>> Well, here my knowledge ends. Something seems to be wrong with the ODBC parameters
>> supplied by my application, but:
>> 
>> Same application works flawless with MS-SQL-ODBC and ORACLE-ODBC.
>> 
>> So IMHO there must be a problem in psqlodbc.dll. Even though I admit that the buggy 
>> call might be accepted in MS-ODBC due to another bug. :-)
>> 
>> Could somebody point me in the correct direction? Any hints? Patches?
>> I really would like to use Postgres for my app.
>> 
>> regards
>> 
>> Johann
>> 
>
>-- 
>  Bruce Momjian                        |  http://candle.pha.pa.us
>  pgman@candle.pha.pa.us               |  (610) 853-3000
>  +  If your life is a hard drive,     |  830 Blythe Avenue
>  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026





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

Предыдущее
От: "Markus Härnvi"
Дата:
Сообщение: Postgres ODBC driver on Windows 2000?
Следующее
От: Adam Haberlach
Дата:
Сообщение: Asynchronous interface help?