When length of text data is 1.

Lists: pgsql-odbc
From: НФСР <nfsr(at)hitv(dot)ru>
To: <pgsql-odbc(at)postgresql(dot)org>
Subject: When length of text data is 1.
Date: 2006-10-30 18:19:33
Message-ID: 015a01c6fc4f$f36164a0$39a7fea9@samatov
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-odbc

Hello,

I tried to search in Internet, but didn't find answer...
I'm using PostgreSQL 8.1.5-1, ODBC, MS Visual C++ with MFC, I'm using
Unicode (database has UTF8 encoding and I'm using "PostgreSQL Unicode" odbc
driver).
I create, for example, such table:

***code***
CREATE TABLE section (
idsection INT PRIMARY KEY,")
idparent INT NULL REFERENCES section ON DELETE CASCADE,")
name TEXT NOT NULL")
);
**********

Retrieve data thereby:

***code***
CRecordset rcrd(&db);
CString nm;
....
rcrd.GetFieldValue(_T("name"),nm);
**********

It works without any problem except when length of 'name' is 1.
For example, It works fine when name is 'John' but when name is 'J' line
rcrd.GetFieldValue(_T("name"),nm);
throws exception with empty exception message and AFAIK with return code
SQL_NO_DATA.
If I catch exception, nm equals 'J', but when application exits, Memory
Leaks is detected.
And I think, catching exception and then checking emptyness of exception
message is not good solution...

So, question...
Is this bug in my code or in MFC code or in ODBC driver's code?
What I should do to support strings with length == 1?
Thank you if you can help me..

Best regards,
Nail Samatov


From: Hiroshi Inoue <inoue(at)tpf(dot)co(dot)jp>
To: НФСР <nfsr(at)hitv(dot)ru>
Cc: pgsql-odbc(at)postgresql(dot)org
Subject: Re: When length of text data is 1.
Date: 2006-11-07 03:34:02
Message-ID: 454FFEAA.1020001@tpf.co.jp
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-odbc

НФСР wrote:
> Hello,
>
> I tried to search in Internet, but didn't find answer...
> I'm using PostgreSQL 8.1.5-1, ODBC, MS Visual C++ with MFC, I'm using
> Unicode (database has UTF8 encoding and I'm using "PostgreSQL Unicode" odbc
> driver).
> I create, for example, such table:
>
> ***code***
> CREATE TABLE section (
> idsection INT PRIMARY KEY,")
> idparent INT NULL REFERENCES section ON DELETE CASCADE,")
> name TEXT NOT NULL")
> );
> **********
>
> Retrieve data thereby:
>
> ***code***
> CRecordset rcrd(&db);
> CString nm;
> ....
> rcrd.GetFieldValue(_T("name"),nm);
> **********
>
> It works without any problem except when length of 'name' is 1.
> For example, It works fine when name is 'John' but when name is 'J' line
> rcrd.GetFieldValue(_T("name"),nm);
> throws exception with empty exception message and AFAIK with return code
> SQL_NO_DATA.

Which version of ODBC driver are you using ?
Could you send me the Mylog output ?

regards,
Hiroshi Inoue