LSARC/2008/217 libpqxx C++ API to PostgreSQL for Solaris
Tom Childers
tom.childers at sun.com
Wed Apr 2 13:21:36 PDT 2008
(How did I miss that? :-)
Thanks, that makes it all clear. I request that you add a pointer in
this one-pager to LSARC 2008/004, since it is a pre-requisite and
this case completely depends on it. Otherwise, I have no other issues.
-tdc
On Apr 2, 2008, at 11:02 AM, James Gates wrote:
> The Postgres 8.3 case was approved in early 2008 (LSARC/2008/004).
>
> I think these were separate cases because a) the projects occurred
> at separate times & b) libpqxx is not part of the core Postgres
> distribution (it's a community contributed add-on)
>
> But in future I suspect that we'll combine the cases for new
> versions of Postgres & libpqxx.
>
>
> Tom Childers wrote:
>> I'm confused by the version number. This is going into a Postgres
>> 8.3 directory, however the last cases we've seen provide Postgres
>> 8.2 on Solaris, with components in /usr/postgres/8.2/lib.
>> Is there a Postgres 8.3 case coming? If so, we should approve
>> this depending on 8.3 approval. Or...why couldn't this be
>> incorporated into the 8.3 case? It's not a big deal to add a C++
>> API to an RDBMS product.
>> -tdc
>> On Apr 2, 2008, at 8:34 AM, James Gates wrote:
>>> I am sponsoring this fast-track on behalf of Geir Green. The
>>> timer was due to expire yesterday (04/01/08), but there were a
>>> couple of questions on the alias last week that couldn't be
>>> answered as Geir was on vacation.
>>>
>>> The questions (relating to which compiler is being used and
>>> whether 64-bit libraries are being built) have now been
>>> addressed in this new proposal, which can also be found in the
>>> case directory.
>>>
>>> Assuming no further queries, I'll close the case at the end of
>>> this week.
>>> Template Version: @(#)onepager.txt 1.35 07/11/07 SMI
>>> Copyright 2008 Sun Microsystems
>>>
>>>
>>> 1. Introduction
>>> 1.1. Project/Component Working Name:
>>> libpqxx - Provide C++ API to PostgreSQL for Solaris and
>>> Opensolaris
>>>
>>> 1.2. Name of Document Author/Supplier:
>>> Geir Green
>>>
>>> 1.3. Date of This Document:
>>> 04/02/08
>>> 1.3.1. Date this project was conceived:
>>> 01/03/08
>>>
>>> 1.4. Name of Major Document Customer(s)/Consumer(s):
>>> 1.4.1. The PAC or CPT you expect to review your project:
>>> Database
>>>
>>> 1.4.2. The ARC(s) you expect to review your project:
>>> LSARC
>>>
>>> 1.4.3. The Director/VP who is "Sponsoring" this project:
>>> Heidi Bergh-Hoff <heidi.bergh-hoff at sun.com>
>>>
>>> 1.4.4. The name of your business unit:
>>> Database Technology Group (DBTG)
>>>
>>> 1.5. Email Aliases:
>>> 1.5.1. Responsible Manager:
>>> Erlend Dahl <erlend.dahl at sun.com>
>>>
>>> 1.5.2. Responsible Engineer:
>>> Geir Green <geir.green at sun.com>
>>>
>>> 1.5.3. Marketing Manager:
>>> Rebecca Hansen <rebecca.hansen at sun.com>
>>>
>>> 1.5.4. Interest List:
>>> databases-discuss at sun.com
>>> postgresql-techteam at sun.com
>>> sun-postgres-pteam at sun.com
>>>
>>> 2. Project Summary
>>> 2.1. Project Description:
>>> libpqxx is the official C++ client API for PostgreSQL.
>>> This project aims to provide libpqxx as a part of the
>>> OpenSolaris
>>> distribution(s).
>>>
>>> This project qualifies for micro/patch release binding.
>>>
>>> 2.2. Risks and Assumptions:
>>> It is assumed that porting the libpqxx to Solaris may cause
>>> modifications of the libpqxx code so that it will run
>>> properly on the
>>> Solaris platform. The modifications (if any) are expected
>>> to be minor.
>>>
>>> The business risks associated with not providing the
>>> libpqxx API for
>>> PostgreSQL is considered high, as we would provide a less
>>> complete
>>> environment for PostgreSQL as compared to what the open
>>> source
>>> community would expect.
>>>
>>>
>>> 3. Business Summary
>>> 3.1. Problem Area:
>>> A customer who is writing software in C++ that needs to
>>> access
>>> databases managed by postgres (on just about any
>>> platform) libpqxx is
>>> the library to use.
>>>
>>> 3.2. Market/Requester:
>>> Projects Using libpqxx (taken from the README file
>>> following the
>>> source-code) - this list is far from complete. It is
>>> known that there
>>> are many other projects using libpqxx that are not
>>> included here.
>>> Some of them may be proprietary, or even have no names.
>>>
>>> As found on Google:
>>>
>>> DocConversion http://docconversion.sourceforge.net/
>>> Genea http://savannah.nongnu.org/projects/genea/
>>> Gnucomo http://www.gnucomo.org/
>>> MapServer http://mapserver.gis.umn.edu/
>>> QHacc http://qhacc.sourceforge.net/
>>> Vocal/Mascarpone http://www.vovida.org/
>>>
>>>
>>> Confirmed by authors:
>>>
>>> OKE http://www.liacs.nl/home/bsamwel/oke/
>>> prerelease-0.10/
>>> KOffice/Kexi http://www.kexi-project.org/
>>> KPoGre http://kpogre.sourceforge.net/
>>> Once MMORPG http://sourceforge.net/projects/once/
>>> Scippy http://dicomlib.swri.ca/scippy.html
>>>
>>> 3.6. How will you know when you are done?:
>>> When the libpqxx code is integrated into the OpenSolaris SFW
>>> consolidation.
>>>
>>>
>>> 4. Technical Description:
>>> 4.1. Details:
>>> libpqxx(TM) is a C++ API to PostgreSQL(TM). It replaces
>>> the earlier
>>> libpq++(TM) with a more Standard Template Library (STL)-
>>> conformant
>>> interface and makes more extensive use of C++ language
>>> features such
>>> as exceptions, templates, and strings.
>>>
>>> Since libpqxx builds on top of the C front-end libpq(TM),
>>> you will need
>>> a working libpq library on your system prior to getting
>>> started with
>>> libpqxx. This is similar to the situation with the older
>>> libpq++
>>> interface.
>>>
>>> The first thing you're likely to notice in programming
>>> with libpqxx is
>>> that unlike other libraries, it revolves entirely around
>>> transactions. Transactions are a central concept in database
>>> management systems, but they are widely under-appreciated
>>> among
>>> application developers.
>>>
>>> It may sometimes be possible to build limited
>>> applications reliably
>>> without serious use of transactions. More usually, however,
>>> applications are designed without transactions simply
>>> because the
>>> developers aren't aware of the risks they are taking, and
>>> any data
>>> loss is rare or small enough not to be noticed. That kind
>>> of design
>>> was not considered acceptable for libpqxx.
>>>
>>> With conventional database APIs, you issue commands and
>>> queries to a
>>> database session or connection, and optionally create the
>>> occasional
>>> transaction. In libpqxx you start a transaction inside
>>> the connection
>>> first, do your SQL work using that transaction, then
>>> commit the
>>> transaction when it's complete. There are several types of
>>> transactions with various "quality of service"
>>> properties; if you
>>> don't really want to use transactions at all, one of the
>>> available
>>> transaction types is called nontransaction. This
>>> transaction type
>>> provides classic, non-transactional behavior.
>>>
>>> Every command or query issues a result object, which is
>>> really a smart
>>> pointer so it can be copied around without incurring much
>>> cost in
>>> terms of performance. No need to write special code to
>>> check these for
>>> success; error conditions are converted to regular C++
>>> exceptions.
>>> Result objects can be kept around for as long as they are
>>> needed,
>>> completely separate from the connections and transactions
>>> that
>>> originated them.
>>>
>>> 4.5. Interfaces:
>>>
>>> EXPORTED STABILITY NOTES
>>> ------------------------------------------------------------
>>> libpqxx Uncommitted (NEW) C++ API
>>>
>>>
>>> IMPORTED STABILITY NOTES
>>> ------------------------------------------------------------
>>> libpq Volatile LSARC/2008/004
>>>
>>> The 32 bit version of library libpqxx is installed in:
>>> /usr/postgres/8.3/lib/libpqxx.so
>>> - and the 64 bit version in:
>>> /usr/postgres/8.3/lib/amd64/libpqxx.so
>>> - and the header files in the directory:
>>> /usr/postgres/8.3/include/pqxx/
>>>
>>> Here is a list of all libpqxx modules:
>>>
>>> * String conversion
>>> * Utility functions
>>> * String escaping
>>> * Connection classes
>>> * Error/warning output
>>> * Transaction classes
>>> * Exception classes
>>> * Transactor framework
>>> * Notifications and Triggers
>>> See the libpqxx Documentation:
>>>
>>> http://pqxx.org/devprojects/libpqxx/doc/2.6.9/html/Reference/
>>>
>>> 4.6. Doc Impact:
>>> Documentation is generated by the makefiles (doxygen) based on
>>> the
>>> source files. See:
>>> http://pqxx.org/devprojects/libpqxx/doc/2.6.9/html/
>>> Reference/ index.html
>>>
>>> If man pages exist for other platforms e.g. Linux, these
>>> pages may be
>>> adapted to Solaris. Otherwise if man pages are needed,
>>> they must be
>>> written based on the existing documentation.
>>>
>>> 4.9. I18N/L10N Impact:
>>> libpqxx is an API and in its self independent on
>>> localization and
>>> internationalization.
>>>
>>>
>>> 4.10. Packaging & Delivery:
>>> This library works on top of the C-level API library,
>>> libpq and is
>>> needed in order to use libpqxx. It will be delivered as
>>> part of the
>>> postgres package(s) and as for libpq, in both 32 and 64
>>> bit versions,
>>> and of course made by Sun Studio C++.
>>>
>>> 4.12. Dependencies:
>>> libpq.so , version 5.x (PostgreSQL client library, both
>>> 32 and 64 bit)
>>> libpq-fe.h, (PostgreSQL client library header
>>> file)
>>>
>>> 5. Reference Documents:
>>>
>>> http://pqxx.org/devprojects/libpqxx/doc/2.6.9/html/
>>>
>>> 6. Resources and Schedule:
>>> 6.1. Projected Availability:
>>> Q4FY08
>>>
>>> 6.4. Product Approval Committee requested information:
>>> 6.4.1. Consolidation or Component Name:
>>> SFWNV
>>>
>>> 6.5. ARC review type:
>>> FastTrack
>>>
>>> 6.6. ARC Exposure:
>>> open
More information about the opensolaris-arc
mailing list