LSARC/2008/217 libpqxx C++ API to PostgreSQL for Solaris
James Gates
james.gates at sun.com
Wed Apr 2 11:02:27 PDT 2008
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