2005-04-10 Federico Di Gregorio * setup.py: Added extensive error message on missing datetime headers. * Applied mingw patch from Daniele Varazzo. 2005-04-03 Federico Di Gregorio * lib/psycopg1.py (connection.autocommit): added compatibility .autocommit() method. * psycopg/psycopgmodule.c (psyco_connect): factory -> connection_factory. * lib/psycopg1.py: added psycopg 1.1.x compatibility module. 2005-03-29 Federico Di Gregorio * psycopg/pqpath.c (pq_is_busy): Staring from bug report from Jason Erickson fixed segfaults due to calling Python function without holding the GIL. 2005-03-24 Federico Di Gregorio * psycopg/adapter_binary.c (binary_escape): propagated Andrea's fix to binary adapter. * psycopg/adapter_qstring.c (qstring_quote): applied patch from Andrea Arcangeli to fix allocation failures (>4Gb) on 64 bit arches. * psycopg/typecast_array.c (typecast_array_tokenize): much better tokenization code. 2005-03-23 Federico Di Gregorio * psycopg/typecast_basic.c: all the basic casters now respect the passed string length. * psycopg/typecast.c (typecast_cast): set curs->caster to self during the type-casting. * psycopg/cursor_type.c: added "typecaster" attribute to the cursor (this is safe, cursors can't be shared among threads and the attribute is RO.) 2005-03-22 Federico Di Gregorio * psycopg/typecast_array.c: added some more structure to implement array typecasting. * scripts/buildtypes.py: new version to include array data. 2005-03-15 Federico Di Gregorio * lib/extensions.py: Added AsIs import. 2005-03-12 Federico Di Gregorio * psycopg/cursor.h: removed "qattr", not used anymore and added "cast", holding the typecaster currently in use. * Release 1.99.13. * psycopg/cursor_type.c (psyco_curs_executemany): implemented as a wrapper to extract python arguments and then call _psyco_curs_execute(). * psycopg/cursor_type.c (_psyco_curs_execute): splitted away python argument parsing from the real execute code, to later allow for .executemany(). * psycopg/cursor_type.c (_psyco_curs_buildrow_fill): modified to call typecast_cast(). * psycopg/typecast.c (typecast_call/typecast_cast): modified typecast_call to use the new typecast_cast that avoids one string conversion on every cast. 2005-03-04 Federico Di Gregorio * Release 1.99.12.1. * psycopg/adapter_asis.c (asis_str): changed call to PyObject_Repr to PyObject_Str to avoid problems with long integers. 2005-03-03 Federico Di Gregorio * psycopg/typecast.h: added array casting functions. * scripts/maketypes.sh: does not generate pgversion.h anymore. * Updated all examples for the release. 2005-03-02 Federico Di Gregorio * Release 1.99.12. * psycopg/adapter_*.c: added __conform__ to all adapters. * psycopg/adapter_qstring.c (qstring_quote): we now use PyString_AsStringAndSize() instead of strlen() that would stop at the first embedded \0 (but note that libpq quoting function will truncate the string anyway!) * COPY TO implemented using both old and new (v3) protocol. * psycopg/pqpath.c (_pq_copy_out_v3): implemented and working. * psycopg/cursor_type.c (psyco_curs_copy_to): added cursor object interface for copy_to. * COPY FROM implemented using both old and new (v3) protocol. * psycopg/config.h (Dprintf): declaration for asprintf is gone. * psycopg/pqpath.c (_pq_copy_in_v3): implemented. 2005-03-01 Federico Di Gregorio * setup.py: now we generate a slighly more verbose version string that embeds some of the compile options, to facilitate users' bug reports. * psycopg/cursor_type.c (psyco_curs_copy_from): we now use PyOS_snprintf instead of asprintf. On some platforms this can be bad (win32).. if that's your case, get a better platform. :/ * psycopg/microprotocols.c (microprotocols_adapt): fixed small typo that made adaptation using __conform__ impossible. 2005-02-28 Federico Di Gregorio * lib/extras.py: removed AsIs adapter (now a built-in); also removed prepare() method from the adapters that don't use it to avoid an extra method call at mogrification time. * psycopg/psycopgmodule.c (psyco_adapters_init): added initialization of the AsIs adapter (adapts int, long, float and *wonder* None!) * psycopg/cursor_type.c (_mogrify_getquoted): reorganized the code to adapt and then call .getquoted() to obtain the quoted data into this new function. 2005-2-27 Federico Di Gregorio * examples/myfirstrecipe.py: fixed adapter registration. 2005-2-7 Federico Di Gregorio * setup.py: added patch by Valentino Volonghi to build on MacOS X. 2005-01-29 Federico Di Gregorio * psycopg/pqpath.c (_pq_fetch_tuples): fixed scale-related segfault (*fourth* mail from Andrea. Another couple like this and psycopg 2 will exit alpha at warp speed.) * psycopg/pqpath.c (pq_fetch): _pq_copy_out_3 -> _pq_copy_out_v3 (second and third mail from Andrea. :/) * psycopg/cursor_type.c (_psyco_curs_has_write_check): added check on .write() attribute, fixed compilation problems (first mail from Andrea Arcangeli.) 2005-01-20 Federico Di Gregorio * lib/extensions.py (register_adapter): added register_adapter function, exported ISQLQuote in psycopg.extensions. 2005-01-18 Federico Di Gregorio * psycopg/pqpath.c (_pq_fetch_tuples): ported scale/precision fix from psycopg 1.1. * LICENSE: detailed licensing information. Re-licensed some parts under BSD-like to allow integration is pysqlite. 2005-01-13 Federico Di Gregorio * ZPsycopgDA/db.py (DB.query ): ported ZPsycopgDA connection fix from psycopg 1.1. * lib/*.py: added pydoc-friendly messages. 2005-01-12 Federico Di Gregorio * Added debian directory (thanks to W. Borgert who sent initial patch based on cdbs.) 2004-12-20 Federico Di Gregorio * psycopg/pqpath.c (pq_execute): removed multiple calls to pq_fetch in syncronous DBAPI compatibility mode to solve rowcount problem. 2004-12-14 Federico Di Gregorio * Mm.. release 1.99.11. * psycopg/cursor_type.c (_psyco_curs_prefetch): fixed bug in interaction between the .isready() method and _psyco_curs_prefetch: isready now store away the pgres but leave prefetch do its work. * psycopg/*.c: changed the names of most of the psycopg's built-in types to replect their position in the psycopg._psycopg module. 2004-12-10 Federico Di Gregorio * psycopg/cursor_type.c: now *all* write or async accesses to the connection object are arbitrated using the connection lock. * psycopg/cursor_type.c (psyco_curs_isready): now we reset the current async cursor if it is ready, to allow other cursors to .execute() without raising the "transaction in progress" error. * psycopg/pqpath.c (pq_is_busy): gained status of high-level function with its own blocking and locking. * psycopg/cursor.h (EXC_IF_CURS_CLOSED): also checks the connection (a closed connection implies a closed cursor.) * psycopg/cursor_type.c: cursor's connection is correctly INCREFfed and DECREFfed. * psycopg/connection_type.c: removed the cursors list from the connection object. It is not necessary anymore for the connection to know about the cursors and the reference counting will keep the connection alive (but possibly closed) until all cursors are garbage collected. 2004-11-20 Federico Di Gregorio * psycopg/cursor_type.c (_mogrify): ported %% fix from 1.1.15. 2004-11-20 Federico Di Gregorio * psycopg/cursor_type.c (psyco_curs_execute): added check to raise an exception if a cursor tries to .execute() while an async query is already in execution froma different cursor. 2004-11-20 Federico Di Gregorio * psycopg/connection_type.c (psyco_conn_cursor): renamed 'cursor' argument to 'cursor_factory'. 2004-11-19 Federico Di Gregorio * psycopg/cursor_type.c (_psyco_curs_buildrow_fill): now standard tuples are filled using PyTuple_SET_ITEM while extended types (created via row_factory) are filled using PySequence_SetItem. * psycopg/cursor_type.c: changed cursor attribute name from tuple_factory to row_factory. 2004-10-14 Federico Di Gregorio * psycopg/cursor_type.c (_psyco_curs_buildrow_fill): now we use PySequence_SetItem to avoid problems with containers created from cursor's .tuple_factory attribute. * lib/extras.py (DictCursor.execute): fixed stupid bug with cursor setting self.tuplefactory instead of self.tuple_factory. 2004-10-02 Federico Di Gregorio * Release 1.99.10. * psycopg/cursor_type.c (_psyco_curs_buildrow_*): unified normal and factory code into the _psyco_curs_buildrow_fill function; no more memory leaks here. * psycopg/config.h (round): added check for __FreeBSD__ (that should be defined when compiling with gcc, I hope.) * setup.py: removed a lot of code now in setup.cfg. 2004-09-24 Federico Di Gregorio * psycopg/cursor_type.c (cursor_dealloc): fixed small memory leak due to missing disposal of self->pgres. 2004-9-14 Federico Di Gregorio * examples/dialtone.py: Added adapt() example by Valentino Volonghi. 2004-09-14 Federico Di Gregorio * psycopg/microprotocols.c (microprotocols_adapt): lots of changes to the microprotocols layer (it is not micro anymore); implementing almost all the PEP 246. The adapter registry is now indexed by (type, protocol) and not by type alone. 2004-09-13 Federico Di Gregorio * psycopg/cursor_type.c (_mogrify): and qattr is gone. 2004-09-05 Federico Di Gregorio * Release 1.99.9 (or, the "twisting by the pool" release). * psycopg/pqpath.c (_pq_fetch_tuples): changed to "static void" instead of "static int", no ways for this function to fail. 2004-09-04 Federico Di Gregorio * psycopg/pqpath.c (_pq_fetch_tuples): ported rowcount fix from 1.1.15. * ZPsycopgDA/*: ZPsycopgDA back in action, using the new pooling code. 2004-08-29 Federico Di Gregorio * psycopg/typecast_basic.c (typecast_DECIMAL_cast): added DECIMAL typecaster; it even works :). * scripts/buildtypes.py (basic_types): added DECIMAL typecaster for the NUMERIC oid. * examples/threads.py: updated threads example to use pooling code. * lib/pool.py: added very simple and thread-safe connection pooling class. * psycopg/cursor_type.c (psyco_curs_fetchmany): fixed problem with .fetchall() and .fetchmany() returning None instead of [] on empty result sets. * Release 1.99.8. 2004-08-28 Federico Di Gregorio * psycopg/cursor_type.c (psyco_curs_execute): added processing of unicode queries. * examples/encoding.py: much better encoding example, also using the new UNICODE typecaster. * psycopg/typecast_basic.c (typecast_UNICODE_cast): added UNICODE typecaster. * lib/extensions.py: the encodings dictionary is not available by default but can be accessed from the psycopg.extensions module. * psycopg/adapter_qstring.h: remove encoding information from qstring adapter and moved it into psycopg module. 2004-08-26 Federico Di Gregorio * psycopg/cursor_type.c (_psyco_curs_prefetch): added check for asynchronous fetch by wrong cursor. * psycopg/pqpath.c (pq_fetch): fixed backend status message (bug reported by Daniele Varrazzo.) 2004-07-29 Federico Di Gregorio * psycopg/typecast_basic.c (typecast_BINARY_cast): reverted to using strings instead of buffers when converting postgresql binary objects (should *temporarily* fix corruption bug reported on win32.) 2004-07-21 Federico Di Gregorio * psycopg/cursor_type.c: removed __iter__ and next methods from object methods and moved them where they do belong (tp_iter and tp_iternext.) Bug reported by Daniele Varrazzo (again!) 2004-07-19 Federico Di Gregorio * psycopg/typecast_datetime.c (typecast_PYINTERVAL_cast): replaced round() with micro() when rounding seconds (fixes bugs reported by Daniele Varrazzo.) 2004-07-16 Federico Di Gregorio * psycopg/pqpath.c (pq_set_critical): allow for a custom message insted of the one from PQerrorMessage. (pq_resolve_critical): added argument to specify if connection is to be closed (used to not close it during COPY FROM/TO criticals.) * psycopg/cursor_type.c (psyco_curs_fileno, psyco_curs_isready): added extension methods related to async queries. 2004-07-15 Federico Di Gregorio * Release 1.99.7. * examples/tz.py: added example about time zones. * psycopg/typecast_datetime.c (typecast_PYDATETIME_cast): create FixedOffsetTimezone for postgresql "timestamp with time zone" types. * lib/tz.py: added (even more than) needed tzinfo classes. * psycopg/typecast.c (typecast_call): changed typecast call code to take the additional cursor parameter, needed for cursor-dependent type casting (tzinfo & friends.) * psycopg/cursor_type.c (_psyco_curs_buildrow_with_factory): added use of tuple factories to fetcXXX methods. * lib/extras.py: little extra goodies for psycopg. 2004-07-14 Federico Di Gregorio * Release 1.99.6. * psycopg/connection_type.c: added .dsn attribute to connection objects. * psycopg/cursor_type.c (psyco_curs_mogrify): added .mogrify() method. * psycopg/adapter_qstring.c: copy the connection encoding only if wrapped object is unicode and added table of encodings. 2004-07-13 Federico Di Gregorio * psycopg/cursor_type.c (_mogrify): moved Dprintf statement to avoid dereferencing empty pointer (from 1.1.x) (psyco_curs_execute): now we save the query in self->query instead of freeing the memory ASAP. (cursorObject_members): and we finally export the saved query through the cursor members interface. that's all folks. * lib/extensions.py: added extensions module to clearly separate psycopg own extensions from DBAPI-2.0 2004-07-10 Federico Di Gregorio * psycopg/typecast_datetime.c: ported interval fix from 1.1.x. 2004-05-16 Federico Di Gregorio * psycopg/typecast_datetime.c (typecast_*_cast): fixed Value error when seconds > 59 by setting minutes += 1 and seconds -= 60 (reported by Marcel Gsteiger.) 2004-04-24 Federico Di Gregorio * ported time interval patch by Ross Cohen from 1.1.12. 2004-04-19 Federico Di Gregorio * psycopg/typecast_datetime.c (typecast_PYDATE_cast): applied patch from Jason Erickson: min and max taken from datetime.Date type. 2004-04-18 Federico Di Gregorio * Applied changes from Jason Erickson to build on win32; see his (slightly edited) entry below. (Still builds on Linux :) * psycopg/*.c: removed inclusion of pthread.h from all files except psycopg/config.h to build on win32 without faking the file. 2004-04-15 Jason Erickson * setup.py: Various changes. The critical ones: - Make an empty pthread.h file so all the code doing an #include will find something. - Appended the winsock2 library and the PostgreSQL library to the library path. - Setup the include path. - Have the PSYCOPG_VERSION macro be included with quotes. * config.h: Added/Cleaned up Win32 includes, defines, stub functions. * typecast.h: Removed ';' after PyObject_HEAD in the typecastObject structure since Microsoft Visual Studio does not like it. 2004-04-15 Federico Di Gregorio * Release 1.99.5 (bug-fixing and reorganization) * setup.py et al.: moved psycopg to psycopg._psycopg to make easier to provide high level python-only utilities (like the promised pooling code). psycopg/__init__.py imports _psycopg and make all the default DBAPI-2.0 stuff available. 2004-04-14 Federico Di Gregorio * psycopg/psycopgmodule.c (initpsycopg): wrapped initialization of date/time adapters in #ifdefs to have psycopg compile without mx or builtin datetime. 2004-04-10 Federico Di Gregorio * Release 1.99.4. 2004-04-09 Federico Di Gregorio * psycopg/typecast_builtins.c: changed DATE to not include DATETIME types anymore. * psycopg/adapter_datetime.c (pydatetime_str): switched from strftime to isoformat to preserve fractional seconds. 2004-04-08 Federico Di Gregorio * psycopg/psycopgmodule.c (psyco_connect): ported sslmode parameter from 1.1 branch. * psycopg/adapter_datetime.*: added python built-in datetime adapters. also added the datetime typecasters (still using mx as default). * psycopg/typecast.h: removed aliases, they now live in the right typecast_xxx.c file. 2004-03-08 Federico Di Gregorio * Release 1.99.3 (alpha 4). * examples/lastrowid.py: and the .lastrowid example is in. * psycopg/cursor_type.c (_mogrify): added call to .prepare() method in both dict and sequence path. * psycopg/connection_int.c (conn_set_client_encoding): added encoding-change code. * psycopg/adapter_qstring.c (qstring_quote): added hard-coded support for utf8 and latin1 encodings. 2004-03-01 Federico Di Gregorio * psycopg/connection_int.c (conn_close): does not use libpq functions on NULL pgconn (this can happen when conn_close is called after a failed PQconnect.) 2004-02-29 Federico Di Gregorio * Release 1.99.2 (alpha 3). * psycopg/cursor_type.c: added .rownumber and .connection attributes. Also added .scroll(), .next() and .__iter__() methods (see DBAPI2-.0 extensions on PEP.) * psycopg/connection_type.c (psyco_conn_set_isolation_level): added connection method .set_isolation_level(). Also added all error objects to the connection (see DBAPI2-.0 extensions on PEP.) * psycopg/connection_int.c (conn_switch_isolation_level): added isolation level switching code. * setup.py: removed all references to PSYCOPG_NEWSTYLE: support for python < 2.2 has been dropped. * typecast_basic.c (typecast_BINARY_cast): now binary objects are returned as true buffers. * adapter_binary.*: added adapter for buffers and binary (bytea) objects. * Release 1.99.1 (alpha 2). * adapter_mxdatetime.*: added adapters for all mx.DateTime types. 2004-02-28 Federico Di Gregorio * cursor_type.c (_mogrify): complete rework of the mogrification code to use the microprotocols_adapt function. * typecast_basic.c (typecast_BOOLEAN_cast): we now return real Py_True and Py_False values. * microprotocols.h: added very simple microprotocols implementation to allow for python->postgresql types registry. 2004-01-05 Federico Di Gregorio * connection_int.c (conn_commit/conn_rollback): added code to commit/rollback and connection methods. 2004-01-04 Federico Di Gregorio * cursor_type.c (psyco_curs_fetchone): added fetchone method. 2004-01-03 Federico Di Gregorio * added (empty) INSTALL file. * cursor_type.c (cursor_dealloc): added qattr for custom object quoting using a callable attribute. (_mogrify): ported new, fixed mogrification code from 1.1.12. 2003-08-01 Federico Di Gregorio * cursor_type.c (_mogrify_sequence): added sequence mogrification, can be done better, on the dict model. 2003-07-28 Federico Di Gregorio * typeobj_qstring.c: added quoted strings (can use both own code, like psycopg 1.x or PQescapeString from lipq.) 2003-07-21 Federico Di Gregorio * connection_type.c (psyco_conn_close): added .close() method. wow. * cursor_*.c: added basic cursor interface (new-style.) 2003-07-20 Federico Di Gregorio * psycopg/*: beginning of new source layout. if you think this changelog is somewhat empty, you're right. look at doc/ChangeLog-1.x for psycopg 1.x changelog just before the branch.