File PyGreSQL.changes of Package PyGreSQL

-------------------------------------------------------------------
Fri May 10 07:37:27 UTC 2019 - Luigi Baldoni <aloisio@gmx.com>

- Update to version 5.0.6
  * This version officially supports the new Python 3.7.
  * Correct trove classifier for the PostgreSQL License.
  version 5.0.5
  * This version officially supports the new PostgreSQL 10.
  * The memory for the string with the number of rows affected
    by a classic pg module query() was already freed (bug report
    and fix by Peifeng Qiu).
  version 5.0.4
  * This version officially supports the new Python 3.6 and
    PostgreSQL 9.6.
  * query_formatted() can now be used without parameters.
  * The automatic renaming of columns that are invalid as field
    names of named tuples now works more accurately in Python
    2.6 and 3.0.
  * Fixed error checks for unlink() and export() methods of
    large objects (bug report by Justin Pryzby).
  * Fixed a compilation issue under OS X (bug report by Josh
    Johnston).
  version 5.0.3
  * It is now possible to use a custom array cast function by
    changing the type caster for the 'anyarray' type.  For
    instance, by calling set_typecast('anyarray', lambda v, c: v)
    you can have arrays returned as strings instead of lists.
    Note that in the pg module, you can also call
    set_array(False) in order to return arrays as strings.
  * The namedtuple classes used for the rows of query results
    are now cached and reused internally, since creating
    namedtuples classes in Python is a somewhat expensive
    operation.  By default the cache has a size of 1024 entries,
    but this can be changed with the set_row_factory_size()
    function. In certain cases this change can notably improve
    the performance.
  * The namedresult() method in the classic API now also tries
    to rename columns that would result in invalid field names.
  version 5.0.2
  * Fixed an infinite recursion problem in the DB wrapper class
    of the classic module that could occur when the underlying
    connection could not be properly opened (bug report by
    Justin Pryzby).
  version 5.0.1
  * The update() and delete() methods of the DB wrapper now use
    the OID instead of the primary key if both are provided.
    This restores backward compatibility with PyGreSQL 4.x and
    allows updating the primary key itself if an OID exists.
  * The connect() function of the DB API 2.0 module now accepts
    additional keyword parameters such as "application_name"
    which will be passed on to PostgreSQL.
  * PyGreSQL now adapts some queries to be able to access older
    PostgreSQL 8.x databases (as suggested on the mailing list
    by Andres Mejia). However, these old versions of PostgreSQL
    are not officially supported and tested any more.
  * Fixed an issue with Postgres types that have an OID >=
    0x80000000 (reported on the mailing list by Justin Pryzby).
  * Allow extra values that are not used in the command in the
    parameter dict passed to the query_formatted() method (as
    suggested by Justin Pryzby).
  * Improved handling of empty arrays in the classic module.
  * Unused classic connections were not properly garbage
    collected which could cause memory leaks (reported by Justin
    Pryzby).
  * Made C extension compatible with MSVC 9 again (this was
    needed to compile for Python 2 on Windows).
  version 5.0
  * This version now runs on both Python 2 and Python 3.
  * The supported versions are Python 2.6 to 2.7, and 3.3 to 3.5.
  * PostgreSQL is supported in all versions from 9.0 to 9.5.
  * Changes in the classic PyGreSQL module (pg):
    + The classic interface got two new methods get_as_list()
      and get_as_dict() returning a database table as a Python
      list or dict. The amount of data returned can be
      controlled with various parameters.
    + A method upsert() has been added to the DB wrapper class
      that utilizes the "upsert" feature that is new in
      PostgreSQL 9.5. The new method nicely complements the
      existing get/insert/update/delete() methods.
    + When using insert/update/upsert(), you can now pass
      PostgreSQL arrays as lists and PostgreSQL records as
      tuples in the classic module.
    + Conversely, when the query method returns a PostgreSQL
      array, it is passed to Python as a list. PostgreSQL records
      are converted to named tuples as well, but only if you use
      one of the get/insert/update/delete() methods.
      PyGreSQL uses a new fast built-in parser to achieve this. 
      The automatic conversion of arrays to lists can be
      disabled with set_array(False).
    + The pkey() method of the classic interface now returns
      tuples instead of frozenset. The order of the tuples is
      like in the primary key index.
    + Like the DB-API 2 module, the classic module now also
      returns bool values from the database as Python bool
      objects instead of strings.  You can still restore the old
      behavior by calling set_bool(False).
    + Like the DB-API 2 module, the classic module now also
      returns bytea data fetched from the database as byte
      strings, so you don't need to call unescape_bytea() any
      more. This has been made configurable though, and you can
      restore the old behavior by calling
      set_bytea_escaped(True).
    + A method set_jsondecode() has been added for changing or
      removing the function that automatically decodes JSON data
      coming from the database. By default, decoding JSON is now
      enabled and uses the decoder function in the standard
      library with its default parameters.
    + The table name that is affixed to the name of the OID
      column returned by the get() method of the classic
      interface will not automatically be fully qualified any
      more. This reduces overhead from the interface, but it
      means you must always write the table name in the same way
      when you call the methods using it and you are using
      tables with OIDs.
      Also, OIDs are now only used when access via primary key
      is not possible.
      Note that OIDs are considered deprecated anyway, and they
      are not created by default any more in PostgreSQL 8.1 and
      later.
    + The internal caching and automatic quoting of class names
      in the classic interface has been simplified and improved,
      it should now perform better and use less memory. Also,
      overhead for quoting values in the DB wrapper methods has
      been reduced and security has been improved by passing the
      values to libpq separately as parameters instead of inline.
    + It is now possible to use regular type names instead of
      the simpler type names that are used by default in
      PyGreSQL, without breaking any of the mechanisms for
      quoting and typecasting, which rely on the type
      information. This is achieved while maintaining simplicity
      and backward compatibility by augmenting the type name
      string objects with all the necessary information under
      the cover. To switch regular type names on or off (this is
      the default), call the DB wrapper method use_regtypes().
    + A new method query_formatted() has been added to the DB
      wrapper class that allows using the format specifications
      from Python. A flag "inline" can be set to specify whether
      parameters should be sent to the database separately or
      formatted into the SQL.
    + A new type helper Bytea() has been added.
  * Changes in the DB-API 2 module (pgdb):
    + The DB-API 2 module now always returns result rows as
      named tuples instead of simply lists as before. The
      documentation explains how you can restore the old
      behavior or use custom row objects instead.
    + The names of the various classes used by the classic and
      DB-API 2 modules have been renamed to become simpler, more
      intuitive and in line with the names used in the DB-API 2
      documentation. Since the API provides only objects of these
      types through constructor functions, this should not cause
      any incompatibilities.
    + The DB-API 2 module now supports the callproc() cursor
      method. Note that output parameters are currently not
      replaced in the return value.
    + The DB-API 2 module now supports copy operations between
      data streams on the client and database tables via the
      COPY command of PostgreSQL.
      The cursor method copy_from() can be used to copy data
      from the database to the client, and the cursor method
      copy_to() can be used to copy data from the client to the
      database.
    + The 7-tuples returned by the description attribute of a
      pgdb cursor are now named tuples, i.e. their elements can
      be also accessed by name.
      The column names and types can now also be requested
      through the colnames and coltypes attributes, which are
      not part of DB-API 2 though.
      The type_code provided by the description attribute is
      still equal to the PostgreSQL internal type name, but now
      carries some more information in additional attributes.
      The size, precision and scale information that is part of
      the description is now properly set for numeric types.
    + If you pass a Python list as one of the parameters to a
      DB-API 2 cursor, it is now automatically bound using an
      ARRAY constructor. If you pass a Python tuple, it is bound
      using a ROW constructor. This is useful for passing
      records as well as making use of the IN syntax.
    + Inversely, when a fetch method of a DB-API 2 cursor
      returns a PostgreSQL array, it is passed to Python as a
      list, and when it returns a PostgreSQL composite type, it
      is passed to Python as a named tuple. PyGreSQL uses a new
      fast built-in parser to achieve this. Anonymous composite
      types are also supported, but yield only an ordinary tuple
      containing text strings.
    + New type helpers Interval() and Uuid() have been added.
    + The connection has a new attribute "closed" that can be
      used to check whether the connection is closed or broken.
    + SQL commands are always handled as if they include
      parameters, i.e. literal percent signs must always be
      doubled. This consistent behavior is necessary for using
      pgdb with wrappers like SQLAlchemy.
    + PyGreSQL 5.0 will be supported as a database driver by
      SQLAlchemy 1.1.
  * Changes concerning both modules:
    + PyGreSQL now tries to raise more specific and appropriate
      subclasses of DatabaseError than just ProgrammingError.
      Particularly, when database constraints are violated, it
      raises an IntegrityError now.
    + The modules now provide get_typecast() and set_typecast()
      methods allowing to control the typecasting on the global
      level. The connection objects have got type caches with
      the same methods which give control over the typecasting
      on the level of the current connection. See the
      documentation on details about the type cache and the
      typecast mechanisms provided by PyGreSQL.
    + Dates, times, timestamps and time intervals are now
      returned as the corresponding Python objects from the
      datetime module of the standard library.  In earlier
      versions of PyGreSQL they had been returned as strings.
      You can restore the old behavior by deactivating the
      respective typecast functions, e.g.
      set_typecast('date', str).
    + PyGreSQL now support the "uuid" data type, converting such
      columns automatically to and from Python uuid.UUID objects.
    + PyGreSQL now supports the "hstore" data type, converting
      such columns automatically to and from Python
      dictionaries. If you want to insert Python objects as JSON
      data using DB-API 2, you should wrap them in the new
      HStore() type constructor as a hint to PyGreSQL.
    + PyGreSQL now supports the "json" and "jsonb" data types,
      converting such columns automatically to and from Python
      objects. If you want to insert Python objects as JSON data
      using DB-API 2, you should wrap them in the new Json()
      type constructor as a hint to PyGreSQL.
    + A new type helper Literal() for inserting parameters
      literally as SQL has been added.  This is useful for table
      names, for instance.
    + Fast parsers cast_array(), cast_record() and cast_hstore
      for the input and output syntax for PostgreSQL arrays,
      composite types and the hstore type have been added to the
      C extension module. The array parser also allows using
      multi-dimensional arrays with PyGreSQL.
    + The tty parameter and attribute of database connections
      has been removed since it is not supported any more since
      PostgreSQL 7.4.
  version 4.2.2
  * The get_relations() and get_tables() methods now also return
    system views and tables if you set the optional "system"
    parameter to True.
  * Fixed a regression when using temporary tables with DB
    wrapper methods (thanks to Patrick TJ McPhee for reporting).
  version 4.2.1
  * Fixed a small bug when setting the notice receiver.
  * Some more minor fixes and re-packaging with proper
    permissions.
  version 4.2
  * The supported Python versions are 2.4 to 2.7.
  * PostgreSQL is supported in all versions from 8.3 to 9.5.
  * Set a better default for the user option "escaping-funcs".
  * Force build to compile with no errors.
  * New methods get_parameters() and set_parameters() in the
    classic interface which can be used to get or set run-time
    parameters.
  * New method truncate() in the classic interface that can be
    used to quickly empty a table or a set of tables.
  * Fix decimal point handling.
  * Add option to return boolean values as bool objects.
  * Add option to return money values as string.
  * get_tables() does not list information schema tables any
    more.
  * Fix notification handler (Thanks Patrick TJ McPhee).
  * Fix a small issue with large objects.
  * Minor improvements of the NotificationHandler.
  * Converted documentation to Sphinx and added many missing
    parts.
  * The tutorial files have become a chapter in the
    documentation.
  * Greatly improved unit testing, tests run with Python 2.4 to
    2.7 again.

- Converted to singlespec syntax

- Spec cleanup

-------------------------------------------------------------------
Sat Dec 13 16:52:21 UTC 2014 - p.drouand@gmail.com

- Clean up specfile
- Use download Url as source
- Update to version 4.1.1
  + Add WhenNotified class and method.  Replaces need for third party
    pgnotify.
  + Sharpen test for inserting current_timestamp.
  + Add more quote tests.  False and 0 should evaluate to NULL.
  + More tests   + Any number other than 0 is True.
  + Do not use positional parameters internally.
    This restores backward compatibility with version 4.0.
  + Add methods for changing the decimal point.
- Changes from version 4.1
  + Dropped support for Python below 2.5 and PostgreSQL below 8.3.
  + Added support for Python up to 2.7 and PostgreSQL up to 9.2.
  + Particularly, support PQescapeLiteral() and PQescapeIdentifier().
  + The query method of the classic API now supports positional parameters.
    This an effective way to pass arbitrary or unknown data without worrying
    about SQL injection or syntax errors
  + The classic API now supports a method namedresult() in addition to
    getresult() and dictresult(), which returns the rows of the result
    as named tuples if these are supported (Python 2.6 or higher).
  + The classic API has got the new methods begin(), commit(), rollback(),
    savepoint() and release() for handling transactions.
  + Both classic and DBAPI 2 connections can now be used as context
    managers for encapsulating transactions.
  + The execute() and executemany() methods now return the cursor object,
    so you can now write statements like "for row in cursor.execute(...)"
  + Binary objects are now automatically escaped and unescaped.
  + Bug in money quoting fixed.  Amounts of $0.00 handled correctly.
  + Proper handling of date and time objects as input.
  + Proper handling of floats with 'nan' or 'inf' values as input.
  + Fixed the set_decimal() function.
  + All DatabaseError instances now have a sqlstate attribute.
  + The getnotify() method can now also return payload strings (#15).
  + Better support for notice processing with the new methods
    set_notice_receiver() and get_notice_receiver()
  + Open transactions are rolled back when pgdb connections are closed
  + Connections and cursors can now be used with the "with" statement
  + New method use_regtypes() that can be called to let getattnames()
  return regular type names instead of the simplified classic types (#44).
- Fix Provides/Obsoletes tags

-------------------------------------------------------------------
Sat Sep 17 10:15:35 UTC 2011 - jengelh@medozas.de

- Remove redundant tags/sections from specfile

-------------------------------------------------------------------
Fri Mar  4 10:23:19 UTC 2011 - nkrinner@novell.com

- New version: 4.0
- Dropped support for Python below 2.3 and PostgreSQL below 7.4.
- Improved performance of fetchall() for large result sets by
  speeding up the type casts (as suggested by Peter Schuller).
- Exposed exceptions as attributes of the connection object.
- Exposed connection as attribute of the cursor object.
- Cursors now support the iteration protocol.
- Added new method to get parameter settings.
- Added customizable row_factory as suggested by Simon Pamies.
- Separated between mandatory and additional type objects.
- Added keyword args to insert, update and delete methods.
- Added exception handling for direct copy.
- Start transactions only when necessary, not after every commit().
- Release the GIL while making a connection (as suggested by Peter
  Schuller).
- If available, use decimal.Decimal for numeric types.
- Allow DB wrapper to be used with DB-API 2 connections (as
  suggested by Chris Hilton).
- Made private attributes of DB wrapper accessible.
- Dropped dependence on mx.DateTime module.
- Support for PQescapeStringConn() and PQescapeByteaConn(); these
  are now also used by the internal _quote() functions.
- Added 'int8' to INTEGER types. New SMALLINT type.
- Added a way to find the number of rows affected by a query()
  with the classic pg module by returning it as a string. For single
  inserts, query() still returns the oid as an integer. The pgdb
  module already provides the "rowcount" cursor attribute for the
  same purpose.
- Improved getnotify() by calling PQconsumeInput() instead of
  submitting an empty command.
- Removed compatibility code for old OID munging style.
- The insert() and update() methods now use the "returning" clause
  if possible to get all changed values, and they also check in
  advance whether a subsequent select is possible, so that ongoing
  transactions won't break if there is no select privilege.
- Added "protocol_version" and "server_version" attributes.
- Revived the "user" attribute.
- The pg module now works correctly with composite primary keys;
  these are represented as frozensets.
- Removed the undocumented and actually unnecessary "view"
  parameter from the get() method.
- get() raises a nicer ProgrammingError instead of a KeyError if
  no primary key was found.
- delete() now also works based on the primary key if no oid
  available and returns whether the row existed or not.

-------------------------------------------------------------------
Tue Jul 25 17:20:11 CEST 2006 - max@suse.de

- New version: 3.8.1
- Use string methods instead of deprecated string functions.
- Only use SQL-standard way of escaping quotes.
- Added the functions escape_string() and escape/unescape_bytea().
- Reverted code in clear() method that set date to current.
- Added code for backwards compatibility in OID munging code.
- Reorder attnames tests so that "interval" is checked for before
  "int."
- If caller supplies key dictionary, make sure that all has a
  namespace.
- Installed new favicon.ico from Matthew Sporleder <mspo@mspo.com>
- Replaced snprintf by PyOS_snprintf.
- Removed NO_SNPRINTF switch which is not needed any longer
- Clean up some variable names and namespace
- Add get_relations() method to get any type of relation
- Rewrite get_tables() to use get_relations()
- Use new method in get_attnames method to get attributes of views
  as well
- Add Binary type
- Number of rows is now -1 after executing no-result statements
- Fix some number handling
- Non-simple types do not raise an error any more
- Improvements to documentation framework
- Take into account that nowadays not every table must have an oid
  column
- Simplification and improvement of the inserttable() function
- Fix up unit tests
- The usual assortment of minor fixes and enhancements 

-------------------------------------------------------------------
Sat Mar  4 18:45:07 CET 2006 - kukuk@suse.de

- updated to reflect python changes due to #149809

-------------------------------------------------------------------
Wed Jan 25 21:33:54 CET 2006 - mls@suse.de

- converted neededforbuild to BuildRequires

-------------------------------------------------------------------
Thu Jan  5 17:53:31 CET 2006 - max@suse.de

- New version: 3.7

-------------------------------------------------------------------
Mon Jul  4 14:24:00 CEST 2005 - tarnold@suse.de

- Neew vrsion: 3.6.2

-------------------------------------------------------------------
Thu Jan 27 19:53:18 CET 2005 - max@suse.de

- New version: 3.6.1

-------------------------------------------------------------------
Fri Mar 19 16:50:37 CET 2004 - max@suse.de

- Add a dependency to python (bug #36499).

-------------------------------------------------------------------
Fri Mar  5 16:29:42 CET 2004 - max@suse.de

- Package postgresql-python separated from the PostgreSQL source
  RPM and renamed to PyGreSQL to reflect the fact, that it is a
  separete project now.

- Version: 3.4
openSUSE Build Service is sponsored by