Thread: psqlodbc : SOS

psqlodbc : SOS

From
mjoseph@inautix.com
Date:
Hi,

I am using the psqlodbc ODBC driver. I have a few problems. I was wondering
if you could help.

I am using Visual C++ to develop my app. I need to access a byte array
(bytea) field.
1. I use the Windows ODBC api to insert the byte array ( a photograph). I
do multiple SQLPutData() calls. This application works fine with Access.
But with PostgreSQL, it fails. A number gets inserted instead (5 bytes).

2. I tried using MFC's ODBC support. In the CRecordSet's
DoFieldExchange(CFieldExchange* pFX) method, I setup the binding as below.

RFX_Binary(pFX, _T("[data]"), m_data, 100*1024);

100K I assume is the upper limit of the field. THis works on Access but not
for PostgreSQL. The default limit of 255 is not overridden.

If any of these are known issues, could you let me know. If you have any
ideas as to how I can set this right, please get back to me.

3. The psqlodbc  faq when discussing Large Objects suggests creating a new
type like this.
create type lo (
   internallength=4,
   externallength=10,
   input=int4in,
   output=int4out,
   default='',
   passedbyvalue
);

How should I define the input and output functions. Would you be able to
pass on some sample code?
Regards,
Manoj




Re: psqlodbc : SOS

From
mjoseph@inautix.com
Date:
Hi,
     I got the answer to my problem 2. I was looking at an upper limit of
100 * 1024 bytes (100 K). The ODBC configuration, by default, specifies the
'Max LongVarChar' size to be 8190 bytes. Making it 100K solved that
problem.

Regards,
Manoj



  
                    mjoseph@inautix.com
  
                    Sent by:                    To:     pgsql-odbc@postgresql.org
  
                    pgsql-odbc-owner@post       cc:
  
                    gresql.org                  Subject:     [ODBC] psqlodbc : SOS
  

  

  
                    02/06/03 09:43 AM
  

  

  




Hi,

I am using the psqlodbc ODBC driver. I have a few problems. I was wondering
if you could help.

I am using Visual C++ to develop my app. I need to access a byte array
(bytea) field.
1. I use the Windows ODBC api to insert the byte array ( a photograph). I
do multiple SQLPutData() calls. This application works fine with Access.
But with PostgreSQL, it fails. A number gets inserted instead (5 bytes).

2. I tried using MFC's ODBC support. In the CRecordSet's
DoFieldExchange(CFieldExchange* pFX) method, I setup the binding as below.

RFX_Binary(pFX, _T("[data]"), m_data, 100*1024);

100K I assume is the upper limit of the field. THis works on Access but not
for PostgreSQL. The default limit of 255 is not overridden.

If any of these are known issues, could you let me know. If you have any
ideas as to how I can set this right, please get back to me.

3. The psqlodbc  faq when discussing Large Objects suggests creating a new
type like this.
create type lo (
   internallength=4,
   externallength=10,
   input=int4in,
   output=int4out,
   default='',
   passedbyvalue
);

How should I define the input and output functions. Would you be able to
pass on some sample code?
Regards,
Manoj




---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster