From: | Byron Nikolaidis <byron(dot)nikolaidis(at)home(dot)com> |
---|---|
To: | "Sam O'Connor" <Sam(at)OConnor(dot)net> |
Cc: | pgsql-interfaces(at)postgreSQL(dot)org |
Subject: | Re: [INTERFACES] BUG in PgODBC found/fixed (win32) |
Date: | 1999-10-25 01:03:03 |
Message-ID: | 3813AC47.81F5F5C5@home.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces pgsql-sql |
Sam,
Good job! I'd forgot about that hack ;)
I put it in the cvs source tree and it will be in my next build.
Byron
Sam O'Connor wrote:
>
> The lo id is currently stored in the parameter EXEC_buffer pointer
> with a cast, and is pulled out again later when it is needed.
> Bit of a hack but it works.
> Later on if EXEC_buffer is not NULL it is freed. Opps.
> The fix is just to check for type SQL_LONGVARBINARY before
> doing the deallocation.
>
> I'm not sure who the current maintainer is, I've just been happily using
> the stuff recently without having to do any work on it. Yey :)
> Should I just be putting fixes like this straight into CVS?
> If so where can I get access.
>
> - Sam
>
> BTW. Is anyone else using postgres large objects through ODBC in
> windows?
>
> Here are some diffs:
>
> diff -c -r pgodbc_vendor/bind.c pgodbc/bind.c
> *** pgodbc_vendor/bind.c Fri Jan 08 10:32:46 1999
> --- pgodbc/bind.c Sat Oct 23 13:08:50 1999
> ***************
> *** 123,131 ****
> stmt->parameters[ipar].EXEC_used = NULL;
> }
>
> ! if (stmt->parameters[ipar].EXEC_buffer) {
> ! free(stmt->parameters[ipar].EXEC_buffer);
> stmt->parameters[ipar].EXEC_buffer = NULL;
> }
>
> /* Data at exec macro only valid for C char/binary data */
> --- 123,135 ----
> stmt->parameters[ipar].EXEC_used = NULL;
> }
>
> ! if ( stmt->parameters[ipar].SQLType == SQL_LONGVARBINARY) {
> stmt->parameters[ipar].EXEC_buffer = NULL;
> + } else {
> + if (stmt->parameters[ipar].EXEC_buffer) {
> + free(stmt->parameters[ipar].EXEC_buffer);
> + stmt->parameters[ipar].EXEC_buffer = NULL;
> + }
> }
>
> /* Data at exec macro only valid for C char/binary data */
> diff -c -r pgodbc_vendor/statement.c pgodbc/statement.c
> *** pgodbc_vendor/statement.c Thu Sep 02 22:08:04 1999
> --- pgodbc/statement.c Sat Oct 23 13:07:24 1999
> ***************
> *** 326,334 ****
> self->parameters[i].EXEC_used = NULL;
> }
>
> ! if (self->parameters[i].EXEC_buffer) {
> ! free(self->parameters[i].EXEC_buffer);
> self->parameters[i].EXEC_buffer = NULL;
> }
> }
> }
> --- 326,338 ----
> self->parameters[i].EXEC_used = NULL;
> }
>
> ! if ( self->parameters[i].SQLType == SQL_LONGVARBINARY) {
> self->parameters[i].EXEC_buffer = NULL;
> + } else {
> + if (self->parameters[i].EXEC_buffer) {
> + free(self->parameters[i].EXEC_buffer);
> + self->parameters[i].EXEC_buffer = NULL;
> + }
> }
> }
> }
>
> ************
From | Date | Subject | |
---|---|---|---|
Next Message | System Administrator | 1999-10-25 02:02:46 | Errors in Postgres |
Previous Message | Jim Lemon | 1999-10-24 22:14:07 | Re: [INTERFACES] PgAccess unable to start |
From | Date | Subject | |
---|---|---|---|
Next Message | Clayton Cottingham | 1999-10-25 01:22:06 | possible bug? |
Previous Message | Tom Lane | 1999-10-24 20:09:30 | Re: [SQL] Stats on new tables |