pg.ddx.io  pgsql-interfaces@postgresql.org mailing list archive  
help / color / mirror / Atom feed
wrong values in ODBC parameters?
4+ messages / 2 participants
[nested] [flat]

* wrong values in ODBC parameters?
@ 2000-12-28 12:17 Johann Zuschlag <zuschlag2@online.de>
  2001-01-02 07:44 ` Re: wrong values in ODBC parameters? Bruce Momjian <pgman@candle.pha.pa.us>
  0 siblings, 1 reply; 4+ messages in thread

From: Johann Zuschlag @ 2000-12-28 12:17 UTC (permalink / raw)
  To: pgsql-interfaces

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






^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: wrong values in ODBC parameters?
  2000-12-28 12:17 wrong values in ODBC parameters? Johann Zuschlag <zuschlag2@online.de>
@ 2001-01-02 07:44 ` Bruce Momjian <pgman@candle.pha.pa.us>
  2001-01-02 20:11   ` Re: wrong values in ODBC parameters? Johann Zuschlag <zuschlag2@online.de>
  0 siblings, 1 reply; 4+ messages in thread

From: Bruce Momjian @ 2001-01-02 07:44 UTC (permalink / raw)
  To: Johann Zuschlag <zuschlag2@online.de>; +Cc: pgsql-interfaces

Try 7.1 beta1 and see if the bug has been fixed already.

[ Charset ISO-8859-1 unsupported, converting... ]
> 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



^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: wrong values in ODBC parameters?
  2000-12-28 12:17 wrong values in ODBC parameters? Johann Zuschlag <zuschlag2@online.de>
  2001-01-02 07:44 ` Re: wrong values in ODBC parameters? Bruce Momjian <pgman@candle.pha.pa.us>
@ 2001-01-02 20:11   ` Johann Zuschlag <zuschlag2@online.de>
  2001-01-02 22:08     ` Re: wrong values in ODBC parameters? Bruce Momjian <pgman@candle.pha.pa.us>
  0 siblings, 1 reply; 4+ messages in thread

From: Johann Zuschlag @ 2001-01-02 20:11 UTC (permalink / raw)
  To: Bruce Momjian <pgman@candle.pha.pa.us>; +Cc: 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






^ permalink  raw  reply  [nested|flat] 4+ messages in thread

* Re: wrong values in ODBC parameters?
  2000-12-28 12:17 wrong values in ODBC parameters? Johann Zuschlag <zuschlag2@online.de>
  2001-01-02 07:44 ` Re: wrong values in ODBC parameters? Bruce Momjian <pgman@candle.pha.pa.us>
  2001-01-02 20:11   ` Re: wrong values in ODBC parameters? Johann Zuschlag <zuschlag2@online.de>
@ 2001-01-02 22:08     ` Bruce Momjian <pgman@candle.pha.pa.us>
  0 siblings, 0 replies; 4+ messages in thread

From: Bruce Momjian @ 2001-01-02 22:08 UTC (permalink / raw)
  To: Johann Zuschlag <zuschlag2@online.de>; +Cc: pgsql-interfaces

No ideas, sorry.  I don't know much about ODBC.  Can you send a
backtrace of the crash?  Not sure how to do that from odbc though.

[ Charset ISO-8859-1 unsupported, converting... ]
> 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
> 
> 
> 
> 


-- 
  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



^ permalink  raw  reply  [nested|flat] 4+ messages in thread


end of thread, other threads:[~2001-01-02 22:08 UTC | newest]

Thread overview: 4+ messages (download: mbox mbox.gz follow: Atom feed)
-- links below jump to the message on this page --
2000-12-28 12:17 wrong values in ODBC parameters? Johann Zuschlag <zuschlag2@online.de>
2001-01-02 07:44 ` Bruce Momjian <pgman@candle.pha.pa.us>
2001-01-02 20:11   ` Johann Zuschlag <zuschlag2@online.de>
2001-01-02 22:08     ` Bruce Momjian <pgman@candle.pha.pa.us>

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox