url="http://pgfoundry.org/projects/pginstaller">
- http://pgfoundry.org/projects/pginstaller
+ http://pgfoundry.org/projects/pginstaller. This release
+ supports Windows NT 4 and all later releases. It does not
+ support earlier releases like Windows 95, 98, or ME because
+ these operating systems do not have the infrastructure to
+ support PostgreSQL.
Previous releases required the Unix emulation toolkit Cygwin for
- Win32 support. PostgreSQl has always supported clients on Win32.
+ Win32 support. PostgreSQL has always supported clients on Win32.
+
+
+
+ Improved Buffer Management, CHECKPOINT, VACUUM
+
+
+
+ This release has a more intelligent buffer replacement strategy,
+ which will make better use of available shared buffers and
+ improve performance. The performance impact of vacuum and
+ checkpoints is also improved.
+
+
+
+
+
+
+ Change Column Types
+
+
+
+ A column's data type can now be changed with ALTER TABLE.
+
+
+
+
+
+
+ New Perl Server-Side Language
+
+
+
+ A new version of the Perl server-side language now supports a
+ persistent, shared storage area, triggers, returning records and
+ arrays of records, and SPI calls.
+
+
+
+
+
+
+ COPY Handles Comma-Separated-Value Files
+
+
+
+ COPY can now read and write comma-separate-value (CSV) files. It
+ has the flexibility to interpret non-standard quoting and
+ separation characters too.
+
+
+
+
Support cross-data-type index usage (Tom)
+ Before this change some queries would not use an index if the data
+ types did not exactly match. This improvement makes index usage more
+ intuitive and consistent.
+ match exactly
+
New buffer replacement strategy that improves caching (Jan)
+ Prior releases use a least-recently-used (LRU) cache to keep
+ recently referenced pages in the cache. Unfortunately, the cache
+ did not consider the number of times a specific cache entry was
+ accessed. Large table scans could force out useful cache pages.
+ The new cache uses four separate cache areas to track most
+ recently used and most frequently used cache pages to dynamically
+ optimize their replacement based on the work load. This should
+ lead to much more efficient use of the shared buffer cache.
+ Administrators who have tested shared buffer sizes in the past
+ should retest with this new cache replacement policy.
+
Add subprocess to write dirty buffers periodically to reduce checkpoint writes (Jan)
+ In previous releases, the checkpoint process, which runs every few
+ minutes, would write all dirty buffers to the operating system
+ buffer cache then flush all operating system dirty buffers to
+ disk. This often resulted in a periodic spike in disk usage that
+ hurt performance. The new code uses a background writer to trickle
+ disk writes at a steady pace so checkpoints have far fewer dirty
+ pages to write to disk. This should improve performance and
+ minimize performance degradation during checkpoints.
+
- Subquery fixes (Tom)
+ Optimizer improvements and subquery fixes (Tom)
+
+ It is difficult to explain all the optimizer improvements that go
+ into a release like this. They involve complex adjustments to the
+ logic used to select indexes, join methods, and join order. They
+ are difficult to explain, but the result is that the optimizer
+ make quicker and better choices in how to execute queries,
+ resulting in improved performance. The close relationship between
+ our developers and users reporting problems allows us to make
+ rapid and complex optimizer improvements that would be very
+ difficult for lose-source companies to emulate.
Improve btree index performance for duplicate keys (Dmitry Tkach, Tom)
-
-
-
- Many optimizer improvements (Tom)
+ This improves the way indexes are scanned when many duplicate
+ values exist in the index.
Improved index usage with OR clauses (Tom)
+ This allows the optimizer to use indexes in statements with
+ many OR clauses that were not possible in the past. It can also
+ use multi-column indexes where the first column is specified and
+ the second column is part of an OR clause.
+
Improve matching of partial index clauses (Tom)
+ The server is now smarter about using partial indexes in queries
+ involving complex WHERE clauses.
+
Improve load speed for C functions (Tom)
+ This release now uses a hash to lookup information for externally
+ loaded C functions. This improves their speed so they perform as
+ quickly as native functions that are part of the server backend.
+
Improve performance of the GEQO optimizer (Tom)
+ The GEQO optimizer is used for joining many tables (default
+ twelve). This release speeds up the way queries are analyzed to
+ decrease time spent in optimization.
+
Add ability to prolong vacuum to reduce performance impact (Jan)
+ On busy systems, VACUUM performs many I/O request which can hurt
+ performance for other users. This release allows you to slow down
+ VACUUM so it uses fewer resources though this increases the
+ duration of VACUUM.
+
Add type-specific ANALYZE statistics capability (Mark Cave-Ayland)
+ This adjustment allows more flexibility in generating statistics
+ for non-standard data types.
+
Allow collection of ANALYZE statistics for expression indexes (Tom)
+ Expression indexes (also called functional indexes) allow users to
+ index not just columns but the result of expressions and function
+ calls. With this release, expression indexes can collect analyze
+ statistics used by the optimizer in choosing the best execution
+ plan.
+
Sort duplicate btree items by file offset during creation (Manfred Koizar)
+ To improve performance, this release sorts duplicate index entries
+ in base table order so duplicate row lookups happen in sequential
+ order. This ordering is not maintained during table modification.
+
New two-stage sampling method for ANALYZE (Manfred Koizar)
+ This gives better statistics for asymmetric data distributions.
+
Optimize prepared queries only when first executed so constants can be used
- for statistics (unnamed?) (Oliver Jowett)
+ for statistics (unnamed?) (Oliver Jowett)
+
+ Prepared statements optimize queries once and execute them many
+ times. While prepared queries run quickly, they benefit from
+ knowing all the values used in the query. This release allows
+ unnamed prepared queries to use the constants supplied by the
+ first query invocation as optimization hints.
Fix hash joins and aggregates of INET and CIDR data types (Tom)
+ Previous releases did not adjust to the fact that INET and CIDR
+ types have slightly different internal representations.
+
- Point-in-time recovery (Simon Riggs)
+ Add Point-in-time recovery (Simon Riggs)
- Add new read-only GUC variables to query server compile-time setting
- func_max_args, index_max_keys, namedatalen, blcksz,
- have_int64_timestamp (Joe)
+ Add new read-only GUC variables to query server compile-time
+ setting func_max_args, index_max_keys, namedatalen, blcksz,
+ have_int64_timestamp (Joe)
Make quoting of "sameuser", "samegroup", and "all" remove
- special meaning of these terms in pg_hba.conf (Andrew)
+ special meaning of these terms in pg_hba.conf (Andrew)
Rename GUC parameters SortMem and VacuumMem to work_mem and
- maintenance_work_mem (Old names still supported) (Tom)
+ maintenance_work_mem (Old names still supported) (Tom)
+
+ This change was made to clarify that index creation uses
+ maintenance_work_mem and work_mem is for memory used for query
+ execution.
- Add new GUC parameter to report useful information at the start of each
- log line (Andrew)
+ Add new GUC parameter to report useful session information at the
+ start of each log line (Andrew)
+
+ Information includes user name, database name, remote IP address,
+ and session start time.
Remove GUC log_pid, log_timestamp, log_source_port;
- functionality superseded by log_line_prefix (Andrew)
+ functionality superseded by log_line_prefix (Andrew)
Replace the virtual_host and tcpip_socket parameters with a unified
- listen_addresses parameter (Tom)
+ listen_addresses parameter (Tom)
Listen on localhost by default, which eliminates the need for the -i
- postmaster switch in many scenarios (Andrew Dunstan)
+ postmaster switch in many scenarios (Andrew Dunstan)
+
+ Listening on localhost (127.0.0.1) opens no new security holes but
+ allows configurations like Win32 and JDBC, which do not support
+ local sockets, to work.
Remove 'syslog' GUC variable, and add more logical 'log_destination'
- variable to control log output location (Magnus)
+ variable to control log output location (Magnus)
Change GUC log_statement to take values "all, mod, ddl, none" which
- controls the queries output (Bruce)
+ controls the queries output (Bruce)
+
+ This allows administrators to log only data definition changes or
+ date modification statements.
Allow configuration files to be placed outside the data directory using
- GUC variables (mlw)
+ GUC variables (mlw)
+
+ By default, configuration files sit in the top server directory.
+ With this addition, configuration files can be place outside the
+ data directory, easing administration.
Unsupported isolation levels are now accepted and promoted to the
- spec-compliant level supported (Peter)
+ spec-compliant level supported (Peter)
+
+ The SQL specification states that if a database doesn't support a
+ specific isolation level, it should use a more restrictive level.
+ This change adds that capability.
- Allow BEGIN WORK to specify transaction isolation level like START
- TRANSACTION (Bruce)
+ Allow BEGIN WORK to specify transaction isolation levels like START
+ TRANSACTION (Bruce)
- More flexible rule/view permission checking (Tom)
+ More flexible rule/view permission checking (?) (Tom)
Implement dollar quoting to simplify single-quote usage (Andrew)
+ In previous releases, because single quotes had to be used to
+ quote a function's contents, the use of single quotes inside the
+ function required use of two single quotes or other error-prone
+ mechanisms. With this release we add the ability to use "dollar
+ quoting" to quote a block of text that eliminates the awkwardness
+ of single quotes used inside the function. Dollar quoting can
+ actually be used anywhere quoted text is used.
+
Make CASE val WHEN compval1 THEN evaluate 'val' only once (Tom)
+ This prevents CASE from re-evaluating the test expression multiple
+ times. This has benefits when the expression is complex or is
+ volatile.
+
- Replace max_expr_depth parameter with max_stack_depth parameter
- (measured in kilobytes of stack size) (This gives us a fairly
- bulletproof defense against crashing due to runaway recursive functions
- (Tom)
+ Replace max_expr_depth parameter with max_stack_depth parameter,
+ measured in kilobytes of stack size (Tom)
+
+ This gives us a fairly bulletproof defense against crashing due to
+ runaway recursive functions. Instead of measure the number of stack
+ calls, it measures the size of the stack.
-
+
Allow LIKE/ILIKE to appear in more places in a query (?) (Fabien Coelho)
When matching GROUP BY names, prefer local FROM columns first, then SELECT
- aliases, and then outer FROM columns (Tom)
+ aliases, and then outer FROM columns (Tom)
+
+ This change was made because it is considered more consistent than
+ the previous behavior.
Change EXECUTE to return a completion tag matching the executed statement
- (Kris Jurka)
+ (Kris Jurka)
+
+ Previous releases return an EXECUTE tag for any EXECUTE call. In
+ this release, the tag returned will reflect the command executed.
Disallow NATURAL CROSS JOIN (Tom)
+ Such a clause makes no logical sense, but was not disabled in the
+ past.
+
Allow arbitrary row expressions (Tom)
+ This allows columns to contain arbitrary composite types like rows
+ from other tables. It also allows functions to more easily take
+ rows as arguments and return row values.
+
Add COMMENT ON casts, conversions, languages, operator classes, and
- large objects (Christopher)
+ large objects (Christopher)
Add new GUC default_with_oids to control the oid default during table
- creation (Neil)
+ creation (Neil)
+
+ This allows administrators to default all CREATE TABLE commands to
+ create tables without oid columns.
Allow ALTER TABLE DROP COLUMN to drop an OID column
- (ALTER TABLE SET WITHOUT OIDS still works) (Tom)
+ (ALTER TABLE SET WITHOUT OIDS still works) (Tom)
Allow ALTER ... ADD COLUMN with defaults and NOT NULL constraints works per SQL
- spec (Rod)
+ spec (Rod)
+
+ This release will supply the appropriate defaults for columns
+ added with defaults.
Allow multiple ALTER actions in a single ALTER TABLE command (Rod)
+ This is particularly useful for ALTER commands that rewrite the
+ table. By grouping ALTER commands together, the table can be
+ rewritten only once.
+
Allow ALTER DATABASE ... OWNER (Euler Taveira de Oliveira)
+ Previously this required modifying the system tables.
+
Allow temporary object creation to be limited to SECURITY DEFINER
- functions (Sean Chittenden)
+ functions (Sean Chittenden)
Add ALTER TABLE ... SET WITHOUT CLUSTER (Christopher)
+ Prior to this release, there was no way to clear an auto-cluster
+ specification except to modify the system tables.
+
Constraint/Index/SERIAL names are now table_column_type with numbers
- appended to guarantee uniqueness within the schema (Spec compliance) (Tom)
+ appended to guarantee uniqueness within the schema (Tom)
+
+ The SQL specification states that such names should be unique
+ within a schema.
Allow ALTER TABLE to add SERIAL columns (Tom)
+ This is related to the new capability of adding default for new
+ columns.
+
Add pg_get_serial_sequence() to return the serial columns
- sequence name(Christopher Kings-Lynne)
+ sequence name(Christopher Kings-Lynne)
+
+ This allows automated scripts to reliabily find the serial
+ sequence name.
Allow changing the owners of aggregates, conversions, functions,
- operators, operator classes, schemas, types, and tablespaces
- (Christopher)
+ operators, operator classes, schemas, types, and tablespaces
+ (Christopher)
Add ALSO keyword to CREATE RULE (Fabien Coelho)
+ This allows ALSO to be added to rule creation to contrast it with
+ INSTEAD rules.
+
Add NOWAIT option to LOCK command (Tatsuo)
+ This allows the LOCK command to fail if they would have to wait for
+ the requested lock.
+
Erase MD5 user passwords when a user is renamed (Bruce)
+ PostgreSQL uses the user name as salt when encrypting passwords
+ via MD5. When a user name is changed, their salt no longer matches
+ the stored MD5 password so a notice is generated and the password
+ is cleared. A new password must then be assigned.
+
New pg_ctl 'kill' option for Win32 (Andrew)
+ Win32 does not have a 'kill' command to send signals to backends
+ so this capability was added to pg_ctl.
+
Add --pwfile option to initdb so the passwords can be set by GUI tools
- (Magnus)
+ (Magnus)
Make netmask() and hostmask() functions return maximum-length
- masklen (Tom)
+ masklen (Tom)
Change factorial function to NUMERIC (Gavin)
+ The NUMERIC data type more accurately represents the return value
+ from factorials.
+
Make length() disregard trailing spaces in CHAR() (Gavin)
+ This change was made for SQL specification compliance. (?)
+
Warn of empty string being passes to oid/float4/float8 data types; 7.6
- will throw an error instead (Neil)
+ will throw an error instead (Neil)
Allow int2/int4/int8/float4/float8 input routines to have leading
- or trailing whitespace (Neil)
+ or trailing whitespace (Neil)
Fix to_char(year) for BC dates (previously it returned one less than
- the current year) (Bruce)
+ the current year) (Bruce)
- Fix date_part() to return the proper millennium and century (With the previous version,
- the centuries and millennium had a wrong
- number and started the wrong year. Moreover century number 0, which does
- not exist in reality, lasted 200 years. Also, millennium number 0 lasted
- 2000 years) Fabien Coelho)
+ Fix date_part() to return the proper millennium and century (With
+ the previous version, the centuries and millennium had a wrong
+ number and started the wrong year. Moreover century number 0,
+ which does not exist in reality, lasted 200 years. Also,
+ millennium number 0 lasted 2000 years) Fabien Coelho)
Add ceiling() as an alias for ceil(), and power() as an alias for pow()
- for standards compliance (Neil)
+ for standards compliance (Neil)
Change ln(), log(), power(), and sqrt() to emit the correct SQLSTATE
- error codes for certain error conditions, as specified by SQL2003
- (Neil)
+ error codes for certain error conditions, as specified by SQL2003
+ (Neil)
New inet_* functions to return network addresses for client
- and server (Sean Chittenden)
+ and server (Sean Chittenden)
- Add function to send cancel and terminate to other backends (Magnus
- Hagander)
+ Add function to send cancel and terminate to other backends (Magnus)
Allow interval plus datetime expressions (Tom)
+ The reverse ordering, datetime plus interval, was already supported.
+
Allow plpgsql parameter names to be referenced inside the function body (Tom)
+ This basically creates an auto-reference to the names of the
+ number parameters inside the function body.
+
Do minimal syntax checking of plpgsql functions at creation time (Tom)
+ This allows us to catch simple function errors sooner. (?)
+
New plperl server-side language (Command Prompt, Andrew Dunstan)
- o persistent, shared area
- o triggers
- o return records (hash references)
- o array of records
- o SPI
- Allow psql to display fancy prompts via readline (Reece Hart, Chet Ramey)
+ Allow psql to display fancy prompts, including color, via readline
+ (Reece Hart, Chet Ramey)
Add global psql config file, psqlrc.sample (Bruce)
+ This allows a central file where global psql startup commands can
+ be stored.
+
Use binary file mode in psql when reading files so control-z is not seen
- as end-of-file
+ as end-of-file
Have \dn+ show permissions and description for schemas (Dennis
- Bjorklund)
+ Bjorklund)
Have pg_dump output objects in alphabetical order if possible (Tom)
+ This should make it easier to identify changes between
+ dump files.
+
Have pg_dump use ALTER OWNER rather than SET SESSION AUTHORIZATION
- by default (Christopher)
+ by default (Christopher)
Allow PQoidValue(), PQcmdTuples(), and PQoidStatus() to work
- on EXECUTE commands (Neil)
+ on EXECUTE commands (Neil)
Use --with-docdir to choose installation location of documentation; also
- allow --infodir (Peter)
+ allow --infodir (Peter)
New "PostgreSQL" CVS tag (Marc)
+ This was done to make it easier for organizations with their own
+ PostgreSQL CVS repositories.
+
- Remove JDBC from source tree, now a separate project
+ Remove JDBC from source tree; now a separate project
- use Olson's public domain timezone library (Magnus)
+ Use Olson's public domain timezone library (Magnus)
With threading enabled, use thread flags on Unixware for
- backend executables too (Bruce)
+ backend executables too (Bruce)
+
+ Unixware can not mix threaded and non-threaded object files in the
+ same executable, so everything must be compiled as threaded.
New linked list data structure implementation (Neil)
+ This improved performance by allowing list append operations to be
+ more efficient.
+
Allow external interfaces to create their own GUC variables (Thomas
- Hallgren)
+ Hallgren)
Remove alternate database locations using initlocation (Tom)
- (fix dbsize and oidname)
+ (fix dbsize and oidname)
-
- New Czech FAQ (Pavel Stehule)
-
-
-
Make libpq and ecpg build as proper OS X shard libraries (Tom)
- Many ecpg fixes (Michael)
+ Many ecpg fixes, including SET DESCRIPTOR (Michael)