LSARC/2008/217 libpqxx C++ API to PostgreSQL for Solaris
Tom Childers
tom.childers at sun.com
Wed Apr 2 10:06:06 PDT 2008
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