diff --git a/django/db/backends/postgresql_psycopg2/operations.py b/django/db/backends/postgresql_psycopg2/operations.py index a210f87ccd..b17a0c17bb 100644 --- a/django/db/backends/postgresql_psycopg2/operations.py +++ b/django/db/backends/postgresql_psycopg2/operations.py @@ -9,7 +9,7 @@ class DatabaseOperations(BaseDatabaseOperations): super(DatabaseOperations, self).__init__(connection) def date_extract_sql(self, lookup_type, field_name): - # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT + # http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT if lookup_type == 'week_day': # For consistency across backends, we return Sunday=1, Saturday=7. return "EXTRACT('dow' FROM %s) + 1" % field_name @@ -34,7 +34,7 @@ class DatabaseOperations(BaseDatabaseOperations): return '(%s)' % conn.join([sql, 'interval \'%s\'' % mods]) def date_trunc_sql(self, lookup_type, field_name): - # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC + # http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC return "DATE_TRUNC('%s', %s)" % (lookup_type, field_name) def datetime_extract_sql(self, lookup_type, field_name, tzname): @@ -43,7 +43,7 @@ class DatabaseOperations(BaseDatabaseOperations): params = [tzname] else: params = [] - # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT + # http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT if lookup_type == 'week_day': # For consistency across backends, we return Sunday=1, Saturday=7. sql = "EXTRACT('dow' FROM %s) + 1" % field_name @@ -57,7 +57,7 @@ class DatabaseOperations(BaseDatabaseOperations): params = [tzname] else: params = [] - # http://www.postgresql.org/docs/8.0/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC + # http://www.postgresql.org/docs/current/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC sql = "DATE_TRUNC('%s', %s)" % (lookup_type, field_name) return sql, params @@ -178,17 +178,6 @@ class DatabaseOperations(BaseDatabaseOperations): def prep_for_iexact_query(self, x): return x - def check_aggregate_support(self, aggregate): - """Check that the backend fully supports the provided aggregate. - - The implementation of population statistics (STDDEV_POP and VAR_POP) - under Postgres 8.2 - 8.2.4 is known to be faulty. Raise - NotImplementedError if this is the database in use. - """ - if aggregate.sql_function in ('STDDEV_POP', 'VAR_POP'): - if 80200 <= self.connection.pg_version <= 80204: - raise NotImplementedError('PostgreSQL 8.2 to 8.2.4 is known to have a faulty implementation of %s. Please upgrade your version of PostgreSQL.' % aggregate.sql_function) - def max_name_length(self): """ Returns the maximum length of an identifier. diff --git a/docs/howto/custom-model-fields.txt b/docs/howto/custom-model-fields.txt index 7b5fe6349e..84b3881fad 100644 --- a/docs/howto/custom-model-fields.txt +++ b/docs/howto/custom-model-fields.txt @@ -19,7 +19,7 @@ only the common types, such as ``VARCHAR`` and ``INTEGER``. For more obscure column types, such as geographic polygons or even user-created types such as `PostgreSQL custom types`_, you can define your own Django ``Field`` subclasses. -.. _PostgreSQL custom types: http://www.postgresql.org/docs/8.2/interactive/sql-createtype.html +.. _PostgreSQL custom types: http://www.postgresql.org/docs/current/interactive/sql-createtype.html Alternatively, you may have a complex Python object that can somehow be serialized to fit into a standard database column type. This is another case diff --git a/docs/ref/contrib/gis/install/create_template_postgis-debian.sh b/docs/ref/contrib/gis/install/create_template_postgis-debian.sh index 3e621837fa..c59834c87e 100755 --- a/docs/ref/contrib/gis/install/create_template_postgis-debian.sh +++ b/docs/ref/contrib/gis/install/create_template_postgis-debian.sh @@ -3,13 +3,6 @@ GEOGRAPHY=0 POSTGIS_SQL=postgis.sql -# For Ubuntu 8.x and 9.x releases. -if [ -d "/usr/share/postgresql-8.3-postgis" ] -then - POSTGIS_SQL_PATH=/usr/share/postgresql-8.3-postgis - POSTGIS_SQL=lwpostgis.sql -fi - # For Ubuntu 10.04 if [ -d "/usr/share/postgresql/8.4/contrib" ] then diff --git a/docs/ref/contrib/gis/install/index.txt b/docs/ref/contrib/gis/install/index.txt index 3e1cda0a47..62369d8253 100644 --- a/docs/ref/contrib/gis/install/index.txt +++ b/docs/ref/contrib/gis/install/index.txt @@ -61,7 +61,7 @@ supported versions, and any notes for each of the supported database backends: ================== ============================== ================== ========================================= Database Library Requirements Supported Versions Notes ================== ============================== ================== ========================================= -PostgreSQL GEOS, PROJ.4, PostGIS 8.2+ Requires PostGIS. +PostgreSQL GEOS, PROJ.4, PostGIS 8.4+ Requires PostGIS. MySQL GEOS 5.x Not OGC-compliant; :ref:`limited functionality `. Oracle GEOS 10.2, 11 XE not supported; not tested with 9. SQLite GEOS, GDAL, PROJ.4, SpatiaLite 3.6.+ Requires SpatiaLite 2.3+, pysqlite2 2.5+ diff --git a/docs/ref/databases.txt b/docs/ref/databases.txt index 78c1bb3dda..6d4e1663bf 100644 --- a/docs/ref/databases.txt +++ b/docs/ref/databases.txt @@ -77,20 +77,7 @@ negating the effect of persistent connections. PostgreSQL notes ================ -Django supports PostgreSQL 8.2 and higher. - -PostgreSQL 8.2 to 8.2.4 ------------------------ - -The implementation of the population statistics aggregates ``STDDEV_POP`` and -``VAR_POP`` that shipped with PostgreSQL 8.2 to 8.2.4 are `known to be -faulty`_. Users of these releases of PostgreSQL are advised to upgrade to -`Release 8.2.5`_ or later. Django will raise a ``NotImplementedError`` if you -attempt to use the ``StdDev(sample=False)`` or ``Variance(sample=False)`` -aggregate with a database backend that falls within the affected release range. - -.. _known to be faulty: http://archives.postgresql.org/pgsql-bugs/2007-07/msg00046.php -.. _Release 8.2.5: http://www.postgresql.org/docs/devel/static/release-8-2-5.html +Django supports PostgreSQL 8.4 and higher. PostgreSQL connection settings ------------------------------- @@ -165,7 +152,7 @@ such as ``REPEATABLE READ`` or ``SERIALIZABLE``, set it in the handle exceptions raised on serialization failures. This option is designed for advanced uses. -.. _postgresql-isolation-levels: http://www.postgresql.org/docs/devel/static/transaction-iso.html +.. _postgresql-isolation-levels: http://www.postgresql.org/docs/current/static/transaction-iso.html Indexes for ``varchar`` and ``text`` columns -------------------------------------------- @@ -179,7 +166,7 @@ for the column. The extra index is necessary to correctly perform lookups that use the ``LIKE`` operator in their SQL, as is done with the ``contains`` and ``startswith`` lookup types. -.. _PostgreSQL operator class: http://www.postgresql.org/docs/8.4/static/indexes-opclass.html +.. _PostgreSQL operator class: http://www.postgresql.org/docs/current/static/indexes-opclass.html .. _mysql-notes: diff --git a/docs/ref/models/querysets.txt b/docs/ref/models/querysets.txt index 224c2427b0..9c1337d59f 100644 --- a/docs/ref/models/querysets.txt +++ b/docs/ref/models/querysets.txt @@ -628,7 +628,7 @@ object. If it's ``None``, Django uses the :ref:`current time zone - MySQL: load the time zone tables with `mysql_tzinfo_to_sql`_. .. _pytz: http://pytz.sourceforge.net/ - .. _Time Zones: http://www.postgresql.org/docs/9.2/static/datatype-datetime.html#DATATYPE-TIMEZONES + .. _Time Zones: http://www.postgresql.org/docs/current/static/datatype-datetime.html#DATATYPE-TIMEZONES .. _Choosing a Time Zone File: http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm#i1006667 .. _mysql_tzinfo_to_sql: http://dev.mysql.com/doc/refman/5.5/en/mysql-tzinfo-to-sql.html diff --git a/docs/ref/settings.txt b/docs/ref/settings.txt index 2b80527d8b..b8041a8a9b 100644 --- a/docs/ref/settings.txt +++ b/docs/ref/settings.txt @@ -557,7 +557,7 @@ backend-specific. Supported for the PostgreSQL_ (``postgresql_psycopg2``) and MySQL_ (``mysql``) backends. -.. _PostgreSQL: http://www.postgresql.org/docs/8.2/static/multibyte.html +.. _PostgreSQL: http://www.postgresql.org/docs/current/static/multibyte.html .. _MySQL: http://dev.mysql.com/doc/refman/5.0/en/charset-database.html .. setting:: TEST_COLLATION diff --git a/docs/ref/unicode.txt b/docs/ref/unicode.txt index 92a446ff6b..bd5bdc96a9 100644 --- a/docs/ref/unicode.txt +++ b/docs/ref/unicode.txt @@ -20,14 +20,14 @@ able to store certain characters in the database, and information will be lost. * MySQL users, refer to the `MySQL manual`_ (section 9.1.3.2 for MySQL 5.1) for details on how to set or alter the database character set encoding. -* PostgreSQL users, refer to the `PostgreSQL manual`_ (section 21.2.2 in - PostgreSQL 8) for details on creating databases with the correct encoding. +* PostgreSQL users, refer to the `PostgreSQL manual`_ (section 22.3.2 in + PostgreSQL 9) for details on creating databases with the correct encoding. * SQLite users, there is nothing you need to do. SQLite always uses UTF-8 for internal encoding. .. _MySQL manual: http://dev.mysql.com/doc/refman/5.1/en/charset-database.html -.. _PostgreSQL manual: http://www.postgresql.org/docs/8.2/static/multibyte.html#AEN24104 +.. _PostgreSQL manual: http://www.postgresql.org/docs/current/static/multibyte.html All of Django's database backends automatically convert Unicode strings into the appropriate encoding for talking to the database. They also automatically diff --git a/docs/releases/1.6.txt b/docs/releases/1.6.txt index c52f6ee3d9..a0867ad930 100644 --- a/docs/releases/1.6.txt +++ b/docs/releases/1.6.txt @@ -352,6 +352,17 @@ in an external repository`__. __ https://disqus.com/ __ https://github.com/django/django-contrib-comments +Support for PostgreSQL versions older than 8.4 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The end of upstream support periods was reached in December 2011 for +PostgreSQL 8.2 and in February 2013 for 8.3. As a consequence, Django 1.6 sets +8.4 as the minimum PostgreSQL version it officially supports. + +You're strongly encouraged to use the most recent version of PostgreSQL +available, because of performance improvements and to take advantage of the +native streaming replication available in PostgreSQL 9.x. + Changes to :ttag:`cycle` and :ttag:`firstof` ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/docs/topics/db/sql.txt b/docs/topics/db/sql.txt index b2161fe65b..b52e6e795f 100644 --- a/docs/topics/db/sql.txt +++ b/docs/topics/db/sql.txt @@ -155,7 +155,7 @@ of people with their ages calculated by the database:: Jane is 42. ... -__ http://www.postgresql.org/docs/8.4/static/functions-datetime.html +__ http://www.postgresql.org/docs/current/static/functions-datetime.html Passing parameters into ``raw()`` ---------------------------------