source: trunk/docs/changelog.txt @ 636

Last change on this file since 636 was 636, checked in by cito, 4 years ago

Clean up the docs

We had used .txt for the old docs and .rst for the new Sphinx docs,
which unfortunately got out of sync. I have merged the duplicates,
keeping the latest version of the text, and left them only as .txt
files for the time being until we give Sphinx another go.

The index file is not auto generated - the index.rst file is only
a reminder that we want to move everything to Sphinx.

  • Property svn:keywords set to Author Date Id Revision
File size: 14.0 KB
Line 
1ChangeLog
2=========
3
4Version 4.2
5-----------
6- Set a better default for the user option "escaping-funcs".
7- Greatly improve unit testing.
8- Force build to compile with no errors.
9- Fix decimal point handling
10- Add option to return money as string
11- Fix notification handler (Thanks Patrick TJ McPhee).
12
13Version 4.1.1 (2013-01-08)
14--------------------------
15- Add WhenNotified class and method.  Replaces need for third party pgnotify.
16- Sharpen test for inserting current_timestamp.
17- Add more quote tests.  False and 0 should evaluate to NULL.
18- More tests - Any number other than 0 is True.
19- Do not use positional parameters internally.
20  This restores backward compatibility with version 4.0.
21- Add methods for changing the decimal point.
22
23Version 4.1 (2013-01-01)
24------------------------
25- Dropped support for Python below 2.5 and PostgreSQL below 8.3.
26- Added support for Python up to 2.7 and PostgreSQL up to 9.2.
27- Particularly, support PQescapeLiteral() and PQescapeIdentifier().
28- The query method of the classic API now supports positional parameters.
29  This an effective way to pass arbitrary or unknown data without worrying
30  about SQL injection or syntax errors (contribution by Patrick TJ McPhee).
31- The classic API now supports a method namedresult() in addition to
32  getresult() and dictresult(), which returns the rows of the result
33  as named tuples if these are supported (Python 2.6 or higher).
34- The classic API has got the new methods begin(), commit(), rollback(),
35  savepoint() and release() for handling transactions.
36- Both classic and DBAPI 2 connections can now be used as context
37  managers for encapsulating transactions.
38- The execute() and executemany() methods now return the cursor object,
39  so you can now write statements like "for row in cursor.execute(...)"
40  (as suggested by Adam Frederick).
41- Binary objects are now automatically escaped and unescaped.
42- Bug in money quoting fixed.  Amounts of $0.00 handled correctly.
43- Proper handling of date and time objects as input.
44- Proper handling of floats with 'nan' or 'inf' values as input.
45- Fixed the set_decimal() function.
46- All DatabaseError instances now have a sqlstate attribute.
47- The getnotify() method can now also return payload strings (#15).
48- Better support for notice processing with the new methods
49  set_notice_receiver() and get_notice_receiver()
50  (as suggested by Michael Filonenko, see #37).
51- Open transactions are rolled back when pgdb connections are closed
52  (as suggested by Peter Harris, see #46).
53- Connections and cursors can now be used with the "with" statement
54  (as suggested by Peter Harris, see #46).
55- New method use_regtypes() that can be called to let getattnames()
56  return regular type names instead of the simplified classic types (#44).
57
58
59Version 4.0 (2009-01-01)
60------------------------
61- Dropped support for Python below 2.3 and PostgreSQL below 7.4.
62- Improved performance of fetchall() for large result sets
63  by speeding up the type casts (as suggested by Peter Schuller).
64- Exposed exceptions as attributes of the connection object.
65- Exposed connection as attribute of the cursor object.
66- Cursors now support the iteration protocol.
67- Added new method to get parameter settings.
68- Added customizable row_factory as suggested by Simon Pamies.
69- Separated between mandatory and additional type objects.
70- Added keyword args to insert, update and delete methods.
71- Added exception handling for direct copy.
72- Start transactions only when necessary, not after every commit().
73- Release the GIL while making a connection
74  (as suggested by Peter Schuller).
75- If available, use decimal.Decimal for numeric types.
76- Allow DB wrapper to be used with DB-API 2 connections
77  (as suggested by Chris Hilton).
78- Made private attributes of DB wrapper accessible.
79- Dropped dependence on mx.DateTime module.
80- Support for PQescapeStringConn() and PQescapeByteaConn();
81  these are now also used by the internal _quote() functions.
82- Added 'int8' to INTEGER types. New SMALLINT type.
83- Added a way to find the number of rows affected by a query()
84  with the classic pg module by returning it as a string.
85  For single inserts, query() still returns the oid as an integer.
86  The pgdb module already provides the "rowcount" cursor attribute
87  for the same purpose.
88- Improved getnotify() by calling PQconsumeInput() instead of
89  submitting an empty command.
90- Removed compatibility code for old OID munging style.
91- The insert() and update() methods now use the "returning" clause
92  if possible to get all changed values, and they also check in advance
93  whether a subsequent select is possible, so that ongoing transactions
94  won't break if there is no select privilege.
95- Added "protocol_version" and "server_version" attributes.
96- Revived the "user" attribute.
97- The pg module now works correctly with composite primary keys;
98  these are represented as frozensets.
99- Removed the undocumented and actually unnecessary "view" parameter
100  from the get() method.
101- get() raises a nicer ProgrammingError instead of a KeyError
102  if no primary key was found.
103- delete() now also works based on the primary key if no oid available
104  and returns whether the row existed or not.
105
106
107Version 3.8.1 (2006-06-05)
108--------------------------
109- Use string methods instead of deprecated string functions.
110- Only use SQL-standard way of escaping quotes.
111- Added the functions escape_string() and escape/unescape_bytea()
112  (as suggested by Charlie Dyson and Kavous Bojnourdi a long time ago).
113- Reverted code in clear() method that set date to current.
114- Added code for backwards compatibility in OID munging code.
115- Reorder attnames tests so that "interval" is checked for before "int."
116- If caller supplies key dictionary, make sure that all has a namespace.
117
118Version 3.8 (2006-02-17)
119------------------------
120- Installed new favicon.ico from Matthew Sporleder <mspo@mspo.com>
121- Replaced snprintf by PyOS_snprintf.
122- Removed NO_SNPRINTF switch which is not needed any longer
123- Clean up some variable names and namespace
124- Add get_relations() method to get any type of relation
125- Rewrite get_tables() to use get_relations()
126- Use new method in get_attnames method to get attributes of views as well
127- Add Binary type
128- Number of rows is now -1 after executing no-result statements
129- Fix some number handling
130- Non-simple types do not raise an error any more
131- Improvements to documentation framework
132- Take into account that nowadays not every table must have an oid column
133- Simplification and improvement of the inserttable() function
134- Fix up unit tests
135- The usual assortment of minor fixes and enhancements
136
137Version 3.7 (2005-09-07)
138------------------------
139Improvement of pgdb module:
140
141- Use Python standard `datetime` if `mxDateTime` is not available
142
143Major improvements and clean-up in classic pg module:
144
145- All members of the underlying connection directly available in `DB`
146- Fixes to quoting function
147- Add checks for valid database connection to methods
148- Improved namespace support, handle `search_path` correctly
149- Removed old dust and unnessesary imports, added docstrings
150- Internal sql statements as one-liners, smoothed out ugly code
151
152Version 3.6.2 (2005-02-23)
153--------------------------
154- Further fixes to namespace handling
155
156Version 3.6.1 (2005-01-11)
157--------------------------
158- Fixes to namespace handling
159
160Version 3.6 (2004-12-17)
161------------------------
162- Better DB-API 2.0 compliance
163- Exception hierarchy moved into C module and made available to both APIs
164- Fix error in update method that caused false exceptions
165- Moved to standard exception hierarchy in classic API
166- Added new method to get transaction state
167- Use proper Python constants where appropriate
168- Use Python versions of strtol, etc. Allows Win32 build.
169- Bug fixes and cleanups
170
171Version 3.5 (2004-08-29)
172------------------------
173Fixes and enhancements:
174
175- Add interval to list of data types
176- fix up method wrapping especially close()
177- retry pkeys once if table missing in case it was just added
178- wrap query method separately to handle debug better
179- use isinstance instead of type
180- fix free/PQfreemem issue - finally
181- miscellaneous cleanups and formatting
182
183Version 3.4 (2004-06-02)
184------------------------
185Some cleanups and fixes.
186This is the first version where PyGreSQL is moved back out of the
187PostgreSQL tree. A lot of the changes mentioned below were actually
188made while in the PostgreSQL tree since their last release.
189
190- Allow for larger integer returns
191- Return proper strings for true and false
192- Cleanup convenience method creation
193- Enhance debugging method
194- Add reopen method
195- Allow programs to preload field names for speedup
196- Move OID handling so that it returns long instead of int
197- Miscellaneous cleanups and formatting
198
199Version 3.3 (2001-12-03)
200------------------------
201A few cleanups.  Mostly there was some confusion about the latest version
202and so I am bumping the number to keep it straight.
203
204- Added NUMERICOID to list of returned types. This fixes a bug when
205  returning aggregates in the latest version of PostgreSQL.
206
207Version 3.2 (2001-06-20)
208------------------------
209Note that there are very few changes to PyGreSQL between 3.1 and 3.2.
210The main reason for the release is the move into the PostgreSQL
211development tree.  Even the WIN32 changes are pretty minor.
212
213- Add Win32 support (gerhard@bigfoot.de)
214- Fix some DB-API quoting problems (niall.smart@ebeon.com)
215- Moved development into PostgreSQL development tree.
216
217Version 3.1 (2000-11-06)
218------------------------
219- Fix some quoting functions.  In particular handle NULLs better.
220- Use a method to add primary key information rather than direct
221  manipulation of the class structures
222- Break decimal out in `_quote` (in pg.py) and treat it as float
223- Treat timestamp like date for quoting purposes
224- Remove a redundant SELECT from the `get` method speeding it,
225  and `insert` (since it calls `get`) up a little.
226- Add test for BOOL type in typecast method to `pgdbTypeCache` class
227  (tv@beamnet.de)
228- Fix pgdb.py to send port as integer to lower level function
229  (dildog@l0pht.com)
230- Change pg.py to speed up some operations
231- Allow updates on tables with no primary keys
232
233Version 3.0 (2000-05-30)
234------------------------
235- Remove strlen() call from pglarge_write() and get size from object
236  (Richard@Bouska.cz)
237- Add a little more error checking to the quote function in the wrapper
238- Add extra checking in `_quote` function
239- Wrap query in pg.py for debugging
240- Add DB-API 2.0 support to pgmodule.c (andre@via.ecp.fr)
241- Add DB-API 2.0 wrapper pgdb.py (andre@via.ecp.fr)
242- Correct keyword clash (temp) in tutorial
243- Clean up layout of tutorial
244- Return NULL values as None (rlawrence@lastfoot.com)
245  (WARNING: This will cause backwards compatibility issues)
246- Change None to NULL in insert and update
247- Change hash-bang lines to use /usr/bin/env
248- Clearing date should be blank (NULL) not TODAY
249- Quote backslashes in strings in `_quote` (brian@CSUA.Berkeley.EDU)
250- Expanded and clarified build instructions (tbryan@starship.python.net)
251- Make code thread safe (Jerome.Alet@unice.fr)
252- Add README.distutils (mwa@gate.net & jeremy@cnri.reston.va.us)
253- Many fixes and increased DB-API compliance by chifungfan@yahoo.com,
254  tony@printra.net, jeremy@alum.mit.edu and others to get the final
255  version ready to release.
256
257Version 2.4 (1999-06-15)
258------------------------
259- Insert returns None if the user doesn't have select permissions
260  on the table.  It can (and does) happen that one has insert but
261  not select permissions on a table.
262- Added ntuples() method to query object (brit@druid.net)
263- Corrected a bug related to getresult() and the money type
264- Corrected a bug related to negative money amounts
265- Allow update based on primary key if munged oid not available and
266  table has a primary key
267- Add many __doc__ strings (andre@via.ecp.fr)
268- Get method works with views if key specified
269
270Version 2.3 (1999-04-17)
271------------------------
272- connect.host returns "localhost" when connected to Unix socket
273  (torppa@tuhnu.cutery.fi)
274- Use `PyArg_ParseTupleAndKeywords` in connect() (torppa@tuhnu.cutery.fi)
275- fixes and cleanups (torppa@tuhnu.cutery.fi)
276- Fixed memory leak in dictresult() (terekhov@emc.com)
277- Deprecated pgext.py - functionality now in pg.py
278- More cleanups to the tutorial
279- Added fileno() method - terekhov@emc.com (Mikhail Terekhov)
280- added money type to quoting function
281- Compiles cleanly with more warnings turned on
282- Returns PostgreSQL error message on error
283- Init accepts keywords (Jarkko Torppa)
284- Convenience functions can be overridden (Jarkko Torppa)
285- added close() method
286
287Version 2.2 (1998-12-21)
288------------------------
289- Added user and password support thanks to Ng Pheng Siong (ngps@post1.com)
290- Insert queries return the inserted oid
291- Add new `pg` wrapper (C module renamed to _pg)
292- Wrapped database connection in a class
293- Cleaned up some of the tutorial.  (More work needed.)
294- Added `version` and `__version__`.
295  Thanks to thilo@eevolute.com for the suggestion.
296
297Version 2.1 (1998-03-07)
298------------------------
299- return fields as proper Python objects for field type
300- Cleaned up pgext.py
301- Added dictresult method
302
303Version 2.0  (1997-12-23)
304-------------------------
305- Updated code for PostgreSQL 6.2.1 and Python 1.5
306- Reformatted code and converted to use full ANSI style prototypes
307- Changed name to PyGreSQL (from PyGres95)
308- Changed order of arguments to connect function
309- Created new type `pgqueryobject` and moved certain methods to it
310- Added a print function for pgqueryobject
311- Various code changes - mostly stylistic
312
313Version 1.0b (1995-11-04)
314-------------------------
315- Keyword support for connect function moved from library file to C code
316  and taken away from library
317- Rewrote documentation
318- Bug fix in connect function
319- Enhancements in large objects interface methods
320
321Version 1.0a (1995-10-30)
322-------------------------
323A limited release.
324
325- Module adapted to standard Python syntax
326- Keyword support for connect function in library file
327- Rewrote default parameters interface (internal use of strings)
328- Fixed minor bugs in module interface
329- Redefinition of error messages
330
331Version 0.9b (1995-10-10)
332-------------------------
333The first public release.
334
335- Large objects implementation
336- Many bug fixes, enhancements, ...
337
338Version 0.1a (1995-10-07)
339-------------------------
340- Basic libpq functions (SQL access)
Note: See TracBrowser for help on using the repository browser.