Announcing the release of pyPgSQL 1.6 - Mailing list pgsql-interfaces

From Billy G. Allie
Subject Announcing the release of pyPgSQL 1.6
Date
Msg-id 200110040515.f945FFZ23428@bajor.mug.org
Whole thread Raw
List pgsql-interfaces
Announce: pyPgSQL - Version 1.6 is released.
===========================================================================

pyPgSQL v1.6 has been released.  It is primarily a bug fix release to ver-
sion 1.5.1, but also include some enhancements.

NOTE: This release drops support for PostgreSQL 6.5.x and Python 1.5.x.
      If you are still using those versions, you are badly in need of an
      upgrade.

It is available at http://sourceforge.net/projects/pypgsql.

pyPgSQL is a package of two (2) modules that provide a Python DB-API 2.0
compliant interface to PostgreSQL databases.  The first module, libpq,
exports the PostgreSQL C API to Python.  This module is written in C and
can be compiled into Python or can be dynamically loaded on demand.  The
second module, PgSQL, provides the DB-API 2.0 compliant interface and
support for various PostgreSQL data types, such as INT8, NUMERIC, MONEY,
BOOL, ARRAYS, etc.  This module is written in Python and works with
PostgreSQL 7.0 or later and Python 2.0 or later.

Note: It is highly recommended that you use PostgreSQL 7.1 or later and
      Python 2.1 or later.

PostgreSQL is a sophisticated Object-Relational DBMS, supporting almost all
SQL constructs, including sub-selects, transactions, and user-defined types
and functions. It is the most advanced open-source database available any-
where More information about PostgreSQL can be found at the PostgreSQL home
page at http://www.postgresql.org.

Python is an interpreted, interactive, object-oriented programming lang-
uage.  It combines remarkable power with very clear syntax.  It has mod-
ules, classes, exceptions, very high level dynamic data types, and dynamic
typing.  There are interfaces to many system calls and libraries, as well
as to various windowing systems (X11, Motif, Tk, Mac, MFC).  New builtin
modules are easily written in C or C++.  Python is also usable as an exten-
sion language for applications that need a programmable interface.  Python
is copyrighted but freely usable and distributable, even for commercial
use.  More information about Python can be found on the Python home page at
http://www.python.org.

---------------------------------------------------------------------------
ChangeLog:
===========================================================================

Changes since pyPgSQL Version 1.5.1
===================================

The following regression test cases have been added.  Each regression test
is designed to rigorously test a specific part of pyPgSQL:

    pgresult.py     - Test cases for the libpq.PgResult object.
    pgversion.py    - Test cases for the libpq.PgVersion object.
    pgconnection.py - Test cases for the libpq.PgConnection object.

Changes to PgSQL.py
-------------------
 *  Added support for the PostgreSQL BYTEA type.  This will allow binary
    values to be stored in the database without the use of Large Objects.

 *  [Bug #455514, #464213] Changed how strings are escaped/quoted for use as
    parameter in queries.  Modified code so that array elements are quoted
    differently from regular attributes.  The repr function is no longer used.

 *  Changed code so that libpq notices are only converted to Warning exceptions
    in certain specific cases.  This will prevent Warning exceptions from
    occuring when tables with serial fields are created, etc.  When Python 2.2
    is released, it's Warning framework will be used for libpq notices.

 *  Cleaned up the logic in hadleArray().

 *  Updated the PgSQL.__doc__ string.

 *  [Feature Request #462588] Cursor.close() no longer ends (rollback) the
    open transaction when the last cursor is closed.

 *  On Connection.close(), reset all the attributes to a sane state (i.e.
    None or 0, as appropriate).

 *  [Bug #462589] In a fit of optimization, I had introduced a bug that
    caused comparisons of PgResultSets to anything to fail.  This bug has
    been squashed.

 *  Fixed several cases of references to non-existing globals in PgMoney.

 *  Previously, I was not building up the description attribute if no rows
    were returned.  The description attribute is now built on the first
    successful select or cursor fetch.

Changes to libpqmodule.c
------------------------
 *  [Bug #455514, #464213] Added a new function to escape/quote strings.  This
    function will escape/quote values used as array elements differently from
    regular fields.

 *  Added a new functions to escape/un-escape strings used as input/output
    to/from bytea fields.  These function will escape/quote values used as
    array elements differently from regular fields.

 *  Removed code related to PostgreSQL 6.5.x.  We now only support
    PostgreSQL 7.0 and later.

 *  Changed 'long long' to 'LONG_LONG'.  That way there is no assumption of
    how a 64bit integer is declared.

Changes to pgboolean.c
----------------------
 *  Fix bug in PgBoolean_FromString; also improve and simplify the string
    stripping in this method.

Changes to pgconnection.c
-------------------------
 *  Removed the pgFixEsc() function.  It is no longer needed since repr() is
    not used to escape/quote strings.

 *  Changed code so that a PgConnection object's members are set to None if
    the finish() method is called.

 *  Corrected bugs found while developing a set of regression tests for
    pgconnection.c.

 *  Re-ordered the items in PgConnection_members so that the attributes
    handled directly by PgConnection_getattr are grouped together and
    commented appropriately.

 *  Removed code related to PostgreSQL 6.5.x.  We now only support
    PostgreSQL 7.0 and later.

 *  Use PyObject_Del() instead of PyMem_Free() in dealloc() to delete the
    object.

Changes to pgint2object.c
-------------------------
 *  Use PyObject_Del() instead of PyMem_Free() in dealloc() to delete the
    object.

Changes to pgint8object.c
-------------------------
 *  Modified code for 64bit (long long) support in the MS Windows
    environment with MS Visual C++.

 *  Made changes to avoid use of long long constants.  This was done to
    assist in the use of MS Visual C++, which uses something other than LL
    to specify long long constants. (It's ugly, I know.  Thanks MS.)

 *  Use PyObject_Del() instead of PyMem_Free() in dealloc() to delete the
    object.

Changes to pglargeobject.c
--------------------------
 *  Removed an un-used variable.

 *  Use PyObject_Del() instead of PyMem_Free() in dealloc() to delete the
    object.

Changes to pgnotify.c
---------------------
 *  Clarified an embedded assignment within an if test.

 *  Use PyObject_Del() instead of PyMem_Free() in dealloc() to delete the
    object.

Changes to pgresult.c
---------------------
 *  Removed code related to PostgreSQL 6.5.x.  We now only support
    PostgreSQL 7.0 and later.

 *  Fixed a gcc reported int format <-> long int argument mis-match.

 *  Added check to make sure that the result was from a DQL (Data Query
    Language) statement in methods that only make sense for DQL statement
    results (fname(), etc.).

 *  Methods that take field and/or tuple indices will now raise an
    exception if those indices are out of range.  The previous behavior
    was to return the error code from the underlying PostgreSQL C-API
    function.

 *  The fnumber() method will now raise an exception if it is passed a
    string that is not a valid column name.  The previous behavior was to
    return the error code from the PostgreSQL C-API PQfnumber function.

 *  Correct some incorrect comments.

 *  Use PyObject_Del() instead of PyMem_Free() in dealloc() to delete the
    object.

 *  Added a cache (implemented with a Python Dictionary) for OIDs to hold
    the result of the check to see if the OID is a large object.  This
    should reduce the number queries sent to the database for this
    purpose.

 *  Add code to not check OIDs whose value is less than or equal to 1700
    (PG_NUMERIC).  These OIDs are not large objects.

Changes to pgversion.c
----------------------
 *  Removed variables that are no longer needed/referenced.

 *  Fixed code so that coercion generates an exception if the other object
    could not be converted to a PgVersion object.

 *  Fixed problem where a variable in PgVersion_New() could be used before
    it was initialized.

 *  Improved detection of erroneous input strings.

 *  Various minor bug fixes and code cleanup.

 *  Made constructed version string more closely mimic the actual format of
    the PostgreSQL version string.

 *  Having a __dict__ attribute and calling PyMember_Get() in the
    PyVersion_getattr function causes dir() to do strange things (like list
    members twice).  I've removed the __dict__ attribute and added methods
    to emulate a mapping object to PgVersion.  A PgVersion object will now
    act like a dictionary, so use version[key] instead of
    version.__dict__[key].

 *  Make PgVersion_New safe for arbitrary input strings.

 *  Make the repr method really return the version string.

 *  Initialize a variable (value) in ver_coerce() to quite an erroneous gcc
    warning message.


--
____       | Billy G. Allie    | Domain....: Bill.Allie@mug.org
|  /|      | 7436 Hartwell     | MSN.......: B_G_Allie@email.msn.com
|-/-|----- | Dearborn, MI 48126|
|/  |LLIE  | (313) 582-1540    |



pgsql-interfaces by date:

Previous
From: Tom Lane
Date:
Subject: Re:
Next
From: "Darko Prenosil"
Date:
Subject: Re: