- This was accomplished by eliminating global locks and using a clock
- sweep algorithm to find free buffers. This increases scalability
- on multi-CPU systems.
+ This was accomplished by eliminating global locks and using a
+ clock sweep algorithm to find free buffers. This increases
+ scalability on multi-CPU systems.
- Automatically use indexes for MIN() and MAX() (Tom)
+ Automatically use indexes for MIN()> and
+ MAX()> (Tom)
- In previous releases, the only way to use an index for MIN/MAX
- was to rewrite the query as SELECT col FROM tab ORDER BY col
- LIMIT 1. Index usage now happens automatically.
+ In previous releases, the only way to use an index for
+ MIN()> or MAX()> was to rewrite the
+ query as SELECT col FROM tab ORDER BY col LIMIT 1>.
+ Index usage now happens automatically.
In previous releases, only a single index could be used to do
- lookups on a table. With this feature, if a query has WHERE
- tab.col1 = 4 and tab.col2 = 9, and there is no multicolumn index
- on col1 and col2, but there is an index on col1 and another on
- col2, it is possible to do lookups on the col1 index and the
- col2 index and combine them in memory to do heap lookups on rows
- matching both the col1 and col2 restrictions. This is very
- useful in environments that have a lot of unstructured queries
- where it is impossible to create indexes that match all possible
- access conditions.
+ lookups on a table. With this feature, if a query has
+ WHERE tab.col1 = 4 and tab.col2 = 9>, and there is no
+ multicolumn index on col1 and col2, but there is an index on
+ col1 and another on col2, it is possible to do lookups on the
+ col1 index and the col2 index and combine them in memory to do
+ heap lookups on rows matching both the col1 and col2
+ restrictions. This is very useful in environments that have a
+ lot of unstructured queries where it is impossible to create
+ indexes that match all possible access conditions.
their transactions (none failed), all transactions can be
committed. Even if a machine crashes after a prepare, the
prepared transaction can be committed after it is restarted. New
- syntax includes PREPARE TRANSACTION and COMMIT/ROLLBACK
- PREPARED. A new system view pg_prepared_xacts has also been
- added.
+ syntax includes PREPARE TRANSACTION> and
+ COMMIT/ROLLBACK PREPARED>. A new system view
+ pg_prepared_xacts has also been added.
- Switch to another member role using SET ROLE
+ Switch to another member role using SET ROLE>
So, once a user logs into a role, she inherits capabilities of
- the login role plus any inherited roles, and can use SET ROLE to
- switch to other member roles. This change also replaces
- pg_shadow and pg_group by with new role-capable catalogs
- pg_authid and pg_auth_members. The old tables are redefined as
- views on the new role tables.
+ the login role plus any inherited roles, and can use
+ SET ROLE> to switch to other member roles. This
+ change also replaces pg_shadow and pg_group by with new
+ role-capable catalogs pg_authid and pg_auth_members. The old
+ tables are redefined as views on the new role tables.
- Move /contrib/pgautovacuum into the main server (Alvaro Herrera)
+ Move /contrib/pgautovacuum> into the main server
+ (Alvaro Herrera)
- Moving pgautovacuum from /contrib allows it to be automatically
- started and stoped in sync with the database server, and allows
- for pgautovacuum to be configured from postgresql.conf.
+ Moving pgautovacuum from /contrib> allows it to be
+ automatically started and stoped in sync with the database
+ server, and allows for pgautovacuum to be configured from
+ postgresql.conf.
- Add shared row level locks using SELECT ... FOR SHARE (Alvaro)
+ Add shared row level locks using SELECT ... FOR SHARE>
+ (Alvaro)
- While PostgreSQL's MVCC locking allows SELECT to never be
- blocked by writers and therefore does not need shared row locks
- for typical operations, shared locks are useful for applications
- that require shared row locking, and to reduce the locking
- requirements to maintain referential integrity.
+ While
PostgreSQL's MVCC locking
+ allows SELECT> to never be blocked by writers and
+ therefore does not need shared row locks for typical operations,
+ shared locks are useful for applications that require shared row
+ locking, and to reduce the locking requirements to maintain
+ referential integrity.
Migration to version 8.1
- A dump/restore using
pg_dump is
- required for those wishing to migrate data from any previous
- release.
+ A dump/restore using
pg_dump is required
+ for those wishing to migrate data from any previous release.
The 8.0 release announced that the to_char()> function
- for intervals would be removed in 8.1. However, since no better API has been
- suggested, to_char(interval) has been enhanced in 8.1 and will remain in the
- server.
+ for intervals would be removed in 8.1. However, since no better API
+ has been suggested, to_char(interval) has been enhanced in 8.1 and
+ will remain in the server.
Change add_missing_from to 'false'
- Generate an error if a table used in a query without a FROM reference (Neil)
- No more SELECT pg_class.*;
+ Generate an error if a table used in a query without a
+ FROM> reference (Neil) This command, SELECT
+ pg_class.*>, now generates an error.
- Cause input of a zero-length strings ('') for float4/float8/oid to throw
- an error, rather than treat it as a zero (Neil)
+ Cause input of a zero-length strings ('') for float4/float8/oid
+ to throw an error, rather than treat it as a zero (Neil)
- This change is consistent with the current handling of zero-length
- strings for integers. The schedule for this change was announced in 8.0.
+ This change is consistent with the current handling of
+ zero-length strings for integers. The schedule for this change
+ was announced in 8.0.
- Change the default for default_with_oids to false (Neil)
+ Change default_with_oids> to default to false (Neil)
- With this option set to false, user-created tables no
- longer have an the usually-invisible OID column unless WITH OIDS
- is specified in CREATE TABLE. Though OIDs have existed in all previous
- releases of PostgreSQL, their use is limited because they are only four
- bytes long and the counter is unique across all installed databases.
- The preferred way of uniquely identifying rows is via sequences and
- SERIAL, which has been supported since PostgreSQL 6.4.
+ With this option set to false, user-created tables no longer have
+ an the usually-invisible OID column unless WITH OIDS>
+ is specified in CREATE TABLE>. Though OIDs have
+ existed in all previous releases of
+
PostgreSQL, their use is limited
+ because they are only four bytes long and the counter is unique
+ across all installed databases. The preferred way of uniquely
+ identifying rows is via sequences and SERIAL>, which
+ has been supported since
PostgreSQL
+ 6.4.
- Add E'' syntax so eventually ordinary strings can treat backslashes
- literally (Bruce)
+ Add E''> syntax so eventually ordinary strings can
+ treat backslashes literally (Bruce)
- Currently PostgreSQL processes a backslash in a string
- as preceeding a character that requires special processing, e.g.
- \n or \010. While this allows easy entry of special values, it is
+ Currently
PostgreSQL processes a
+ backslash in a string as preceeding a character that requires
+ special processing, e.g. \n> or \010>.
+ While this allows easy entry of special values, it is
non-standard and makes porting of application from other
- databases more difficult. For this reason, the PostgreSQL project
- is planning to remove the special meaning of backslashes in
- strings. For backward compatibility and for users who want
- special backslash procesing, a new string type will be created.
- This new string type is formed by having an E preceed
- the single quote that starts the string, e.g. E'hi\n'.
- While this release does not change the handling of backslashes in
- strings, it does add several new GUC variables to help users
- migrate applications for future releases:
+ databases more difficult. For this reason, the
+
PostgreSQL project is planning to
+ remove the special meaning of backslashes in strings. For
+ backward compatibility and for users who want special backslash
+ procesing, a new string type will be created. This new string
+ type is formed by having an E preceed the single quote that
+ starts the string, e.g. E'hi\n'>. While this release
+ does not change the handling of backslashes in strings, it does
+ add several new GUC variables to help users migrate applications
+ for future releases:
-
- escape_string_warning - warn about backslashes in ordinary
- (non-E) strings
-
-
+ escape_string_warning> - warn about backslashes in
+ ordinary (non-E) strings
+
+
-
- escape_string_syntax - does this release support the E'' syntax?
-
-
+
+ escape_string_syntax> - does this release support
+ the E'' syntax?
+
+
-
- standard_conforming_strings - does this release treat
- backslashes literally in normal strings?
-
-
+
+ standard_conforming_strings>/> - does this release
+ treat backslashes literally in normal strings?
+
+
- The last two values are read-only and should assist in the porting of
- applications. Applications can retrieve these values to know how
- backslashes are processed. In a later release,
- standard_conforming_strings will be true, meaning backslashes will be
- treated literally in non-E strings. To prepare for this change, use
- E'' strings in places that need special backslash processing, and turn
- on escape_string_warning to find additional strings that need to be
- converted to use E''.
+ The last two values are read-only and should assist in the
+ porting of applications. Applications can retrieve these values
+ to know how backslashes are processed. In a later release,
+ standard_conforming_strings will be true, meaning backslashes
+ will be treated literally in non-E strings. To prepare for this
+ change, use E'' strings in places that need special backslash
+ processing, and turn on escape_string_warning to find additional
+ strings that need to be converted to use E''>.
- Make REINDEX DATABASE reindex all indexes in the database (Tom)
+ Make REINDEX DATABASE> reindex all indexes in the
+ database (Tom)
- The old behavior of REINDEX database reindexed only system tables.
- This new behavior seems more intuitive. A new command REINDEX SYSTEM
- allows for reindexing just the system tables.
+ The old behavior of REINDEX> database reindexed only
+ system tables. This new behavior seems more intuitive. A new
+ command REINDEX SYSTEM> allows for reindexing just the
+ system tables.
- In psql, treat unquoted \{digit}+ sequences as octal (Bruce)
+ In psql, treat unquoted \{digit}+> sequences as octal
+ (Bruce)
- In previous releases, \{digit}+ sequences were treated as
- decimal, and only \0{digit}+ were treated as octal. This
- change was made for consistency.
+ In previous releases, \{digit}+> sequences were
+ treated as decimal, and only \0{digit}+> were treated
+ as octal. This change was made for consistency.
- Remove grammar productions for prefix and postfix % and ^ operators
+ Remove grammar productions for prefix and postfix %>
+ and ^> operators
(Tom)
- These have never been documented and complicated the use of the modulus
- operator (%) with negative numbers.
+ These have never been documented and complicated the use of the
+ modulus operator (%>) with negative numbers.
- Make "&<" and "&>" for polygons consistent with the box
- "over" operators (Tom)
+ Make &<> and &>> for polygons
+ consistent with the box "over" operators (Tom)
- Improve the optimizer, including auto-resizing of hash joins (Tom)
+ Improve the optimizer, including auto-resizing of hash joins
+ (Tom)
- Allow non-consecutive index columns to be used in a multi-column index
+ Allow non-consecutive index columns to be used in a multi-column
+ index
(Tom)
- For example, this allows an index on columns a,b,c to be used in a
- query with WHERE a = 4 and c = 10
+ For example, this allows an index on columns a,b,c to be used in
+ a query with WHERE a = 4 and c = 10>.
- Skip WAL logging for CREATE TABLE AS / SELECT INTO (Simon)
+ Skip WAL logging for CREATE TABLE AS> /
+ SELECT INTO> (Simon)
- Since a crash during CREATE TABLE would cause the table to be dropped
- during recovery, there is no reason to WAL log as the table is loaded.
+ Since a crash during CREATE TABLE> would cause the
+ table to be dropped during recovery, there is no reason to WAL
+ log as the table is loaded.
- Add GUC full_page_writes to control writing full pages to WAL (Bruce)
+ Add GUC full_page_writes> to control writing full
+ pages to WAL
+ (Bruce)
To prevent partial disk writes from corrupting the database,
- PostgreSQL writes a complete copy of each database disk page to WAL
- the first time it is modified after a checkpoint. This turns off that
- functionality for users with battery-backed disk caches where partial
- page writes cannot happen.
+
PostgreSQL writes a complete copy of
+ each database disk page to WAL the first time it is modified
+ after a checkpoint. This turns off that functionality for users
+ with battery-backed disk caches where partial page writes cannot
+ happen.
- Add constraint_exclusion to restrict child table lookups based on
- table constraints (Simon)
+ Add constraint_exclusion to restrict child table lookups based
+ on table constraints (Simon)
- This allows for a type of table partitioning. If child table placed
- in a different tablespaces using appropriate CHECK constraints, the
- optimizer will skip child table accesses if the constraint guarantees
- no matching rows exist in the child table.
+ This allows for a type of table partitioning. If child table
+ placed in a different tablespaces using appropriate
+ CHECK> constraints, the optimizer will skip child
+ table accesses if the constraint guarantees no matching rows
+ exist in the child table.
- Use O_DIRECT if available when using O_SYNC for wal_sync_method (ITAGAKI
- Takahiro)
+ Use O_DIRECT> if available when using
+ O_SYNC> for wal_sync_method (Itagaki Takahiro)
- O_DIRECT causes disk writes to bypass the kernel cache, and for WAL
- writes, this improves performance.
+ O_DIRECT> causes disk writes to bypass the kernel
+ cache, and for WAL writes, this improves performance.
- Improve COPY FROM performance (Alon Goldshuv)
+ Improve COPY FROM> performance (Alon Goldshuv)
- This was accomplished by reading COPY input in larger chunks, rather
- than character by character.
+ This was accomplished by reading COPY> input in
+ larger chunks, rather than character by character.
Prevent problems due to transaction ID (XID) wraparound (Tom)
- This was accomplished by warning the transaction counter is
- near the the earliest transaction id determined by the
- database whose last vacuum is the oldest. If the limit is
- reached, the server will no longer accept queries.
+ This was accomplished by warning the transaction counter is near
+ the the earliest transaction id determined by the database whose
+ last vacuum is the oldest. If the limit is reached, the server
+ will no longer accept queries.
- Fix problem of object ID (OID) wraparound conflicting
- with existing system objects (Tom)
+ Fix problem of object ID (OID) wraparound conflicting with
+ existing system objects (Tom)
- Add warning about the need to increase "max_fsm_relations" and
- "max_fsm_pages" during VACUUM (Ron Mayer)
+ Add warning about the need to increase
+ max_fsm_relations> and max_fsm_pages>
+ during VACUUM> (Ron Mayer)
- Add temp_buffers GUC variable to allow users to determine the size
- of the local buffer area for temporary table access (Tom)
+ Add temp_buffers> GUC variable to allow users to
+ determine the size of the local buffer area for temporary table
+ access (Tom)
- Add session start time and client IP address to pg_stat_activity (Magnus)
+ Add session start time and client IP address to
+ pg_stat_activity> (Magnus)
- Enhance pg_locks display (Tom)
+ Enhance pg_locks> display (Tom)
- Log queries for client-side PREPARE and EXECUTE (Simon)
+ Log queries for client-side PREPARE> and
+ EXECUTE> (Simon)
Allow Kerberos name and user name case sensitivity to be
- specified in postgresql.conf (Magnus)
+ specified in postgresql.conf> (Magnus)
- Add GUC krb_server_hostname so the server hostname can be specified as
- part of service principal (Todd Kover)
+ Add GUC krb_server_hostname> so the server hostname
+ can be specified as part of service principal (Todd Kover)
- If not set, any service principal matching an entry in the keytab
- can be used. This is new Kerberos matching behavior in this release.
+ If not set, any service principal matching an entry in the
+ keytab can be used. This is new Kerberos matching behavior in
+ this release.
- Add log_line_prefix options for millisecond timestamps (%m) and
- remote host (%h) (Ed L.)
+ Add log_line_prefix> options for millisecond
+ timestamps (%m>) and remote host (%h>) (Ed
+ L.)
Add WAL logging for GIST indexes (Teodor, Oleg)
- GIST indexes now work for point-in-time recovery and crash recovery
+ GIST indexes are now safe for crash and point-in-time recovery
- Remove old *.backup files when we do pg_stop_backup() (Bruce)
+ Remove old *.backup> files when we do
+ pg_stop_backup()> (Bruce)
- This prevents a large number of *.backup files from existing in
- /seemspg_xlog.
+ This prevents a large number of *.backup> files from
+ existing in /pg_xlog>.
Add per-user and per-database connection limits (Petr Jelinek)
- Using ALTER USER and ALTER DATABASE, limits can not be enforced
- on the maximum number of users who can connect as as a specific
- uesr or to a specific database. Setting the limit to zero
- disables user or database connections.
+ Using ALTER USER> and ALTER DATABASE>,
+ limits can not be enforced on the maximum number of users who
+ can connect as as a specific uesr or to a specific database.
+ Setting the limit to zero disables user or database connections.
- Fix HAVING without aggregate functions and no GROUP BY to behave
- as if the main query returns a single group (Tom)
+ Fix HAVING> without aggregate functions and no
+ GROUP BY> to behave as if the main query returns a
+ single group (Tom)
- Previously, such a case would treat the HAVING clause as WHERE
- clause.
+ Previously, such a case would treat the HAVING>
+ clause as WHERE> clause.
- Add USING clause to allow additional tables to be specified to DELETE
- (Euler Taveira de Oliveira)
+ Add USING> clause to allow additional tables to be
+ specified to DELETE> (Euler Taveira de Oliveira)
In prior releases, there was no clear method for specifying
- additional tables to be used for joins in a DELETE statement.
- UPDATE already has a FROM clause for this purpose.
+ additional tables to be used for joins in a DELETE>
+ statement. UPDATE> already has a FROM>
+ clause for this purpose.
- Add support for \x hex escapes in backend and ecpg strings (Bruce)
+ Add support for \x> hex escapes in backend and ecpg
+ strings (Bruce)
- This is just like the standar C \x escape syntax. Octal was already
- supported.
+ This is just like the standard C \x> escape syntax.
+ Octal escapes were already supported.
- Add BETWEEN SYMMETRIC query syntax (Pavel Stehule)
+ Add BETWEEN SYMMETRIC> query syntax (Pavel Stehule)
- This feature allows BETWEEN comparisons without requiring the
- first value to be less than the second. For example, 2 BETWEEN
- [ASYMMETRIC] 3 AND 1 returns false, while 2 BETWEEN SYMMETRIC 3
- AND 1 returns true. BETWEEN ASYMMETRIC was already supported.
+ This feature allows BETWEEN> comparisons without
+ requiring the first value to be less than the second. For
+ example, 2 BETWEEN [ASYMMETRIC] 3 AND 1> returns
+ false, while 2 BETWEEN SYMMETRIC 3 AND 1> returns
+ true. BETWEEN ASYMMETRIC> was already supported.
- Add NOWAIT option to SELECT ... FOR UPDATE/SHARE (Hans-Juergen Schoenig)
+ Add NOWAIT> option to SELECT ... FOR
+ UPDATE/SHARE> (Hans-Juergen Schoenig)
- While SET statement_timeout allows a query taking over a certain
- amount of time to be cancelled, the NO WAIT option allows a query to
- be canceled as soon as a SELECT ... FOR UPDATE/SHARE cannot
- immediately acquire a row lock.
+ While SET> statement_timeout allows a query taking
+ over a certain amount of time to be cancelled, the NO
+ WAIT> option allows a query to be canceled as soon as a
+ SELECT ... FOR UPDATE/SHARE> cannot immediately
+ acquire a row lock.
Track dependencies of shared objects (Alvaro)
- PostgreSQL allows global tables (users, databases, tablespaces) to
- reference information in multiple databases. This addition adds
- dependency information for global tables, so, for example, user
- ownership can be tracked across databases, so a user who owns
- something in any database can no longer be removed. Dependency
- tracking already existed for database-local objects.
+
PostgreSQL allows global tables
+ (users, databases, tablespaces) to reference information in
+ multiple databases. This addition adds dependency information
+ for global tables, so, for example, user ownership can be
+ tracked across databases, so a user who owns something in any
+ database can no longer be removed. Dependency tracking already
+ existed for database-local objects.
- Allow ALTER OWNER commands to be performed by the object owner as
- well as the superuser (Stephen Frost)
+ Allow ALTER OWNER> commands to be performed by the
+ object owner as well as the superuser (Stephen Frost)
- Prior releases only allowed super-user to change object owners, even
- if the current owner was executing the command and the new owner
- have permission to create objects of that type.
+ Prior releases only allowed super-user to change object owners,
+ even if the current owner was executing the command and the new
+ owner have permission to create objects of that type.
- Add ALTER object SET SCHEMA capability for some object types
- (tables, functions, types) (Bernd Helmle)
+ Add ALTER> object SET SCHEMA> capability
+ for some object types (tables, functions, types) (Bernd Helmle)
This allows objects to be moved to different schemas.
- Allow TRUNCATE to truncate multiple files in a single command (Alvaro)
+ Allow TRUNCATE> to truncate multiple files in a
+ single command (Alvaro)
- Because of referential integrity checks, it is impossible to truncate
- a table that is part of a referential integrity constraint. Using this
- new functionality, TRUNCATE can be used to truncate all tables
- involved in referential integrity if they are truncated in a
- single TRUNCATE command.
+ Because of referential integrity checks, it is impossible to
+ truncate a table that is part of a referential integrity
+ constraint. Using this new functionality, TRUNCATE>
+ can be used to truncate all tables involved in referential
+ integrity if they are truncated in a single TRUNCATE>
+ command.
- Properly process carriage returns and line feeds in COPY CSV mode
- (Andrew Dunstan)
+ Properly process carriage returns and line feeds in
+ COPY CSV> mode (Andrew Dunstan)
- In release 8.0, carriage returns and line feeds in CSV COPY TO were
- processed in an inconsistent manner. (This was documented on the TODO
- list.)
+ In release 8.0, carriage returns and line feeds in CSV
+ COPY TO> were processed in an inconsistent manner. (This was
+ documented on the TODO list.)
-
- Add COPY WITH CSV HEADER to allow a heading line as the first line in
- COPY (Andrew)
+ Add COPY WITH CSV HEADER> to allow a header line as
+ the first line in COPY> (Andrew)
- This allows handling of the common CSV usage of placing the column
- names on the first line of the data file. For COPY TO, the first line
- contains the column names, and for COPY FROM, the first line is
- ignored.
+ This allows handling of the common CSV> usage of
+ placing the column names on the first line of the data file. For
+ COPY TO>, the first line contains the column names,
+ and for COPY FROM>, the first line is ignored.
- On Win32, display better sub-second precision in EXPLAIN ANALYZE (Magnus)
+ On Win32, display better sub-second precision in
+ EXPLAIN ANALYZE> (Magnus)
- Add trigger duration display to EXPLAIN ANALYZE (Tom)
+ Add trigger duration display to EXPLAIN ANALYZE>
+ (Tom)
- Prior releases lumped trigger execution time into the total execution
- time.
+ Prior releases accumulated trigger execution time as part of the
+ total execution time.
- Add support for \x hex escapes in COPY (Sergey Ten)
+ Add support for \x> hex escapes in COPY>
+ (Sergey Ten)
Previous releases only supported octal escapes.
- Have SHOW ALL include variable descriptions (Matthias Schmidt)
+ Have SHOW ALL> include variable descriptions
+ (Matthias Schmidt)
- SHOW varname still only displays the variable's value and does not
- include the description.
+ SHOW> varname still only displays the variable's
+ value and does not include the description.
- Have initdb create new standard database called "postgres" and
- convert utilities to use "postgres" rather than "template1" for
+ Have initdb create new standard database called
+ postgres> and convert utilities to use
+ postgres> rather than template1> for
standard lookups (Dave)
In prior releases, template1 was used both as a default
connection for utilities like createuser, and as a template for
- new databases. This caused CREATE DATABASE to sometimes fail
- because a new database cannot be created if anyone else is in
- the template database. With this change, the default connection
- database is now 'postgres', meaning it is much less likely
- someone will be using template1 during CREATE DATABASE.
+ new databases. This caused CREATE DATABASE> to
+ sometimes fail because a new database cannot be created if
+ anyone else is in the template database. With this change, the
+ default connection database is now postgres>, meaning
+ it is much less likely someone will be using
+ template1> during CREATE DATABASE>.
- Create new reindexdb command-line utility by moving /contrib/reindexdb
- into the server (Euler Taveira de Oliveira)
+ Create new reindexdb command-line utility by moving
+ /contrib/reindexdb> into the server (Euler Taveira
+ de Oliveira)
- Add MAX() and MIN() aggregates for array types (Koju Iijima)
+ Add MAX()> and MIN()> aggregates for
+ array types (Koju Iijima)
How does this work?
- Fix to_date() and to_timestamp() to behave reasonably when
- CC and YY fields are both used (Karel Zak)
+ Fix to_date()> and to_timestamp()> to
+ behave reasonably when CC> and YY> fields
+ are both used (Karel Zak)
- If the format specification contains CC and a year specification is
- YYY or longer, ignore the CC. If the year specification is
- YY or shorter, interpret CC as the previous century. ?
+ If the format specification contains CC> and a year
+ specification is YYY> or longer, ignore the
+ CC>. If the year specification is YY> or
+ shorter, interpret CC> as the previous century. ?
- Add md5(bytea) (Abhijit Menon-Sen)
+ Add md5(bytea)> (Abhijit Menon-Sen)
- md5(text) already existed.
+ md5(text)> already existed.
- Fix CHAR() to properly pad out to the specified length when
- using a multiple-byte character set (Yoshiyuki Asaba)
+ Fix CHAR()> to properly pad spaces to the specified
+ length when using a multiple-byte character set (Yoshiyuki
+ Asaba)
- In prior releases, the padding of CHAR() was incorrect because it only
- padded to the specified number of bytes without considering how many
- characters were stored.
+ In prior releases, the padding of CHAR()> was incorrect
+ because it only padded to the specified number of bytes without
+ considering how many characters were stored.
- Add support for NUMERIC ^ NUMERIC based on power(numeric, numeric)
+ Add support for NUMERIC ^ NUMERIC> based on
+ power(numeric, numeric)>
- The function already existed, but there was no operator assigned to
- it.
+ The function already existed, but there was no operator assigned
+ to it.
- Fix NUMERIC modulus by properly truncating the quotient during
- computation (Bruce)
+ Fix NUMERIC> modulus by properly truncating the quotient
+ during computation (Bruce)
- In previous releases, modulus for large values sometimes returned
- negative results due to the rounding of the quotient.
+ In previous releases, modulus for large values sometimes
+ returned negative results due to the rounding of the quotient.
- Add a function lastval(), which returns the value returned by the
- last nextval() or setval() performed by the current session. (Dennis
- Björklund)
+ Add a function lastval()>(Dennis Björklund)
- lastval() is a simplified version of currval(). It automatically
- determines the proper sequence name based on the most recent
- nextval() call.
+ lastval()> is a simplified version of
+ currval()>. It automatically determines the proper
+ sequence name based on the most recent nextval()> or
+ setval()> call performed by the current session.
- Add to_timestamp(double precision)
+ Add to_timestamp(DOUBLE PRECISION)>
- Converts Unix seconds since 1970 to a timestamp with timezone.
+ Converts Unix seconds since 1970 to a TIMESTAMP WITH
+ TIMEZONE>.
- Add pg_postmaster_start_time() function (Euler Taveira de Oliveira,
- Matthias Schmidt)
+ Add pg_postmaster_start_time()> function (Euler
+ Taveira de Oliveira, Matthias Schmidt)
- Allow the full use of time zone names in "AT TIME ZONE", not just
- the short list previously available (Magnus)
-
- Previously, only a predefined list of time zone names were supported
- by AT TIME ZONE. Now any supported time zone name can be used, e.g.:
+ Allow the full use of time zone names in AT TIME
+ ZONE>, not just the short list previously available (Magnus)
+ Previously, only a predefined list of time zone names were
+ supported by AT TIME ZONE>. Now any supported time
+ zone name can be used, e.g.:
SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London';
-
- In the above query, the daylight savings time rules were in effect on
- that date are used.
+
+ In the above query, the time zone used is adjusted based on the
+ daylight savings time rules that were in effect on the supplied
+ date.
-
- Add Oracle-compatible GREATEST and LEAST functions (Pavel Stehule)
+ Add GREATEST()> and LEAST()> functions
+ (Pavel Stehule)
- These functions take a variable number of arguments and return the
- greatest or least value.
+ These functions take a variable number of arguments and return
+ the greatest or least value.
- Add pg_column_size() to return storage size of a column, including
- possible compression (Mark Kirkwood)
+ Add pg_column_size()> (Mark Kirkwood)
+
+ This returns storage size of a column, including any
+ compression used.
- Add regexp_replace() (Atsushi Ogawa)
+ Add regexp_replace()> (Atsushi Ogawa)
- This allows regular expression replacement, like sed. A four-argument
- version also allows for global (replace all) and case-insensitive
- modes.
+ This allows regular expression replacement, like sed. A
+ four-argument version also allows for global (replace all) and
+ case-insensitive modes.
Fix interval division and multiplication (Bruce)
- Previous versions sometimes returned unjustified results, like
- '4 months'::interval / 5 returning '1 mon -6 days'.
+ Previous versions sometimes returned unjustified results, like
+ '4 months'::interval / 5> returning '1 mon
+ -6 days'>.
- Add internal 'day' field to INTERVAL so a 1 day interval can be
- distinguished from a 24 hour interval (Michael Glaesemann)
+ Add an internal day field to INTERVAL> so a one day
+ interval can be distinguished from a 24 hour interval (Michael
+ Glaesemann)
- Days that contain a daylight savings time adjustment are not 24 hours,
- but typically 23 or 25 hours. This change allows days (not fixed
- 24-hour periods) to be added to dates who's result includes a daylight
- savings time adjustment period. Therefore, while in previous releases
- '1 day' and '24 hours' where interchangeable interval periods, in this
- release they are treated differently, e.g.
+ Days that contain a daylight savings time adjustment are not 24
+ hours, but typically 23 or 25 hours. This change allows days
+ (not fixed 24-hour periods) to be added to dates who's result
+ includes a daylight savings time adjustment period. Therefore,
+ while in previous releases 1 day> and 24
+ hours> where interchangeable interval periods, in this release
+ they are treated differently, e.g.
+ '2005-05-03 00:00:00 EST' + '1 day' = '2005-05-04 00:00:00-04'
+ '2005-05-03 00:00:00 EST' + '24 hours' = '2005-05-04 01:00:00-04'
+
- '2005-05-03 00:00:00 EST' + '1 day' = '2005-05-04 00:00:00-04'
+ Add justify_days()> and justify_hours()>
+ (Michael Glaesemann)
-
-
-
- '2005-05-03 00:00:00 EST' + '24 hours' = '2005-05-04 01:00:00-04'
+ These functions, respectively, adjust days to an appropriate
+ number of full months and days, and adjust hours to an
+ appropriate number of full days and hours.
- Move /contrib/dbsize into the backend, and rename some of the functions
- (Dave Page, Andreas Pflug)
+ Move /contrib/dbsize> into the backend, and rename
+ some of the functions (Dave Page, Andreas Pflug)
- The new functions are:
- pg_tablespace_size()
- pg_database_size()
- pg_relation_size()
- pg_complete_relation_size()
- pg_size_pretty()
+
+
+
+ pg_tablespace_size()>
+
+
+
+
+ pg_database_size()>
+
+
+
+
+ pg_relation_size()>
+
+
+
+
+ pg_complete_relation_size()>
+
+
+
+
+ pg_size_pretty()>
+
+
+
+
- complete_relation_size() includes indexes and TOAST tables.
+ complete_relation_size()> includes indexes and TOAST
+ tables.
- Add justify_days() and justify_hours (Michael Glaesemann)
+ Add functions for read-only file access to the cluster directory
+ (Dave Page, Andreas Pflug)
- These functions, respectively, adjust days to an appropriate number of
- full months and dayss, and adjust hours to an appropriate number
- of full days and hours.
-
-
+
+
+
+ pg_stat_file()>
+
+
-
- Add files to do read-only I/O on the cluster directory (Dave Page,
- Andreas Pflug)
-
- pg_stat_file()
- pg_read_file()
- pg_ls_dir()
+
+ pg_read_file()>
+
+
+
+
+ pg_ls_dir()>
+
+
+
+
-
+
- Add pg_reload_conf() to force reloading of the configuration files (Dave Page,
- Andreas Pflug)
+ Add pg_reload_conf()> to force reloading of the
+ configuration files (Dave Page, Andreas Pflug)
+
- Add pg_rotate_logfile() to force rotation of the server log file (Dave Page,
+ Add pg_rotate_logfile()> to force rotation of the
+ server log file (Dave Page,
- Change pg_stat_* views to show TOAST tables (Tom)
+ Change pg_stat_*> views to show TOAST tables (Tom)
- Rename some encodings to be more consistent and to follow international
- standards(Bruce)
+ Rename some encodings to be more consistent and to follow
+ international standards(Bruce)
- Encoding name changes were:
- UNICODE is now UTF8
- ALT is now WIN866
- WIN is now WIN1251
- TCVN is now WIN1258
+
+
+
+ UNICODE> is now UTF8>
+
+
+
+
+ ALT> is now WIN866>
+
+
+
+
+ WIN> is now WIN1251>
+
+
+
+
+ TCVN> is now WIN1258>
+
+
+
+
The original names still work.
- Add support for Win1252 encoding (Roland Volkmann)
+ Add support for WIN1252> encoding (Roland Volkmann)
- Add support for 3 and 4-byte UTF8 characters (John Hansen)
+ Add support for 3 and 4-byte UTF8> characters (John
+ Hansen)
- Previously only one and two-byte UTF8 characters were supported.
- This is particularly important for support for some Chinese character.
+ Previously only one and two-byte UTF8> characters
+ were supported. This is particularly important for support for
+ some Chinese character.
- Allow direct conversion between EUC_JP and SJIS to improve performance (Atsushi
+ Allow direct conversion between EUC_JP> and
+ SJIS> to improve performance (Atsushi
Ogawa)
- Fix ALTER LANGUAGE RENAME (Sergey Yatskevich)
+ Fix ALTER LANGUAGE RENAME> (Sergey Yatskevich)
Allow function characteristics, like strictness and volatility,
- to be modified via ALTER FUNCTION (Neil)
+ to be modified via ALTER FUNCTION> (Neil)
- Allow SQL, plperl, PL/PgSQL functions to use OUT and INOUT parameters (Tom)
+ Allow SQL, plperl, PL/PgSQL functions to use OUT> and
+ INOUT> parameters (Tom)
- OUT is an alternate way for a function to return values. Instead of
- using RETURNS, the function's parameters can be specified as OUT or
- INOUT, allowing multiple values to be returned by the function. While
- returning multiple values from a function was possible in previous
- releases, this greatly simplifies the process.
+ OUT> is an alternate way for a function to return
+ values. Instead of using RETURNS>, the function's
+ parameters can be specified as OUT> or
+ INOUT>, allowing multiple values to be returned by
+ the function. While returning multiple values from a function
+ was possible in previous releases, this greatly simplifies the
+ process.
Reduce memory usage of PL/PgSQL functions (Neil)
- Each function now has its own memory context that can be freed when
- the function exits.
+ Each function now has its own memory context that can be freed
+ when the function exits.
- Check function syntax as CREATE FUNCTION time, rather than at runtime
- (Neil)
+ Check function syntax as CREATE FUNCTION> time,
+ rather than at runtime (Neil)
- Previously, syntax errors were reported only when the function was
- executed.
+ Previously, syntax errors were reported only when the function
+ was executed.
- Allow OPEN to open non-SELECT queries like EXPLAIN and SHOW (Tom)
+ Allow OPEN> to open non-SELECT> queries
+ like EXPLAIN> and SHOW> (Tom)
- No longer require functions to issue a RETURN statement (Tom)
+ No longer require functions to issue a RETURN>
+ statement (Tom)
- This is a byproduct of the newly added OUT and INOUT functionality.
+ This is a byproduct of the newly added OUT> and
+ INOUT> functionality.
- Add support for an optional INTO clause to PL/PgSQL's EXECUTE command
- (Pavel Stehule)
+ Add support for an optional INTO> clause to
+ PL/PgSQL's EXECUTE> command (Pavel Stehule)
- Make CREATE TABLE AS set ROW_COUNT (Tom)
+ Make CREATE TABLE AS> set ROW_COUNT> (Tom)
- Define SQLSTATE and SQLERRM to return the SQLSTATE and
- error message of the current exception (Pavel Stehule)
+ Define SQLSTATE> and SQLERRM> to return
+ the SQLSTATE> and error message of the current
+ exception (Pavel Stehule)
These variables are only accessable inside exception blocks.
- Allow the parameters to the RAISE statement to be expressions
- (Pavel Stehule)
+ Allow the parameters to the RAISE> statement to be
+ expressions (Pavel Stehule)
- Add a loop CONTINUE statement (Pavel Stehule)
+ Add a loop CONTINUE> statement (Pavel Stehule)
- Allow large result sets to be returned efficiently (Abhijit Menon-Sen)
+ Allow large result sets to be returned efficiently (Abhijit
+ Menon-Sen)
- This allows functions to use return_next() to avoid building
- the entire result set in memory.
+ This allows functions to use return_next()> to avoid
+ building the entire result set in memory.
Allow one-row-at-a-time retrieval of query results (Abhijit)
- This allows functions to use spi_query() and spi_fetchrow() to
- avoid accumulating the entire result set in memory.
+ This allows functions to use spi_query()> and
+ spi_fetchrow()> to avoid accumulating the entire
+ result set in memory.
- Force PL/Perl to handle strings as UTF8 if the server encoding is UTF8
- (David Kamholz)
+ Force PL/Perl to handle strings as UTF8> if the
+ server encoding is UTF8> (David Kamholz)
Add a validator function for PL/Perl (Andrew)
- This allows syntax errors to be reported at definition time, rather
- than execution time.
+ This allows syntax errors to be reported at definition time,
+ rather than execution time.
- Allow PL/Perl to return a Perl array when the function returns an array
- type (Andrew)
+ Allow PL/Perl to return a Perl array when the function returns
+ an array type (Andrew)
- This basically maps PostgreSQL arrays to Perl arrays.
+ This basically maps
PostgreSQL arrays
+ to Perl arrays.
+
+
+
+
+ Allow Perl non-fatal warnings to generate NOTICE>
+ messages (Andrew)
- Add psql \set ON_ERROR_ROLLBACK to allow statements in a transaction to
- error without affecting the rest of the transaction (Greg Sabino Mullane)
+ Add psql \set ON_ERROR_ROLLBACK> to allow statements
+ in a transaction to error without affecting the rest of the
+ transaction (Greg Sabino Mullane)
- This is basically implemented by wrapping every statement in a subtransaction.
+ This is basically implemented by wrapping every statement in a
+ subtransaction.
- Add support for \x hex strings in psql variables (Bruce)
+ Add support for \x> hex strings in psql variables
+ (Bruce)
Octal escapes were already supported.
- Add psql support for troff "-ms" output format (Roger Leigh)
+ Add psql support for troff -ms> output format (Roger
+ Leigh)
- Allow psql's history file location to be controlled by HISTFILE (Andreas
- Seltenreich)
+ Allow psql's history file location to be controlled by
+ HISTFILE> (Andreas Seltenreich)
This allows configuration of per-database history storage.
- Prevent psql \x (expanded mode) from affecting other backslash output
- (Neil)
+ Prevent psql \x> (expanded mode) from affecting other
+ backslash output (Neil)
- Add -L option to psql to log sessions (Lorne Sunley)
+ Add option to psql to log sessions (Lorne Sunley)
This option was added because some operating systems do not have
- Have psql \d show tablespace of indexes (Qingqing Zhou)
+ Have psql \d> show tablespace of indexes (Qingqing
+ Zhou)
- Allow psql \h to make a best guess on the proper help information (Greg
- Sabino Mullane)
+ Allow psql help (\h>) to make a best guess on the
+ proper help information (Greg Sabino Mullane)
- This allows the user to just add \h to the front of the syntax error
- query and get help on the supported syntax. Previously any additional
- query text beyond the help topics supported had to be removed to use
- \h.
+ This allows the user to just add \h> to the front of
+ the syntax error query and get help on the supported syntax.
+ Previously any additional query text beyond the help topics
+ supported had to be removed to use \h>.
- Add psql \pset numericlocale to allow numbers to be output in a
- locale-aware format (Eugen Nedelcu)
+ Add psql \pset numericlocale> to allow numbers to be
+ output in a locale-aware format (Eugen Nedelcu)
- For example, using C locale 100000 would be output as 100,000.0 and
- European locale might output this value as 100.000,0.
+ For example, using C> locale 100000> would
+ be output as 100,000.0> and European locale might
+ output this value as 100.000,0>.
- Add -n / --schema switch to pg_restore (Richard van den Bergg)
+ Add
+ (Richard van den Bergg)
This allows only objects from a specified schema to be restored.
- Allow pg_dump to dump a consistent snapshot of large objects (Tom)
+ Allow pg_dump to dump a consistent snapshot of large objects
+ (Tom)
- Add --encoding to pg_dump (Magnus Hagander)
+ Add to pg_dump (Magnus Hagander)
- This allows a database to be dumped in an encoding that is different
- from the server's encoding. This is valuable when transferring the dump
- to a machine with a different encoding.
+ This allows a database to be dumped in an encoding that is
+ different from the server's encoding. This is valuable when
+ transferring the dump to a machine with a different encoding.
- Add a "PGPASSFILE" environment variable to specify the password
- file's filename (Andrew Dunstan)
+ Add a PGPASSFILE> environment variable to specify the
+ password file's filename (Andrew Dunstan)
- Add lo_create(), that is similar to lo_creat() but allows the OID of the large
- object to be specified (Tom)
+ Add lo_create()>, that is similar to
+ lo_creat()> but allows the OID of the large object
+ to be specified (Tom)
- Add spinlock support for the Itanium processor using Intel compiler (Vikram
+ Add spinlock support for the Itanium processor using Intel
+ compiler (Vikram
Kalsi)
- Rename Rendezvous to Bonjour to match OS/X feature renaming (Bruce)
+ Rename Rendezvous to Bonjour to match OS/X feature renaming
+ (Bruce)
- Add support for wal_fsync_writethrough for Darwin (Chris Campbell)
+ Add support for wal_fsync_writethrough for Darwin (Chris
+ Campbell)
- Streamline the passing of information within the server, the optimizer,
- and the lock system (Tom)
+ Streamline the passing of information within the server, the
+ optimizer, and the lock system (Tom)
Allow pg_config to be compiled using MSVC (Andrew Dunstan)
- This is required to build DBD::Pg using MSVC.
+ This is required to build DBD::Pg using
MSVC>.
- Code cleanups (Coverity static analysis performed by EnterpriseDB)
+ Code cleanups (Coverity static analysis performed by
+ EnterpriseDB)
- Modify postgresql.conf to use documention defaults on/off rather
- than true/false (Bruce)
+ Modify postgresql.conf> to use documention defaults
+ on>/off> rather than
+ true>/false> (Bruce)
- Enhance pg_config to be able to report more build-time values (Tom)
+ Enhance
pg_config> to be able to report more
+ build-time values (Tom)
- Add /contrib/pg_buffercache contrib module (Mark Kirkwood)
+ Add /contrib/pg_buffercache> contrib module (Mark
+ Kirkwood)
This displays the contents of the buffer cache, for debugging and
- Remove /contrib/array because it is obsolete (Tom)
+ Remove /contrib/array> because it is obsolete (Tom)
- Cleanup the contrib/lo module (Tom)
+ Cleanup the /contrib/lo> module (Tom)
- Move /contrib/findoidjoins to src/tools (Tom)
+ Move /contrib/findoidjoins> to
+ /src/tools> (Tom)
- Remove the <<, >>, &<, and &> operators for contrib/cube
+ Remove the <<>, >>>,
+ &<>, and &>> operators from
+ /contrib/cube>
These operators were not useful.
- Improve /contrib/btree_gist (Janko Richter)
+ Improve /contrib/btree_gist> (Janko Richter)
- /contrib/pgcrypto - Remove support for libmhash/libmcrypt (Marko Kreen)
+ /contrib/pgcrypto> - Remove support for
+ libmhash/libmcrypt (Marko Kreen)
- /contrib/pgcrypto - Add support for new encryption methods (Marko Kreen)
+ /contrib/pgcrypto> - Add support for new encryption
+ methods (Marko Kreen)
- 3des and AES
- SHA2 (SHA256, SHA384, SHA512)
- Fortuna PRNG
- PGP encryption
- RSA key
+
+
+
+ 3DES
+
+
+
+
+ AES
+
+
+
+
+ Fortuna PRNG
+
+
+
+
+ PGP
+
+
+
+
+ RSA
+
+
+
+
+ SHA2 (SHA256, SHA384, SHA512)
+
+
+
+
-
+