[ psqlodbc-Bugs-1000601 ] Strange different behaviour of with SQLColAttribute with SQL_DESC_OCTET or SQL_DESC_LENGHT

From: <noreply(at)pgfoundry(dot)org>
To: noreply(at)pgfoundry(dot)org
Subject: [ psqlodbc-Bugs-1000601 ] Strange different behaviour of with SQLColAttribute with SQL_DESC_OCTET or SQL_DESC_LENGHT
Date: 2006-03-30 10:47:07
Message-ID: 20060330104707.28833103385C@pgfoundry.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Bugs item #1000601, was opened at 2006-03-30 10:47
You can respond by visiting:
http://pgfoundry.org/tracker/?func=detail&atid=538&aid=1000601&group_id=1000125

Category: Interface (example)
Group: None
Status: Open
Resolution: None
Priority: 3
Submitted By: Nobody (None)
Assigned to: Nobody (None)
Summary: Strange different behaviour of with SQLColAttribute with SQL_DESC_OCTET or SQL_DESC_LENGHT

Initial Comment:
Dear ladies and gentlemen I stumbeled upon the following problelm
PSQL 8.1.x, (Unicode)
System Windows 2003 Server
I have a database test with the following table
t2 (i_val integer)

I run a query against this table and try to retrieve informaton about the result.
Here's the code (bare all error handling) now

#include <stdio.h>
#include <windows.h>
#include <winnls.h>
#include <sql.h>
#include <sqlext.h>
#include <assert.h>
#include "odb.h"
enum {SOME_LIMIT=512};

int main(void){
char * dsn = "DSN=t2_psql";
enum {BUF_SIZE=512};
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN rc;
SQLINTEGER data_size;
SQLCHAR con_out[BUF_SIZE];
SQLSMALLINT con_out_count;

rc = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
assert(SUCCEEDED(rc));
rc = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
assert(SUCCEEDED(rc));
rc = SQLAllocHandle (SQL_HANDLE_DBC, henv, &hdbc);
assert(SUCCEEDED(rc));
rc = SQLDriverConnect(hdbc, NULL, dsn, SQL_NTS,
con_out, sizeof(con_out), &con_out_count, SQL_DRIVER_COMPLETE);
assert(SUCCEEDED(rc));
rc = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
assert(SUCCEEDED(rc));
rc = SQLExecDirect(hstmt, (SQLCHAR*) "select * from t2", SQL_NTS);
assert(SUCCEEDED(rc));
rc = SQLColAttribute(hstmt, 1, SQL_DESC_OCTET_LENGTH, NULL, 0, NULL, &con_out_count);
assert(SUCCEEDED(rc));
printf("con_out_count = %d\n", con_out_count);
/* con_out_count = -1;
rc = SQLColAttribute(hstmt, 1, SQL_DESC_LENGTH, NULL, 0, NULL, &con_out_count);
printf("con_out_count = %d\n", con_out_count);
*/
SQLCloseCursor(hstmt);
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
rc = SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}

If I run SQLColAttribute with SQL_DESC_OCTET_LENGTH I got as size for the
first field an integer! 0

But if I use SQL_DESC_LENGTH I got 4. Of course here the 4 is correct AFAIKT.

This difference leads to a crash in an application in which I try to fetch the information for a generic SQL call.

Now is this an error in my usage? Is this correct behaviour or is it a bug in
psqlODBC?

Regards
Friedrich

----------------------------------------------------------------------

You can respond by visiting:
http://pgfoundry.org/tracker/?func=detail&atid=538&aid=1000601&group_id=1000125

Browse pgsql-odbc by date

  From Date Subject
Next Message Åsmund Kveim Lie 2006-03-30 12:35:19 Error when getting text longer than MaxLongVarcharSize
Previous Message Mahesh Vyas 2006-03-30 05:41:40 unsubscribe