Обсуждение: C++ with PG 7.4?

Поиск
Список
Период
Сортировка

C++ with PG 7.4?

От
Carlos Moreno
Дата:
Hi,

I see that version 7.4 introduces new features in the client
API area -- error codes, for instance.

So, I'm wondering if this will affect the way libpq++ works;
assuming that the SQL's don't use any feature that has changed
with version 7.4, should I expect any difference in code that
uses straightforward things like the following:

PgDatabase db ("host=blah.blah.com user=me dbname=db password=me");

if (db.ConnectionBad())  { .... }

if (db.Exec ("select .... from ....") != PGRES_TUPLES_OK)
{    for (int i = ....  db.Tuples() ....)    {        .... db.GetValue (i, "field_name") .... ;    }
}

if (db.Exec ("insert into ..... ") != PGRES_COMMAND_OK)
{    ....
}


I'm guessing that I would be able to use new features and
new error codes, but if I keep my programs the same (with the
old set of defined constants, etc.), they will work the same?
(again, assuming that the SQL's don't use any feature for
which the behaviour of the backend has changed with ver 7.4)


Also, are there any plans to re-include C++ client API as
part of the postgresql package?   I don't mean to sound
ungrateful for everything that PostgreSQL offers, but I do
believe that removing C++ from the default distribution
was a great disservice to the community -- partly because
libpq++ does not even compile without some fine tuning
(well, programs written with it don't compile -- at least
on RedHat).

According to a survey you did a while ago, C++ had 2 or
3 times more users than C (off the top of my head -- I
couldn't access the "survey results" page, to check those
numbers).

I must admit to some personal bias in favor of C++, but
still, it's not like C++ is some obscure useless niche
language that only a few weirdos have heard of.

Thoughts, comments?


Thanks,

Carlos
--




Re: C++ with PG 7.4?

От
"Jeroen T. Vermeulen"
Дата:
On Sun, Dec 21, 2003 at 04:45:08PM -0500, Carlos Moreno wrote:
> Also, are there any plans to re-include C++ client API as
> part of the postgresql package?   I don't mean to sound
> ungrateful for everything that PostgreSQL offers, but I do
> believe that removing C++ from the default distribution
> was a great disservice to the community -- partly because
> libpq++ does not even compile without some fine tuning
> (well, programs written with it don't compile -- at least
> on RedHat).
There was some discussion about this, and in my view the upshot was
something like this: it doesn't matter how useful any particular API
may be, the package was just too large.  So it's better to leave out
all parts that are not essential (in the strict sense of the word) 
from the core product so people don't drown in the base archive.

Having gotten the base archive, users can then pick & download
whatever extras are useful to them--including an API library for 
their favourite language, of which they're likely to need only one
or two each.

Both libpq++ and its successor libpqxx were built on top of libpq, 
without any special knowledge of or access to its innards.  Hence only
libpq is an essential part of the package, whereas libpq++ and libpqxx
are not intimately tied to the database from a technical point of 
view.  AFAIK the same goes for several (most? all?) other language
bindings.

Finally, please reconsider what you say about libpq++.  If it doesn't
compile and there's nobody to do serious maintenance on it, why keep
it bundled?  Should an outdated interface be allowed to keep back the
release cycle for the whole database?  There isn't even a very tight
coupling, so upgrading the database separately from the library 
shouldn't have too great an impact.  Changes in error codes are not 
something you should need to worry about with a true C++ API; you 
won't find a single status return code in libpqxx, for instance.


Jeroen