From: Bruce Momjian <pgman@candle.pha.pa.us>
To: J.@candle.pha.pa.us, T.@candle.pha.pa.us, Vermeulen <jtv@cistron-office.nl>
Cc: PostgreSQL-interfaces <pgsql-interfaces@postgresql.org>
Subject: Re: libpq++: combined patches based on 7.1b5
Date: Wed, 9 May 2001 13:45:43 -0400 (EDT)
Message-ID: <200105091745.f49HjhU14550@candle.pha.pa.us> (raw)
> > Here's a version of my suggested diffs transplanted to 7.1 beta 5. I'm still
> > looking at the best way to integrate Tom Vijlbrief's fixes (insofar as they're
> > still needed); would 7.2 be a suitable time for incompatible API changes?
> >
>
> As far as changes, 7.2 would be fine for changing the API, if there is a
> good reason to do it. For example, I see getLength returns a short.
> With 7.1's new longer tuples, that should now be changed to int, at
> least. (I have updated libpq++/TODO to mention this.)
I was wrong. It was not getLength, but FieldSize that was the problem.
OK, I thought, how hard can it be to change, and indeed, it was quite
easy. Patch attached and applied. Seems we have to break the API to
allow long field values. Max field length is now 1GB.
--
Bruce Momjian | http://candle.pha.pa.us
pgman@candle.pha.pa.us | (610) 853-3000
+ If your life is a hard drive, | 830 Blythe Avenue
+ Christ can be your backup. | Drexel Hill, Pennsylvania 19026
Attachments:/bjm/diff (text/plain, 4.5K) download
Index: doc/src/sgml/libpq++.sgml
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/doc/src/sgml/libpq++.sgml,v
retrieving revision 1.29
diff -c -r1.29 libpq++.sgml
*** doc/src/sgml/libpq++.sgml 2001/05/09 17:29:09 1.29
--- doc/src/sgml/libpq++.sgml 2001/05/09 17:43:20
***************
*** 430,436 ****
Returns the size in bytes of the field associated with the given
field index. Field indices start at 0.
<synopsis>
! short PgDatabase::FieldSize(int field_num) const
</synopsis>
Returns the space allocated for this field in a database tuple given
the field number. In other words the size of the server's binary
--- 430,436 ----
Returns the size in bytes of the field associated with the given
field index. Field indices start at 0.
<synopsis>
! int PgDatabase::FieldSize(int field_num) const
</synopsis>
Returns the space allocated for this field in a database tuple given
the field number. In other words the size of the server's binary
***************
*** 444,450 ****
Returns the size in bytes of the field associated with the given
field index. Field indices start at 0.
<synopsis>
! short PgDatabase::FieldSize(const char *field_name) const
</synopsis>
Returns the space allocated for this field in a database tuple given
the field name. In other words the size of the server's binary
--- 444,450 ----
Returns the size in bytes of the field associated with the given
field index. Field indices start at 0.
<synopsis>
! int PgDatabase::FieldSize(const char *field_name) const
</synopsis>
Returns the space allocated for this field in a database tuple given
the field name. In other words the size of the server's binary
Index: src/interfaces/libpq++/TODO
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq++/TODO,v
retrieving revision 1.3
diff -c -r1.3 TODO
*** src/interfaces/libpq++/TODO 2001/05/09 17:37:17 1.3
--- src/interfaces/libpq++/TODO 2001/05/09 17:43:25
***************
*** 1,5 ****
* Implement exceptions
* Many other things I have yet to discover
- * fix getLength to return an int and not a short
--- 1,4 ----
Index: src/interfaces/libpq++/pgdatabase.cc
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq++/pgdatabase.cc,v
retrieving revision 1.10
diff -c -r1.10 pgdatabase.cc
*** src/interfaces/libpq++/pgdatabase.cc 2001/05/09 17:29:10 1.10
--- src/interfaces/libpq++/pgdatabase.cc 2001/05/09 17:43:25
***************
*** 106,118 ****
}
! short PgDatabase::FieldSize(int field_num) const
{
return PQfsize(pgResult, field_num);
}
! short PgDatabase::FieldSize(const char* field_name) const
{
return PQfsize(pgResult, FieldNum(field_name));
}
--- 106,118 ----
}
! int PgDatabase::FieldSize(int field_num) const
{
return PQfsize(pgResult, field_num);
}
! int PgDatabase::FieldSize(const char* field_name) const
{
return PQfsize(pgResult, FieldNum(field_name));
}
Index: src/interfaces/libpq++/pgdatabase.h
===================================================================
RCS file: /home/projects/pgsql/cvsroot/pgsql/src/interfaces/libpq++/pgdatabase.h,v
retrieving revision 1.10
diff -c -r1.10 pgdatabase.h
*** src/interfaces/libpq++/pgdatabase.h 2001/05/09 17:29:10 1.10
--- src/interfaces/libpq++/pgdatabase.h 2001/05/09 17:43:25
***************
*** 51,58 ****
int FieldNum(const char* field_name) const;
Oid FieldType(int field_num) const;
Oid FieldType(const char* field_name) const;
! short FieldSize(int field_num) const;
! short FieldSize(const char* field_name) const;
const char* GetValue(size_type tup_num, int field_num) const;
const char* GetValue(size_type tup_num, const char* field_name) const;
bool GetIsNull(size_type tup_num, int field_num) const;
--- 51,58 ----
int FieldNum(const char* field_name) const;
Oid FieldType(int field_num) const;
Oid FieldType(const char* field_name) const;
! int FieldSize(int field_num) const;
! int FieldSize(const char* field_name) const;
const char* GetValue(size_type tup_num, int field_num) const;
const char* GetValue(size_type tup_num, const char* field_name) const;
bool GetIsNull(size_type tup_num, int field_num) const;
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-interfaces@postgresql.org
Cc: pgman@candle.pha.pa.us, jtv@cistron-office.nl
Subject: Re: libpq++: combined patches based on 7.1b5
In-Reply-To: <200105091745.f49HjhU14550@candle.pha.pa.us>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox