From: | Hiroshi Inoue <Inoue(at)tpf(dot)co(dot)jp> |
---|---|
To: | Mika Mantyla <mmantyla(at)soberit(dot)hut(dot)fi> |
Cc: | pgsql-bugs(at)postgresql(dot)org |
Subject: | Re: SQLPutData bug ? |
Date: | 2001-10-10 10:35:38 |
Message-ID: | 3BC4247A.B43175A6@tpf.co.jp |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-odbc |
Mika Mantyla wrote:
>
> Your name : Mika M舅tyl
> Your email address : mmantyla(at)soberit(dot)hut(dot)fi
>
> System Configuration
> ---------------------
> Architecture (example: Intel Pentium) : AMD Athlon
>
> Operating System (example: Linux 2.0.26 ELF) : RH 7.1
>
> PostgreSQL version (example: PostgreSQL-7.1.3): PostgreSQL-7.1.3
>
> Compiler used (example: gcc 2.95.2) : gcc-2.96-97.1 (Used
> pre-build binaries)
>
> FULL description of your problem:
> ------------------------------------------------
> We have ODBC application that is currently running on top of commercial
> Solid and Sybase databases.With some fixes I got this application to
> also work on PSQL on top of W2K. Now I'm trying to get the app to work
> in Linux with libiodbc-3.0.5-1 and postgresql-odbc-7.1.3
>
> However there seems to be problem with SQLPutData call. This was already
> a problem in W2k with PSQL (ODBC 07_01_0006), and you can see the ugly
> fix I made in the code. In Linux the same fix causes the program to get
> segmentation fault in st.ParamData call. If I remove the fix the final
> st.PutData call in the loop fails.
>
> I think this could be problem related to odbc somehow, but I really
> don't know.
>
> -------------------------------------------------------
> /**** Code with the problem **************************
> else
> {
> char buf[256];
> int got;
> pos = 0;
> do
> {
> // This copies data to buffer buf nothing more
> got = data->GetData( pos, buf, sizeof(buf) );
>
> #ifdef PSQL
> #ifdef WIN32
> if (got == 0)
> break;
> #endif //WIN32
> #endif //PSQL
I don't think it's preferable to call SQLPutData with length 0
for any dbms. Why is the #ifdef needed ?
>
> st.PutData( buf, got );
> pos += got;
> } while( got > 0 );
> }
> rc = st.ParamData( &pos );
>
> -----------------------------------------------------
> /**** PutData call ************************/
> void
> DBStmt::PutData( void *buf, int bufsize )
> {
> t_usec = 0;
> do
> {
> rc = SQLPutData( hstmt, buf, bufsize );
> } while( rc==SQL_STILL_EXECUTING && SocketOK() );
>
> if( rc!=SQL_SUCCESS )
> throw SQLExc( "SQLPutData failed", rc, hdbc, hstmt );
> }
> -----------------------------------------------------
> /**** ParamData call ************************/
> int
> DBStmt::ParamData( long *val )
> {
> t_usec = 0;
> do
> {
> rc = SQLParamData( hstmt, (void**)&val );
Why &val not val ?
regards,
Hiroshi Inoue
From | Date | Subject | |
---|---|---|---|
Next Message | Mika Mantyla | 2001-10-10 11:46:42 | Re: SQLPutData bug ? |
Previous Message | Mika Mantyla | 2001-10-10 08:15:33 | SQLPutData bug ? |
From | Date | Subject | |
---|---|---|---|
Next Message | Alejandro Alfonso Fernandez | 2001-10-10 11:13:07 | PgSQL vs Ms.Access slow in search |
Previous Message | Alejandro Alfonso Fernandez | 2001-10-10 10:00:02 | PgSQL vs Ms.Access slow in search |