mirror of
https://github.com/psycopg/psycopg2.git
synced 2024-11-23 01:16:34 +03:00
491 lines
16 KiB
Plaintext
491 lines
16 KiB
Plaintext
What's new in psycopg 2.0.9
|
||
---------------------------
|
||
|
||
* New features:
|
||
- "import psycopg2.extras" to get some support for handling times
|
||
and timestamps with seconds in the time zone offset.
|
||
- DictCursors can now be used as named cursors.
|
||
|
||
* Bug fixes:
|
||
- register_type() now accept an explicit None as its second parameter.
|
||
- psycopg2 should build again on MSVC and Solaris.
|
||
|
||
|
||
What's new in psycopg 2.0.9
|
||
---------------------------
|
||
|
||
* New features:
|
||
- COPY TO/COPY FROM queries now can be of any size and psycopg will
|
||
correctly quote separators.
|
||
- float values Inf and NaN are now correctly handled and can
|
||
round-trip to the database.
|
||
- executemany() now return the numer of total INSERTed or UPDATEd
|
||
rows. Note that, as it has always been, executemany() should not
|
||
be used to execute multiple SELECT statements and while it will
|
||
execute the statements without any problem, it will return the
|
||
wrong value.
|
||
- copy_from() and copy_to() can now use quoted separators.
|
||
- "import psycopg2.extras" to get UUID support.
|
||
|
||
* Bug fixes:
|
||
- register_type() now works on connection and cursor subclasses.
|
||
- fixed a memory leak when using lobjects.
|
||
|
||
|
||
What's new in psycopg 2.0.8
|
||
---------------------------
|
||
|
||
* New features:
|
||
- The connection object now has a get_backend_pid() method that
|
||
returns the current PostgreSQL connection backend process PID.
|
||
- The PostgreSQL large object API has been exposed through the
|
||
Cursor.lobject() method.
|
||
|
||
* Bug fixes:
|
||
- Some fixes to ZPsycopgDA have been merged from the Debian package.
|
||
- A memory leak was fixed in Cursor.executemany().
|
||
- A double free was fixed in pq_complete_error(), that caused crashes
|
||
under some error conditions.
|
||
|
||
What's new in psycopg 2.0.7
|
||
---------------------------
|
||
|
||
* Improved error handling:
|
||
- All instances of psycopg2.Error subclasses now have pgerror,
|
||
pgcode and cursor attributes. They will be set to None if no
|
||
value is available.
|
||
- Exception classes are now chosen based on the SQLSTATE value from
|
||
the result. (#184)
|
||
- The commit() and rollback() methods now set the pgerror and pgcode
|
||
attributes on exceptions. (#152)
|
||
- errors from commit() and rollback() are no longer considered
|
||
fatal. (#194)
|
||
- If a disconnect is detected during execute(), an exception will be
|
||
raised at that point rather than resulting in "ProgrammingError:
|
||
no results to fetch" later on. (#186)
|
||
|
||
* Better PostgreSQL compatibility:
|
||
- If the server uses standard_conforming_strings, perform
|
||
appropriate quoting.
|
||
- BC dates are now handled if psycopg is compiled with mxDateTime
|
||
support. If using datetime, an appropriate ValueError is
|
||
raised. (#203)
|
||
|
||
* Other bug fixes:
|
||
- If multiple sub-interpreters are in use, do not share the Decimal
|
||
type between them. (#192)
|
||
- Buffer objects obtained from psycopg are now accepted by psycopg
|
||
too, without segfaulting. (#209)
|
||
- A few small changes were made to improve DB-API compatibility.
|
||
All the dbapi20 tests now pass.
|
||
|
||
* Miscellaneous:
|
||
- The PSYCOPG_DISPLAY_SIZE option is now off by default. This means
|
||
that display size will always be set to "None" in
|
||
cursor.description. Calculating the display size was expensive,
|
||
and infrequently used so this should improve performance.
|
||
- New QueryCanceledError and TransactionRollbackError exceptions
|
||
have been added to the psycopg2.extensions module. They can be
|
||
used to detect deadlocks and statement timeouts respectively.
|
||
- Cursor objects now have a "closed" attribute. (#164)
|
||
- If psycopg has been built with debug support, it is now necessary
|
||
to set the PSYCOPG_DEBUG environment variable to turn on debug
|
||
spew.
|
||
|
||
What's new in psycopg 2.0.6
|
||
---------------------------
|
||
|
||
* Better support for PostgreSQL, Python and win32:
|
||
- full support for PostgreSQL 8.2, including NULLs in arrays
|
||
- support for almost all existing PostgreSQL encodings
|
||
- full list of PostgreSQL error codes available by importing the
|
||
psycopg2.errorcodes module
|
||
- full support for Python 2.5 and 64 bit architectures
|
||
- better build support on win32 platform
|
||
|
||
* Support for per-connection type-casters (used by ZPsycopgDA too, this
|
||
fixes a long standing bug that made different connections use a random
|
||
set of date/time type-casters instead of the configured one.)
|
||
|
||
* Better management of times and dates both from Python and in Zope.
|
||
|
||
* copy_to and copy_from now take an extra "columns" parameter.
|
||
|
||
* Python tuples are now adapted to SQL sequences that can be used with
|
||
the "IN" operator by default if the psycopg2.extensions module is
|
||
imported (i.e., the SQL_IN adapter was moved from extras to extensions.)
|
||
|
||
* Fixed some small buglets and build glitches:
|
||
- removed double mutex destroy
|
||
- removed all non-constant initializers
|
||
- fixed PyObject_HEAD declarations to avoid memory corruption
|
||
on 64 bit architectures
|
||
- fixed several Python API calls to work on 64 bit architectures
|
||
- applied compatibility macros from PEP 353
|
||
- now using more than one argument format raise an error instead of
|
||
a segfault
|
||
|
||
What's new in psycopg 2.0.5.1
|
||
----------------------------
|
||
|
||
* Now it really, really builds on MSVC and older gcc versions.
|
||
|
||
What's new in psycopg 2.0.5
|
||
--------------------------
|
||
|
||
* Fixed various buglets such as:
|
||
- segfault when passing an empty string to Binary()
|
||
- segfault on null queries
|
||
- segfault and bad keyword naming in .executemany()
|
||
- OperationalError in connection objects was always None
|
||
|
||
* Various changes to ZPsycopgDA to make it more zope2.9-ish.
|
||
|
||
* connect() now accept both integers and strings as port parameter
|
||
|
||
What's new in psycopg 2.0.4
|
||
---------------------------
|
||
|
||
* Fixed float conversion bug introduced in 2.0.3.
|
||
|
||
What's new in psycopg 2.0.3
|
||
---------------------------
|
||
|
||
* Fixed various buglets and a memory leak (see ChangeLog for details)
|
||
|
||
What's new in psycopg 2.0.2
|
||
---------------------------
|
||
|
||
* Fixed a bug in array typecasting that sometimes made psycopg forget about
|
||
the last element in the array.
|
||
|
||
* Fixed some minor buglets in string memory allocations.
|
||
|
||
* Builds again with compilers different from gcc (#warning about PostgreSQL
|
||
version is issued only if __GCC__ is defined.)
|
||
|
||
What's new in psycopg 2.0.1
|
||
---------------------------
|
||
|
||
* ZPsycopgDA now actually loads.
|
||
|
||
What's new in psycopg 2.0
|
||
-------------------------
|
||
|
||
* Fixed handle leak on win32.
|
||
|
||
* If available the new "safe" encoding functions of libpq are used.
|
||
|
||
* django and tinyerp people, please switch to psycopg 2 _without_
|
||
using a psycopg 1 compatibility layer (this release was anticipated
|
||
so that you all stop grumbling about psycopg 2 is still in beta.. :)
|
||
|
||
What's new in psycopg 2.0 beta 7
|
||
--------------------------------
|
||
|
||
* Ironed out last problems with times and date (should be quite solid now.)
|
||
|
||
* Fixed problems with some arrays.
|
||
|
||
* Slightly better ZPsycopgDA (no more double connection objects in the menu
|
||
and other minor fixes.)
|
||
|
||
* ProgrammingError exceptions now have three extra attributes: .cursor
|
||
(it is possible to access the query that caused the exception using
|
||
error.cursor.query), .pgerror and .pgcode (PostgreSQL original error
|
||
text and code.)
|
||
|
||
* The build system uses pg_config when available.
|
||
|
||
* Documentation in the doc/ directory! (With many kudos to piro.)
|
||
|
||
What's new in psycopg 2.0 beta 6
|
||
--------------------------------
|
||
|
||
* Support for named cursors (see examples/fetch.py).
|
||
|
||
* Safer parsing of time intervals.
|
||
|
||
* Better parsing of times and dates, no more locale problems.
|
||
|
||
* Should now play well with py2exe and similar tools.
|
||
|
||
* The "decimal" module is now used if available under Python 2.3.
|
||
|
||
What's new in psycopg 2.0 beta 5
|
||
--------------------------------
|
||
|
||
* Fixed all known bugs.
|
||
|
||
* The initial isolation level is now read from the server and
|
||
.set_isolation_level() now takes values defined in psycopg2.extensions.
|
||
|
||
* .callproc() implemented as a SELECT of the given procedure.
|
||
|
||
* Better docstrings for a few functions/methods.
|
||
|
||
* Some time-related functions like psycopg2.TimeFromTicks() now take the
|
||
local timezone into account. Also a tzinfo object (as per datetime module
|
||
specifications) can be passed to the psycopg2.Time and psycopg2.Datetime
|
||
constructors.
|
||
|
||
* All classes have been renamed to exist in the psycopg2._psycopg module,
|
||
to fix problems with automatic documentation generators like epydoc.
|
||
|
||
* NOTIFY is correctly trapped (see examples/notify.py for example code.)
|
||
|
||
What's new in psycopg 2.0 beta 4
|
||
--------------------------------
|
||
|
||
* psycopg module is now named psycopg2.
|
||
|
||
* No more segfaults when a UNICODE query can't be converted to the
|
||
backend encoding.
|
||
|
||
* No more segfaults on empty queries.
|
||
|
||
* psycopg2.connect() now takes an integer for the port keyword parameter.
|
||
|
||
* "python setup.py bdist_rpm" now works.
|
||
|
||
* Fixed lots of small bugs, see ChangeLog for details.
|
||
|
||
What's new in psycopg 2.0 beta 3
|
||
--------------------------------
|
||
|
||
* ZPsycopgDA now works (except table browsing.)
|
||
|
||
* psycopg build again on Python 2.2.
|
||
|
||
What's new in psycopg 2.0 beta 2
|
||
--------------------------------
|
||
|
||
* Fixed ZPsycopgDA version check (ZPsycopgDA can now be imported in
|
||
Zope.)
|
||
|
||
* psycopg.extras.DictRow works even after a new query on the generating
|
||
cursor.
|
||
|
||
* Better setup.py for win32 (should build with MSCV or mingw.)
|
||
|
||
* Generic fixed and memory leaks plugs.
|
||
|
||
What's new in psycopg 2.0 beta 1
|
||
--------------------------------
|
||
|
||
* Officially in beta (i.e., no new features will be added.)
|
||
|
||
* Array support: list objects can be passed as bound variables and are
|
||
correctly returned for array columns.
|
||
|
||
* Added the psycopg.psycopg1 compatibility module (if you want instant
|
||
psycopg 1 compatibility just "from psycopg import psycopg1 as psycopg".)
|
||
|
||
* Complete support for BYTEA columns and buffer objects.
|
||
|
||
* Added error codes to error messages.
|
||
|
||
* The AsIs adapter is now exported by default (also Decimal objects are
|
||
adapted using the AsIs adapter (when str() is called on them they
|
||
already format themselves using the right precision and scale.)
|
||
|
||
* The connect() function now takes "connection_factory" instead of
|
||
"factory" as keyword argument.
|
||
|
||
* New setup.py code to build on win32 using mingw and better error
|
||
messages on missing datetime headers,
|
||
|
||
* Internal changes that allow much better user-defined type casters.
|
||
|
||
* A lot of bugfixes (binary, datetime, 64 bit arches, GIL, .executemany())
|
||
|
||
What's new in psycopg 1.99.13
|
||
-----------------------------
|
||
|
||
* Added missing .executemany() method.
|
||
|
||
* Optimized type cast from PostgreSQL to Python (psycopg should be even
|
||
faster than before.)
|
||
|
||
What's new in psycopg 1.99.12
|
||
-----------------------------
|
||
|
||
* .rowcount should be ok and in sync with psycopg 1.
|
||
|
||
* Implemented the new COPY FROM/COPY TO code when connection to the
|
||
backend using libpq protocol 3 (this also removes all asprintf calls:
|
||
build on win32 works again.) A protocol 3-enabled psycopg *can*
|
||
connect to an old protocol 2 database and will detect it and use the
|
||
right code.
|
||
|
||
* getquoted() called for real by the mogrification code.
|
||
|
||
What's new in psycopg 1.99.11
|
||
-----------------------------
|
||
|
||
* 'cursor' argument in .cursor() connection method renamed to
|
||
'cursor_factory'.
|
||
|
||
* changed 'tuple_factory' cursor attribute name to 'row_factory'.
|
||
|
||
* the .cursor attribute is gone and connections and cursors are propely
|
||
gc-managed.
|
||
|
||
* fixes to the async core.
|
||
|
||
What's new in psycopg 1.99.10
|
||
-----------------------------
|
||
|
||
* The adapt() function now fully supports the adaptation protocol
|
||
described in PEP 246. Note that the adapters registry now is indexed
|
||
by (type, protocol) and not by type alone. Change your adapters
|
||
accordingly.
|
||
|
||
* More configuration options moved from setup.py to setup.cfg.
|
||
|
||
* Fixed two memory leaks: one in cursor deallocation and one in row
|
||
fetching (.fetchXXX() methods.)
|
||
|
||
What's new in psycopg 1.99.9
|
||
----------------------------
|
||
|
||
* Added simple pooling code (psycopg.pool module); see the reworked
|
||
examples/threads.py for example code.
|
||
|
||
* Added DECIMAL typecaster to convert postgresql DECIMAL and NUMERIC
|
||
types (i.e, all types with an OID of NUMERICOID.) Note that the
|
||
DECIMAL typecaster does not set scale and precision on the created
|
||
objects but uses Python defaults.
|
||
|
||
* ZPsycopgDA back in and working using the new pooling code.
|
||
|
||
* Isn't that enough? :)
|
||
|
||
What's new in psycopg 1.99.8
|
||
----------------------------
|
||
|
||
* added support for UNICODE queries.
|
||
|
||
* added UNICODE typecaster; to activate it just do:
|
||
|
||
psycopg.extensions.register_type(psycopg.extensions.UNICODE)
|
||
|
||
Note that the UNICODE typecaster override the STRING one, so it is
|
||
not activated by default.
|
||
|
||
* cursors now really support the iterator protocol.
|
||
|
||
* solved the rounding errors in time conversions.
|
||
|
||
* now cursors support .fileno() and .isready() methods, to be used in
|
||
select() calls.
|
||
|
||
* .copy_from() and .copy_in() methods are back in (still using the old
|
||
protocol, will be updated to use new one in next releasae.)
|
||
|
||
* fixed memory corruption bug reported on win32 platform.
|
||
|
||
What's new in psycopg 1.99.7
|
||
----------------------------
|
||
|
||
* added support for tuple factories in cursor objects (removed factory
|
||
argument in favor of a .tuple_factory attribute on the cursor object);
|
||
see the new module psycopg.extras for a cursor (DictCursor) that
|
||
return rows as objects that support indexing both by position and
|
||
column name.
|
||
|
||
* added support for tzinfo objects in datetime.timestamp objects: the
|
||
PostgreSQL type "timestamp with time zone" is converted to
|
||
datetime.timestamp with a FixedOffsetTimezone initialized as necessary.
|
||
|
||
What's new in psycopg 1.99.6
|
||
----------------------------
|
||
|
||
* sslmode parameter from 1.1.x
|
||
|
||
* various datetime conversion improvements.
|
||
|
||
* now psycopg should compile without mx or without native datetime
|
||
(not both, obviously.)
|
||
|
||
* included various win32/MSVC fixes (pthread.h changes, winsock2
|
||
library, include path in setup.py, etc.)
|
||
|
||
* ported interval fixes from 1.1.14/1.1.15.
|
||
|
||
* the last query executed by a cursor is now available in the
|
||
.query attribute.
|
||
|
||
* conversion of unicode strings to backend encoding now uses a table
|
||
(that still need to be filled.)
|
||
|
||
* cursors now have a .mogrify() method that return the query string
|
||
instead of executing it.
|
||
|
||
* connection objects now have a .dsn read-only attribute that holds the
|
||
connection string.
|
||
|
||
* moved psycopg C module to _psycopg and made psycopg a python module:
|
||
this allows for a neat separation of DBAPI-2.0 functionality and psycopg
|
||
extensions; the psycopg namespace will be also used to provide
|
||
python-only extensions (like the pooling code, some ZPsycopgDA support
|
||
functions and the like.)
|
||
|
||
What's new in psycopg 1.99.3
|
||
----------------------------
|
||
|
||
* added support for python 2.3 datetime types (both ways) and made datetime
|
||
the default set of typecasters when available.
|
||
|
||
* added example: dt.py.
|
||
|
||
What's new in psycopg 1.99.3
|
||
----------------------------
|
||
|
||
* initial working support for unicode bound variables: UTF-8 and latin-1
|
||
backend encodings are natively supported (and the encoding.py example even
|
||
works!)
|
||
|
||
* added .set_client_encoding() method on the connection object.
|
||
|
||
* added examples: encoding.py, binary.py, lastrowid.py.
|
||
|
||
What's new in psycopg 1.99.2
|
||
----------------------------
|
||
|
||
* better typecasting:
|
||
- DateTimeDelta used for postgresql TIME (merge from 1.1)
|
||
- BYTEA now is converted to a real buffer object, not to a string
|
||
|
||
* buffer objects are now adapted into Binary objects automatically.
|
||
|
||
* ported scroll method from 1.1 (DBAPI-2.0 extension for cursors)
|
||
|
||
* initial support for some DBAPI-2.0 extensions:
|
||
- .rownumber attribute for cursors
|
||
- .connection attribute for cursors
|
||
- .next() and .__iter__() methods to have cursors support the iterator
|
||
protocol
|
||
- all exception objects are exported to the connection object
|
||
|
||
What's new in psycopg 1.99.1
|
||
----------------------------
|
||
|
||
* implemented microprotocols to adapt arbitrary types to the interface used by
|
||
psycopg to bind variables in execute;
|
||
|
||
* moved qstring, pboolean and mxdatetime to the new adapter layout (binary is
|
||
still missing; python 2.3 datetime needs to be written).
|
||
|
||
|
||
What's new in psycopg 1.99.0
|
||
----------------------------
|
||
|
||
* reorganized the whole source tree;
|
||
|
||
* async core is in place;
|
||
|
||
* splitted QuotedString objects from mx stuff;
|
||
|
||
* dropped autotools and moved to pythonic setup.py (needs work.)
|