2 $PostgreSQL: pgsql/doc/src/sgml/release.sgml,v 1.374 2005/09/23 16:36:35 momjian Exp $
6 [A-Z][A-Z ]+[A-Z] <command>
7 [A-Za-z_][A-Za-z0-9_]+() <function>
8 [A-Za-z_]/[A-Za-z_]+ <filename>
9 PostgreSQL <productname>
10 pg_[A-Za-z0-9_] <application>
11 [A-Z][A-Z] <type>, <envar>, <literal>
15 <appendix id="release">
16 <title>Release Notes</title>
18 <sect1 id="release-8-1">
19 <title>Release 8.1</title>
22 <title>Release date</title>
23 <simpara>2005-1?-??, Current as of 2005-09-15</simpara>
27 <title>Overview</title>
30 Major changes in this release:
37 Improve concurrent access to the shared buffer cache (Tom)
42 Access to the shared buffer cache was identified as a
43 significant scalability problem, particularly on multi-CPU
44 systems. In this release, the way that locking is done in the
45 buffer manager has been overhauled to reduce lock contention
46 and improve scalability. The buffer manager has also been
47 changed to use a <quote>clock sweep</quote> replacement
55 Allow index scans to use an intermediate in-memory bitmap (Tom)
60 In previous releases, only a single index could be used to do
61 lookups on a table. With this feature, if a query has
62 <command>WHERE tab.col1 = 4 and tab.col2 = 9</>, and there is
63 no multicolumn index on <literal>col1</> and <literal>col2</>,
64 but there is an index on <literal>col1</> and another on
65 <literal>col2</>, it is possible to search both indexes and
66 combine the results in memory, then do heap fetches for only
67 the rows matching both the <literal>col1</> and
68 <literal>col2</> restrictions. This is very useful in
69 environments that have a lot of unstructured queries where it
70 is impossible to create indexes that match all possible access
71 conditions. Bitmap scans are useful even with a single index,
72 as they reduce the amount of random access needed; a bitmap
73 index scan is efficient for retrieving fairly large fractions
74 of the complete table, whereas plain index scans are not.
81 Add two-phase commit (Heikki Linnakangas, Alvaro, Tom)
86 Two-phase commit allows transactions to be "prepared" on several
87 computers, and once all computers have successfully prepared
88 their transactions (none failed), all transactions can be
89 committed. Even if a machine crashes after a prepare, the
90 prepared transaction can be committed after the machine is
91 restarted. New syntax includes <command>PREPARE TRANSACTION</> and
92 <command>COMMIT/ROLLBACK PREPARED</>. A new system view
93 <literal>pg_prepared_xacts</> has also been added.
100 Create a new role system that replaces users and groups
106 Roles are a combination of users and groups. Like users, they
107 can have login capability, and like groups, a role can have
108 other roles as members. Roles basically remove the distinction
109 between users and groups. For example, a role can:
116 Have login capability (optionally)
128 Hold access permissions for database objects
134 Inherit permissions from other roles it is a member of
140 Once a user logs into a role, she obtains capabilities of
141 the login role plus any inherited roles, and can use
142 <command>SET ROLE</> to switch to other roles she is a member of.
143 This feature is a generalization of the SQL standard's concept of
145 This change also replaces <structname>pg_shadow</> and
146 <structname>pg_group</> by new role-capable catalogs
147 <structname>pg_authid</> and <structname>pg_auth_members</>. The old
148 tables are redefined as read-only views on the new role tables.
155 Automatically use indexes for <function>MIN()</> and
156 <function>MAX()</> (Tom)
161 In previous releases, the only way to use an index for
162 <function>MIN()</> or <function>MAX()</> was to rewrite the
163 query as <command>SELECT col FROM tab ORDER BY col LIMIT 1</>.
164 Index usage now happens automatically.
171 Move <filename>/contrib/pg_autovacuum</> into the main server
177 Integrating autovacuum into the server allows it to be
178 automatically started and stopped in sync with the database
179 server, and allows autovacuum to be configured from
180 <filename>postgresql.conf</>.
187 Add shared row level locks using <command>SELECT ... FOR SHARE</>
193 While <productname>PostgreSQL</productname>'s MVCC locking
194 allows <command>SELECT</> to never be blocked by writers and
195 therefore does not need shared row locks for typical operations,
196 shared locks are useful for applications that require shared row
197 locking. In particular this reduces the locking requirements
198 imposed by referential integrity checks.
205 Add dependencies on shared objects, specifically roles
211 This extension of the dependency mechanism prevents roles from
212 being dropped while there are still database objects they own.
213 Formerly it was possible to accidentally <quote>orphan</> objects by
214 deleting their owner. While this could be recovered from, it
215 was messy and unpleasant.
222 Improve performance for partitioned tables (Simon)
227 The new <varname>constraint_exclusion</varname> configuration
228 parameter avoids lookups on child tables where constraints indicate
229 that no matching rows exist in the child table.
232 This allows for a basic type of table partitioning. If child tables
233 store separate key ranges and this is enforced using appropriate
234 <command>CHECK</> constraints, the optimizer will skip child
235 table accesses when the constraint guarantees no matching rows
236 exist in the child table.
245 <title>Migration to version 8.1</title>
248 A dump/restore using <application>pg_dump</application> is required
249 for those wishing to migrate data from any previous release.
253 The 8.0 release announced that the <function>to_char()</> function
254 for intervals would be removed in 8.1. However, since no better API
255 has been suggested, <function>to_char(interval)</> has been enhanced in
256 8.1 and will remain in the server.
260 Observe the following incompatibilities:
267 <varname>add_missing_from</> is now false by default (Neil)
270 By default, we now generate an error if a table is used in a query
271 without a <command>FROM</> reference. The old behavior is still
272 available, but the parameter must be set to 'true' to obtain it.
278 Cause input of a zero-length string ('') for float4/float8/oid
279 to throw an error, rather than treating it as a zero (Neil)
282 This change is consistent with the current handling of
283 zero-length strings for integers. The schedule for this change
284 was announced in 8.0.
290 <varname>default_with_oids</> is now false by default (Neil)
293 With this option set to false, user-created tables no longer
294 have an OID column unless <command>WITH OIDS</> is specified in
295 <command>CREATE TABLE</>. Though OIDs have existed in all
296 releases of <productname>PostgreSQL</>, their use is limited
297 because they are only four bytes long and the counter is shared
298 across all installed databases. The preferred way of uniquely
299 identifying rows is via sequences and the <type>SERIAL</> type,
300 which have been supported since <productname>PostgreSQL</> 6.4.
306 Add <literal>E''</> syntax so eventually ordinary strings can
307 treat backslashes literally (Bruce)
310 Currently <productname>PostgreSQL</productname> processes a
311 backslash in a string literal as introducing a special escape sequence,
312 e.g. <literal>\n</> or <literal>\010</>.
313 While this allows easy entry of special values, it is
314 non-standard and makes porting of applications from other
315 databases more difficult. For this reason, the
316 <productname>PostgreSQL</productname> project is planning to
317 remove the special meaning of backslashes in strings. For
318 backward compatibility and for users who want special backslash
319 processing, a new string syntax has been created. This new string
320 syntax is formed by writing an <literal>E</> immediately preceding the
321 single quote that starts the string, e.g. <literal>E'hi\n'</>. While
322 this release does not change the handling of backslashes in strings, it
323 does add new configuration parameters to help users migrate applications
330 <varname>standard_conforming_strings</> — does this release
331 treat backslashes literally in ordinary strings?
337 <varname>escape_string_warning</> — warn about backslashes in
338 ordinary (non-E) strings
345 The <varname>standard_conforming_strings</> value is read-only.
346 Applications can retrieve the value to know how backslashes are
347 processed. (Presence of the parameter can also be taken as an
348 indication that <literal>E''</> string syntax is supported.)
349 In a future release, <varname>standard_conforming_strings</>
350 will be true, meaning backslashes will be treated literally in
351 non-E strings. To prepare for this change, use <literal>E''</>
352 strings in places that need special backslash processing, and
353 turn on <varname>escape_string_warning</> to find additional
354 strings that need to be converted to use <literal>E''</>.
355 Also, use two single-quotes (<literal>''</>) to embed a literal
356 single-quote in a string, rather than the
357 <productname>PostgreSQL</productname>-supported syntax of
358 backslash single-quote (<literal>\'</>). The former is
359 standards-conforming and does not require the use of the
360 <literal>E''</> string syntax. You can also use the
361 <literal>$$</> string syntax, which does not treat backslashes
368 Make <command>REINDEX DATABASE</> reindex all indexes in the
372 Formerly, <command>REINDEX DATABASE</> reindexed only
373 system tables. This new behavior seems more intuitive. A new
374 command <command>REINDEX SYSTEM</> provides the old functionality
375 of reindexing just the system tables.
381 In <application>psql</application>, treat unquoted
382 <literal>\{digit}+</> sequences as octal (Bruce)
385 In previous releases, <literal>\{digit}+</> sequences were
386 treated as decimal, and only <literal>\0{digit}+</> were treated
387 as octal. This change was made for consistency.
393 Remove grammar productions for prefix and postfix <literal>%</>
394 and <literal>^</> operators
398 These have never been documented and complicated the use of the
399 modulus operator (<literal>%</>) with negative numbers.
405 Make <literal>&<</> and <literal>&></> for polygons
406 consistent with the box "over" operators (Tom)
412 <command>CREATE LANGUAGE</> may ignore the provided arguments
413 in favor of information from <structname>pg_pltemplate</>
417 A new system catalog <structname>pg_pltemplate</> has been defined
418 to carry information about the preferred definitions of procedural
419 languages (such as whether they have validator functions). When
420 an entry exists in this catalog for the language being created,
421 <command>CREATE LANGUAGE</> will ignore all its parameters except the
422 language name and instead use the catalog information. This measure
423 was taken because of increasing problems with obsolete language
424 definitions being loaded by old dump files. As of 8.1,
425 <application>pg_dump</> will dump procedural language definitions as
426 just <command>CREATE LANGUAGE <replaceable>name</></command>, relying
427 on a template entry to exist at load time. We expect this will be a
428 more future-proof representation.
434 Make <function>pg_cancel_backend(int)</function> return a
435 <type>boolean</type> rather than an <type>integer</type> (Neil)
442 <title>Additional Changes</title>
445 Below you will find a detailed account of the additional changes
446 between <productname>PostgreSQL</productname> 8.1 and the
447 previous major release.
451 <title>Performance Improvements</title>
456 Improve GiST and rtree index performance (Neil)
462 Improve the optimizer, including auto-resizing of hash joins
469 Overhaul internal API in several areas
475 Change WAL record CRCs from 64-bit to 32-bit (Tom)
478 We determined that the extra cost of computing 64-bit CRCs was
479 significant, and the gain in reliability too marginal to justify it.
485 Prevent writing large empty gaps in WAL pages (Tom)
491 Allow non-consecutive index columns to be used in a multi-column
495 For example, this allows an index on columns a,b,c to be used in
496 a query with <command>WHERE a = 4 and c = 10</>.
502 Skip WAL logging for <command>CREATE TABLE AS</> /
503 <command>SELECT INTO</> (Simon)
506 Since a crash during <command>CREATE TABLE AS</> would cause the
507 table to be dropped during recovery, there is no reason to WAL
508 log as the table is loaded. (Logging still happens if WAL
509 archiving is enabled, however.)
515 Allow concurrent GIST index access (Teodor, Oleg)
521 Add configuration parameter <varname>full_page_writes</> to
522 control writing full pages to WAL (Bruce)
525 To prevent partial disk writes from corrupting the database,
526 <productname>PostgreSQL</productname> writes a complete copy of
527 each database disk page to WAL the first time it is modified
528 after a checkpoint. This option turns off that functionality for more
529 speed. This is safe to use with battery-backed disk caches where
530 partial page writes cannot happen.
536 Use <literal>O_DIRECT</> if available when using
537 <literal>O_SYNC</> for <varname>wal_sync_method</varname>
541 <literal>O_DIRECT</> causes disk writes to bypass the kernel
542 cache, and for WAL writes, this improves performance.
548 Improve <command>COPY FROM</> performance (Alon Goldshuv)
551 This was accomplished by reading <command>COPY</> input in
552 larger chunks, rather than character by character.
558 Improve the performance of <function>COUNT()</function>,
559 <function>SUM</function>, <function>AVG()</function>,
560 <function>STDDEV()</function>, and
561 <function>VARIANCE()</function> (Neil, Tom)
568 <title>Server Changes</title>
573 Prevent problems due to transaction ID (XID) wraparound (Tom)
576 The server will now warn when the transaction counter approaches
577 the wraparound point. If the counter becomes too close to wraparound,
578 the server will stop accepting queries. This ensures that data is
579 not lost before needed vacuuming is performed.
585 Fix problems with object IDs (OIDs) conflicting with existing system
586 objects after the OID counter has wrapped around (Tom)
592 Add warning about the need to increase
593 <varname>max_fsm_relations</> and <varname>max_fsm_pages</>
594 during <command>VACUUM</> (Ron Mayer)
600 Add <varname>temp_buffers</> configuration parameter to allow
601 users to determine the size of the local buffer area for
602 temporary table access (Tom)
608 Add session start time and client IP address to
609 <literal>pg_stat_activity</> (Magnus)
615 Enhance <literal>pg_locks</> display (Tom)
621 Log queries for client-side <command>PREPARE</> and
622 <command>EXECUTE</> (Simon)
628 Allow Kerberos name and user name case sensitivity to be
629 specified in <filename>postgresql.conf</> (Magnus)
635 Add configuration parameter <varname>krb_server_hostname</> so
636 that the server hostname can be specified as part of service
637 principal (Todd Kover)
640 If not set, any service principal matching an entry in the
641 keytab can be used. This is new Kerberos matching behavior in
648 Add <varname>log_line_prefix</> options for millisecond
649 timestamps (<literal>%m</>) and remote host (<literal>%h</>) (Ed
656 Add WAL logging for GIST indexes (Teodor, Oleg)
659 GIST indexes are now safe for crash and point-in-time recovery.
665 Remove old <filename>*.backup</> files when we do
666 <function>pg_stop_backup()</> (Bruce)
669 This prevents a large number of <filename>*.backup</> files from
670 existing in <filename>/pg_xlog</>.
676 Add configuration parameters to control TCP/IP keep-alive
677 times for idle, interval, and count (Oliver Jowett)
681 These values can be changed to allow more rapid detection of
682 lost client connections.
688 Add per-user and per-database connection limits (Petr Jelinek)
691 Using <command>ALTER USER</> and <command>ALTER DATABASE</>,
692 limits can now be enforced on the maximum number of sessions that
693 can concurrently connect as a specific user or to a specific database.
694 Setting the limit to zero disables user or database connections.
700 Allow more than two gigabytes of shared memory and per-backend
701 work memory on 64-bit machines (Koichi Suzuki)
707 New system catalog <structname>pg_pltemplate</> allows overriding
708 obsolete procedural-language definitions in dump files (Tom)
717 <title>Query Changes</title>
722 Add temporary views (Koju Iijima, Neil)
728 Fix <command>HAVING</> without any aggregate functions or
729 <command>GROUP BY</> so that the query returns a single group (Tom)
732 Previously, such a case would treat the <command>HAVING</>
733 clause the same as a <command>WHERE</> clause. This was not per spec.
739 Add <command>USING</> clause to allow additional tables to be
740 specified to <command>DELETE</> (Euler Taveira de Oliveira, Neil)
743 In prior releases, there was no clear method for specifying
744 additional tables to be used for joins in a <command>DELETE</>
745 statement. <command>UPDATE</> already has a <literal>FROM</>
746 clause for this purpose.
752 Add support for <literal>\x</> hex escapes in backend and ecpg
756 This is just like the standard C <literal>\x</> escape syntax.
757 Octal escapes were already supported.
763 Add <command>BETWEEN SYMMETRIC</> query syntax (Pavel Stehule)
766 This feature allows <command>BETWEEN</> comparisons without
767 requiring the first value to be less than the second. For
768 example, <command>2 BETWEEN [ASYMMETRIC] 3 AND 1</> returns
769 false, while <command>2 BETWEEN SYMMETRIC 3 AND 1</> returns
770 true. <command>BETWEEN ASYMMETRIC</> was already supported.
776 Add <command>NOWAIT</> option to <command>SELECT ... FOR
777 UPDATE/SHARE</> (Hans-Juergen Schoenig)
780 While the <varname>statement_timeout</> configuration
781 parameter allows a query taking more than a certain amount of
782 time to be cancelled, the <command>NOWAIT</> option allows a
783 query to be canceled as soon as a <command>SELECT ... FOR
784 UPDATE/SHARE</> command cannot immediately acquire a row lock.
792 <title>Object Manipulation Changes</title>
797 Track dependencies of shared objects (Alvaro)
800 <productname>PostgreSQL</productname> allows global tables
801 (users, databases, tablespaces) to reference information in
802 multiple databases. This addition adds dependency information
803 for global tables, so, for example, user ownership can be
804 tracked across databases, so a user who owns something in any
805 database can no longer be removed. Dependency tracking already
806 existed for database-local objects.
812 Allow limited <command>ALTER OWNER</> commands to be performed
813 by the object owner (Stephen Frost)
816 Prior releases allowed only superusers to change object owners.
817 Now, ownership can be transferred if the user executing the command
818 owns the object and would be able to create it as the new owner
819 (that is, the user is a member of the new owning role and that role
820 has the CREATE permission that would be needed to create the object
827 Add <command>ALTER</> object <command>SET SCHEMA</> capability
828 for some object types (tables, functions, types) (Bernd Helmle)
831 This allows objects to be moved to different schemas.
837 Add <command>ALTER TABLE ENABLE/DISABLE TRIGGER</command> to
838 disable triggers (Satoshi Nagayasu)
847 <title>Utility Command Changes</title>
852 Allow <command>TRUNCATE</> to truncate multiple tables in a
853 single command (Alvaro)
856 Because of referential integrity checks, it is not allowed to
857 truncate a table that is part of a referential integrity
858 constraint. Using this new functionality, <command>TRUNCATE</>
859 can be used to truncate such tables, if both tables involved in
860 a referential integrity constraint are truncated in a single
861 <command>TRUNCATE</> command.
867 Properly process carriage returns and line feeds in
868 <command>COPY CSV</> mode (Andrew)
871 In release 8.0, carriage returns and line feeds in <command>CSV
872 COPY TO</> were processed in an inconsistent manner. (This was
873 documented on the TODO list.)
879 Add <command>COPY WITH CSV HEADER</> to allow a header line as
880 the first line in <command>COPY</> (Andrew)
883 This allows handling of the common <command>CSV</> usage of
884 placing the column names on the first line of the data file. For
885 <command>COPY TO</>, the first line contains the column names,
886 and for <command>COPY FROM</>, the first line is ignored.
892 On Windows, display better sub-second precision in
893 <command>EXPLAIN ANALYZE</> (Magnus)
899 Add trigger duration display to <command>EXPLAIN ANALYZE</>
903 Prior releases included trigger execution time as part of the
904 total execution time, but did not show it separately. It is now
905 possible to see how much time is spent in each trigger.
911 Add support for <literal>\x</> hex escapes in <command>COPY</>
915 Previous releases only supported octal escapes.
921 Make <command>SHOW ALL</> include variable descriptions
925 <command>SHOW</> varname still only displays the variable's
926 value and does not include the description.
932 Make <application>initdb</application> create a new standard
933 database called <literal>postgres</>, and convert utilities to
934 use <literal>postgres</> rather than <literal>template1</> for
935 standard lookups (Dave)
938 In prior releases, <literal>template1</> was used both as a
939 default connection for utilities like
940 <application>createuser</application>, and as a template for
941 new databases. This caused <command>CREATE DATABASE</> to
942 sometimes fail, because a new database cannot be created if
943 anyone else is in the template database. With this change, the
944 default connection database is now <literal>postgres</>,
945 meaning it is much less likely someone will be using
946 <literal>template1</> during <command>CREATE DATABASE</>.
952 Create new <application>reindexdb</application> command-line
953 utility by moving <filename>/contrib/reindexdb</> into the
954 server (Euler Taveira de Oliveira)
963 <title>Data Type and Function Changes</title>
968 Add <function>MAX()</> and <function>MIN()</> aggregates for
969 array types (Koju Iijima)
975 Fix <function>to_date()</> and <function>to_timestamp()</> to
976 behave reasonably when <literal>CC</> and <literal>YY</> fields
977 are both used (Karel Zak)
980 If the format specification contains <literal>CC</> and a year
981 specification is <literal>YYY</> or longer, ignore the
982 <literal>CC</>. If the year specification is <literal>YY</> or
983 shorter, interpret <literal>CC</> as the previous century.
989 Add <function>md5(bytea)</> (Abhijit Menon-Sen)
992 <function>md5(text)</> already existed.
998 Fix <type>CHAR()</> to properly pad spaces to the specified
999 length when using a multiple-byte character set (Yoshiyuki
1003 In prior releases, the padding of <type>CHAR()</> was incorrect
1004 because it only padded to the specified number of bytes without
1005 considering how many characters were stored.
1011 Add support for <command>numeric ^ numeric</> based on
1012 <function>power(numeric, numeric)</>
1015 The function already existed, but there was no operator assigned
1022 Fix <type>NUMERIC</> modulus by properly truncating the quotient
1023 during computation (Bruce)
1026 In previous releases, modulus for large values sometimes
1027 returned negative results due to rounding of the quotient.
1033 Add a function <function>lastval()</>(Dennis Björklund)
1036 <function>lastval()</> is a simplified version of
1037 <function>currval()</>. It automatically determines the proper
1038 sequence name based on the most recent <function>nextval()</> or
1039 <function>setval()</> call performed by the current session.
1045 Add <function>to_timestamp(DOUBLE PRECISION)</>
1048 Converts Unix seconds since 1970 to a <type>TIMESTAMP WITH
1055 Add <function>pg_postmaster_start_time()</> function (Euler
1056 Taveira de Oliveira, Matthias Schmidt)
1062 Allow the full use of time zone names in <command>AT TIME
1063 ZONE</>, not just the short list previously available (Magnus)
1066 Previously, only a predefined list of time zone names were
1067 supported by <command>AT TIME ZONE</>. Now any supported time
1068 zone name can be used, e.g.:
1070 SELECT CURRENT_TIMESTAMP AT TIME ZONE 'Europe/London';
1072 In the above query, the time zone used is adjusted based on the
1073 daylight savings time rules that were in effect on the supplied
1080 Add <function>GREATEST()</> and <function>LEAST()</> variadic
1081 functions (Pavel Stehule)
1084 These functions take a variable number of arguments and return
1085 the greatest or least value among the arguments.
1091 Add <function>pg_column_size()</> (Mark Kirkwood)
1094 This returns storage size of a column, including any
1101 Add <function>regexp_replace()</> (Atsushi Ogawa)
1104 This allows regular expression replacement, like sed. An optional
1105 flag argument allows selection of global (replace all) and
1106 case-insensitive modes.
1112 Fix interval division and multiplication (Bruce)
1115 Previous versions sometimes returned unjustified results, like
1116 <command>'4 months'::interval / 5</> returning <command>'1 mon
1123 Add an internal day field to <type>INTERVAL</> so a one day
1124 interval can be distinguished from a 24 hour interval (Michael
1128 Days that contain a daylight savings time adjustment are not 24
1129 hours, but typically 23 or 25 hours. This change allows days
1130 (not fixed 24-hour periods) to be added to dates who's result
1131 includes a daylight savings time adjustment period. Therefore,
1132 while in previous releases <literal>1 day</> and <literal>24
1133 hours</> were interchangeable interval values, in this release
1134 they are treated differently, e.g.
1136 '2005-05-03 00:00:00 EST' + '1 day' = '2005-05-04 00:00:00-04'
1137 '2005-05-03 00:00:00 EST' + '24 hours' = '2005-05-04 01:00:00-04'
1144 Add <function>justify_days()</> and <function>justify_hours()</>
1145 (Michael Glaesemann)
1148 These functions, respectively, adjust days to an appropriate
1149 number of full months and days, and adjust hours to an
1150 appropriate number of full days and hours.
1156 Move <filename>/contrib/dbsize</> into the backend, and rename
1157 some of the functions (Dave Page, Andreas Pflug)
1164 <function>pg_tablespace_size()</>
1170 <function>pg_database_size()</>
1176 <function>pg_relation_size()</>
1182 <function>pg_total_relation_size()</>
1188 <function>pg_size_pretty()</>
1195 <function>pg_total_relation_size()</> includes indexes and TOAST
1202 Add functions for read-only file access to the cluster directory
1203 (Dave Page, Andreas Pflug)
1210 <function>pg_stat_file()</>
1216 <function>pg_read_file()</>
1222 <function>pg_ls_dir()</>
1232 Add <function>pg_reload_conf()</> to force reloading of the
1233 configuration files (Dave Page, Andreas Pflug)
1239 Add <function>pg_rotate_logfile()</> to force rotation of the
1240 server log file (Dave Page, Andreas Pflug)
1246 Change <literal>pg_stat_*</> views to include TOAST tables (Tom)
1255 <title>Encoding and Locale Changes</title>
1260 Rename some encodings to be more consistent and to follow
1261 international standards (Bruce)
1268 <literal>UNICODE</> is now <literal>UTF8</>
1274 <literal>ALT</> is now <literal>WIN866</>
1280 <literal>WIN</> is now <literal>WIN1251</>
1286 <literal>TCVN</> is now <literal>WIN1258</>
1294 The original names still work.
1300 Add support for <literal>WIN1252</> encoding (Roland Volkmann)
1306 Add support for 3 and 4-byte <literal>UTF8</> characters (John
1310 Previously only one and two-byte <literal>UTF8</> characters
1311 were supported. This is particularly important for support for
1312 some Chinese characters.
1318 Allow direct conversion between <literal>EUC_JP</> and
1319 <literal>SJIS</> to improve performance (Atsushi Ogawa)
1325 Allow the UTF8 encoding to work on Windows (Magnus)
1328 This is done by mapping UTF8 to the Windows-native UTF16
1338 <title>General Server-Side Language Changes</title>
1343 Fix <command>ALTER LANGUAGE RENAME</> (Sergey Yatskevich)
1349 Allow function characteristics, like strictness and volatility,
1350 to be modified via <command>ALTER FUNCTION</> (Neil)
1356 Increase the maximum number of function arguments to 100 (Tom)
1362 Allow SQL and PL/PgSQL functions to use <command>OUT</> and
1363 <command>INOUT</> parameters (Tom)
1366 <command>OUT</> is an alternate way for a function to return
1367 values. Instead of using <command>RETURN</>, values can be
1368 returned by assigning to parameters declared as <command>OUT</> or
1369 <command>INOUT</>. This is notationally simpler in some cases,
1370 particularly so when multiple values need to be returned.
1371 While returning multiple values from a function
1372 was possible in previous releases, this greatly simplifies the
1373 process. (The feature will be extended to other server-side
1374 languages in future releases.)
1380 Move language handler functions into the <literal>pg_catalog</> schema
1383 This makes it easier to drop the public schema if desired.
1389 Add <function>SPI_getnspname()</function> to SPI (Neil)
1397 <title>PL/PgSQL Server-Side Language Changes</title>
1402 Overhaul the memory management of PL/PgSQL functions (Neil)
1405 The parsetree of each function is now stored in a separate
1406 memory context. This allows this memory to be easily reclaimed
1407 when it is no longer needed.
1413 Check function syntax at <command>CREATE FUNCTION</> time,
1414 rather than at runtime (Neil)
1417 Previously, most syntax errors were reported only when the
1418 function was executed.
1424 Allow <command>OPEN</> to open non-<command>SELECT</> queries
1425 like <command>EXPLAIN</> and <command>SHOW</> (Tom)
1431 No longer require functions to issue a <command>RETURN</>
1435 This is a byproduct of the newly added <command>OUT</> and
1436 <command>INOUT</> functionality. <command>RETURN</> can
1437 be omitted when it is not needed to provide the function's
1444 Add support for an optional <command>INTO</> clause to
1445 PL/PgSQL's <command>EXECUTE</> statement (Pavel Stehule, Neil)
1451 Make <command>CREATE TABLE AS</> set <command>ROW_COUNT</> (Tom)
1457 Define <literal>SQLSTATE</> and <literal>SQLERRM</> to return
1458 the <literal>SQLSTATE</> and error message of the current
1459 exception (Pavel Stehule, Neil)
1462 These variables are only defined inside exception blocks.
1468 Allow the parameters to the <command>RAISE</> statement to be
1469 expressions (Pavel Stehule, Neil)
1475 Add a loop <command>CONTINUE</> statement (Pavel Stehule, Neil)
1481 Allow block and loop labels (Pavel Stehule)
1490 <title>PL/Perl Server-Side Language Changes</title>
1495 Allow large result sets to be returned efficiently (Abhijit
1499 This allows functions to use <function>return_next()</> to avoid
1500 building the entire result set in memory.
1506 Allow one-row-at-a-time retrieval of query results (Abhijit Menon-Sen)
1509 This allows functions to use <function>spi_query()</> and
1510 <function>spi_fetchrow()</> to avoid accumulating the entire
1511 result set in memory.
1517 Force PL/Perl to handle strings as <literal>UTF8</> if the
1518 server encoding is <literal>UTF8</> (David Kamholz)
1524 Add a validator function for PL/Perl (Andrew)
1527 This allows syntax errors to be reported at definition time,
1528 rather than execution time.
1534 Allow PL/Perl to return a Perl array when the function returns
1535 an array type (Andrew)
1538 This basically maps <productname>PostgreSQL</productname> arrays
1545 Allow Perl non-fatal warnings to generate <command>NOTICE</>
1552 Allow Perl's <literal>strict</> mode to be enabled (Andrew)
1561 <title><application>psql</> Changes</title>
1566 Add <command>\set ON_ERROR_ROLLBACK</> to allow statements in
1567 a transaction to error without affecting the rest of the
1568 transaction (Greg Sabino Mullane)
1571 This is basically implemented by wrapping every statement in a
1578 Add support for <literal>\x</> hex strings in
1579 <application>psql</> variables (Bruce)
1582 Octal escapes were already supported.
1588 Add support for <command>troff -ms</> output format (Roger
1595 Allow the history file location to be controlled by
1596 <envar>HISTFILE</> (Andreas Seltenreich)
1599 This allows configuration of per-database history storage.
1605 Prevent <command>\x</> (expanded mode) from affecting
1606 backslash-command displays (Neil)
1612 Add <option>-L</> option to <application>psql</application> to
1613 log sessions (Lorne Sunley)
1616 This option was added because some operating systems do not have
1617 simple command-line activity logging functionality.
1623 Make <command>\d</> show the tablespaces of indexes (Qingqing
1630 Allow <application>psql</application> help (<command>\h</>) to
1631 make a best guess on the proper help information (Greg Sabino
1635 This allows the user to just add <command>\h</> to the front of
1636 the syntax error query and get help on the supported syntax.
1637 Previously any additional query text beyond the command name
1638 had to be removed to use <command>\h</>.
1644 Add <command>\pset numericlocale</> to allow numbers to be
1645 output in a locale-aware format (Eugen Nedelcu)
1648 For example, using <literal>C</> locale <literal>100000</> would
1649 be output as <literal>100,000.0</> while a European locale might
1650 output this value as <literal>100.000,0</>.
1656 Make startup banner show both server version number and
1657 <application>psql</>'s version number, when they are different (Bruce)
1660 Also, a warning will be shown if the server and <application>psql</>
1661 are from different major releases.
1670 <title><application>pg_dump</> Changes</title>
1675 Add <option>-n</> / <option>--schema</> switch to
1676 <application>pg_restore</> (Richard van den Berg)
1679 This allows only objects from a specified schema to be restored.
1685 Allow <application>pg_dump</> to dump a consistent snapshot of
1692 Allow <application>pg_dump</> to dump large objects even in
1699 Dump comments for large objects (Tom)
1705 Add <option>--encoding</> to <application>pg_dump</>
1709 This allows a database to be dumped in an encoding that is
1710 different from the server's encoding. This is valuable when
1711 transferring the dump to a machine with a different encoding.
1717 Rely on <structname>pg_pltemplate</> for procedural languages (Tom)
1720 If the call handler for a procedural language is in the
1721 <literal>pg_catalog</> schema, <application>pg_dump</> does not
1722 dump the handler. Instead, it dumps the language using just
1723 <command>CREATE LANGUAGE <replaceable>name</></command>,
1724 relying on the <structname>pg_pltemplate</> catalog to provide
1725 the language's creation parameters at load time.
1734 <title><application>libpq</application> Changes</title>
1739 Add a <envar>PGPASSFILE</> environment variable to specify the
1740 password file's filename (Andrew)
1746 Add <function>lo_create()</>, that is similar to
1747 <function>lo_creat()</> but allows the OID of the large object
1748 to be specified (Tom)
1754 Make <application>libpq</application> consistently return an error
1755 to the client application on <function>malloc()</function>
1764 <title>Source Code Changes</title>
1769 Add spinlock support for the Itanium processor using Intel
1770 compiler (Vikram Kalsi)
1776 Add Kerberos 5 support for Windows (Magnus)
1782 Add Chinese FAQ (laser@pgsqldb.com)
1788 Rename Rendezvous to Bonjour to match OS/X feature renaming
1795 Add support for <literal>fsync_writethrough</literal> on
1796 Darwin (Chris Campbell)
1802 Streamline the passing of information within the server, the
1803 optimizer, and the lock system (Tom)
1809 Allow <application>pg_config</> to be compiled using MSVC (Andrew)
1812 This is required to build DBD::Pg using <application>MSVC</>.
1818 Remove support for Kerberos V4 (Magnus)
1821 Kerberos 4 had security vulnerabilities and is no longer
1828 Code cleanups (Coverity static analysis performed by
1835 Modify <filename>postgresql.conf</> to use documentation defaults
1836 <literal>on</>/<literal>off</> rather than
1837 <literal>true</>/<literal>false</> (Bruce)
1843 Enhance <application>pg_config</> to be able to report more
1844 build-time values (Tom)
1850 Allow <application>libpq</application> to be built thread-safe
1851 on Windows (Dave Page)
1857 Allow IPv6 connections to be used on Win32 (Andrew)
1863 Move private declarations from <filename>gist.h</filename> to
1864 <filename>gist_private.h</filename> (Neil)
1868 In previous releases, <filename>gist.h</> contained both the
1869 public GiST API (intended for use by authors of GiST index
1870 implementations) as well as some private declarations used by
1871 the implementation of GiST itself. The latter have been moved
1872 to a separate file, <filename>gist_private.h</>. Most GiST
1873 index implementations should be unaffected.
1879 Overhaul GiST memory management (Neil)
1883 GiST methods are now always invoked in a short-lived memory
1884 context. Therefore, memory allocated via <function>palloc()</>
1885 will be reclaimed automatically, so GiST index implementations
1886 do not need to manually release allocated memory via
1887 <function>pfree()</>.
1895 <title>Contrib Changes</title>
1900 Add <filename>/contrib/pg_buffercache</> contrib module (Mark
1904 This displays the contents of the buffer cache, for debugging and
1905 performance tuning purposes.
1911 Remove <filename>/contrib/array</> because it is obsolete (Tom)
1917 Clean up the <filename>/contrib/lo</> module (Tom)
1923 Move <filename>/contrib/findoidjoins</> to
1924 <filename>/src/tools</> (Tom)
1930 Remove the <literal><<</>, <literal>>></>,
1931 <literal>&<</>, and <literal>&></> operators from
1932 <filename>/contrib/cube</>
1935 These operators were not useful.
1941 Improve <filename>/contrib/btree_gist</> (Janko Richter)
1947 Improve <filename>/contrib/pgcrypto</> (Marko Kreen)
1954 Implementation of OpenPGP symmetric-key and public-key encryption
1957 Both RSA and Elgamal public-key algorithms are supported.
1963 Stand alone build: include SHA256/384/512 hashes, Fortuna PRNG
1969 OpenSSL build: support 3DES, use internal AES with OpenSSL < 0.9.7
1975 Take build parameters (OpenSSL, zlib) from <filename>configure</> result
1978 There is no need to edit the <filename>Makefile</> anymore.
1984 Remove support for <filename>libmhash</> and <filename>libmcrypt</>
1997 <sect1 id="release-8-0-3">
1998 <title>Release 8.0.3</title>
2001 <title>Release date</title>
2002 <simpara>2005-05-09</simpara>
2006 This release contains a variety of fixes from 8.0.2, including several
2007 security-related issues.
2011 <title>Migration to version 8.0.3</title>
2014 A dump/restore is not required for those running 8.0.X. However,
2015 it is one possible way of handling two significant security problems
2016 that have been found in the initial contents of 8.0.X system
2017 catalogs. A dump/initdb/reload sequence using 8.0.3's initdb will
2018 automatically correct these problems.
2022 The larger security problem is that the built-in character set encoding
2023 conversion functions can be invoked from SQL commands by unprivileged
2024 users, but the functions were not designed for such use and are not
2025 secure against malicious choices of arguments. The fix involves changing
2026 the declared parameter list of these functions so that they can no longer
2027 be invoked from SQL commands. (This does not affect their normal use
2028 by the encoding conversion machinery.)
2032 The lesser problem is that the <filename>contrib/tsearch2</> module
2033 creates several functions that are improperly declared to return
2034 <type>internal</> when they do not accept <type>internal</> arguments.
2035 This breaks type safety for all functions using <type>internal</>
2040 It is strongly recommended that all installations repair these errors,
2041 either by initdb or by following the manual repair procedure given
2042 below. The errors at least allow unprivileged database users to crash
2043 their server process, and may allow unprivileged users to gain the
2044 privileges of a database superuser.
2048 If you wish not to do an initdb, perform the same manual repair
2049 procedures shown in the <link linkend="release-7-4-8">7.4.8 release
2055 <title>Changes</title>
2058 <listitem><para>Change encoding function signature to prevent
2059 misuse</para></listitem>
2060 <listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
2061 <type>INTERNAL</> function results</para></listitem>
2062 <listitem><para>Guard against incorrect second parameter to
2063 <function>record_out</></para></listitem>
2064 <listitem><para>Repair ancient race condition that allowed a transaction to be
2065 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
2066 than for other purposes</para>
2067 <para>This is an extremely serious bug since it could lead to apparent
2068 data inconsistencies being briefly visible to applications.</para></listitem>
2069 <listitem><para>Repair race condition between relation extension and
2071 <para>This could theoretically have caused loss of a page's worth of
2072 freshly-inserted data, although the scenario seems of very low probability.
2073 There are no known cases of it having caused more than an Assert failure.
2075 <listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
2077 The comparison code was wrong in the case where the
2078 <literal>--enable-integer-datetimes</> configuration switch had been used.
2079 NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
2080 it will need to be <command>REINDEX</>ed after installing this update, because
2081 the fix corrects the sort order of column values.
2083 <listitem><para>Fix <function>EXTRACT(EPOCH)</> for
2084 <type>TIME WITH TIME ZONE</> values</para></listitem>
2085 <listitem><para>Fix mis-display of negative fractional seconds in
2086 <type>INTERVAL</> values</para>
2088 This error only occurred when the
2089 <literal>--enable-integer-datetimes</> configuration switch had been used.
2091 <listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
2092 correctly (Neil)</para></listitem>
2093 <listitem><para>Still more 64-bit fixes for
2094 <filename>contrib/intagg</></para></listitem>
2095 <listitem><para>Prevent incorrect optimization of functions returning
2096 <type>RECORD</></para></listitem>
2097 <listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
2098 <listitem><para>Fix Borland makefile for libpq</para></listitem>
2099 <listitem><para>Fix <filename>contrib/btree_gist</> for <type>timetz</> type
2100 (Teodor)</para></listitem>
2101 <listitem><para>Make <command>pg_ctl</> check the PID found in
2102 <filename>postmaster.pid</> to see if it is still a live
2103 process</para></listitem>
2104 <listitem><para>Fix <command>pg_dump</>/<command>pg_restore</> problems caused
2105 by addition of dump timestamps</para></listitem>
2106 <listitem><para>Fix interaction between materializing holdable cursors and
2107 firing deferred triggers during transaction commit</para></listitem>
2108 <listitem><para>Fix memory leak in SQL functions returning pass-by-reference
2109 data types</para></listitem>
2115 <sect1 id="release-8-0-2">
2116 <title>Release 8.0.2</title>
2119 <title>Release date</title>
2120 <simpara>2005-04-07</simpara>
2124 This release contains a variety of fixes from 8.0.1.
2128 <title>Migration to version 8.0.2</title>
2131 A dump/restore is not required for those running 8.0.*.
2132 This release updates the major version number of the
2133 <productname>PostgreSQL</productname> libraries, so it might be
2134 necessary to re-link some user applications if they cannot
2135 find the properly-numbered shared library.
2140 <title>Changes</title>
2143 <listitem><para>Increment the major version number of all interface
2144 libraries (Bruce)</para>
2146 This should have been done in 8.0.0. It is required so 7.4.X versions
2147 of PostgreSQL client applications, like <application>psql</>,
2148 can be used on the same machine as 8.0.X applications. This might require
2149 re-linking user applications that use these libraries.
2151 <listitem><para>Add Windows-only <varname>wal_sync_method</> setting of
2152 <option>fsync_writethrough</> (Magnus, Bruce)</para>
2154 This setting causes <productname>PostgreSQL</productname> to write through
2155 any disk-drive write cache when writing to WAL.
2156 This behavior was formerly called <option>fsync</>, but was
2157 renamed because it acts quite differently from <option>fsync</> on other
2161 <listitem><para>Enable the <varname>wal_sync_method</> setting of
2162 <option>open_datasync</> on Windows, and make it the default for that
2163 platform (Magnus, Bruce)</para>
2165 Because the default is no longer <option>fsync_writethrough</>,
2166 data loss is possible during a power failure if the disk drive has
2167 write caching enabled. To turn off the write cache on Windows,
2168 from the <application>Device Manager</>, choose the drive properties,
2169 then <literal>Policies</>.
2172 <listitem><para>New cache management algorithm <acronym>2Q</> replaces
2173 <acronym>ARC</> (Tom)</para>
2175 This was done to avoid a pending US patent on <acronym>ARC</>. The
2176 <acronym>2Q</> code might be a few percentage points slower than
2177 <acronym>ARC</> for some work loads. A better cache management algorithm
2180 <listitem><para>Planner adjustments to improve behavior on freshly-created
2181 tables (Tom)</para></listitem>
2182 <listitem><para>Allow plpgsql to assign to an element of an array that is
2183 initially <literal>NULL</> (Tom)</para>
2185 Formerly the array would remain <literal>NULL</>, but now it becomes a
2186 single-element array. The main SQL engine was changed to handle
2187 <command>UPDATE</> of a null array value this way in 8.0, but the similar
2188 case in plpgsql was overlooked.
2191 <listitem><para>Convert <literal>\r\n</> and <literal>\r</> to <literal>\n</>
2192 in plpython function bodies (Michael Fuhr)</para>
2194 This prevents syntax errors when plpython code is written on a Windows or
2198 <listitem><para>Allow SPI cursors to handle utility commands that return rows,
2199 such as <command>EXPLAIN</> (Tom)</para></listitem>
2200 <listitem><para>Fix <command>CLUSTER</> failure after <command>ALTER TABLE
2201 SET WITHOUT OIDS</> (Tom)</para></listitem>
2202 <listitem><para>Reduce memory usage of <command>ALTER TABLE ADD COLUMN</>
2203 (Neil)</para></listitem>
2204 <listitem><para>Fix <command>ALTER LANGUAGE RENAME</> (Tom)</para></listitem>
2205 <listitem><para>Document the Windows-only <literal>register</> and
2206 <literal>unregister</> options of <application>pg_ctl</> (Magnus)</para></listitem>
2207 <listitem><para>Ensure operations done during backend shutdown are counted by
2208 statistics collector</para>
2210 This is expected to resolve reports of <application>pg_autovacuum</>
2211 not vacuuming the system catalogs often enough — it was not being
2212 told about catalog deletions caused by temporary table removal during
2215 <listitem><para>Change the Windows default for configuration parameter
2216 <varname>log_destination</> to <option>eventlog</> (Magnus)</para>
2218 By default, a server running on Windows will now send log output to the
2219 Windows event logger rather than standard error.
2221 <listitem><para>Make Kerberos authentication work on Windows (Magnus)</para></listitem>
2222 <listitem><para>Allow <command>ALTER DATABASE RENAME</> by superusers
2223 who aren't flagged as having CREATEDB privilege (Tom)</para></listitem>
2224 <listitem><para>Modify WAL log entries for <command>CREATE</> and
2225 <command>DROP DATABASE</> to not specify absolute paths (Tom)</para>
2226 <para>This allows point-in-time recovery on a different machine with possibly
2227 different database location. Note that <command>CREATE TABLESPACE</> still
2228 poses a hazard in such situations.
2230 <listitem><para>Fix crash from a backend exiting with an open transaction
2231 that created a table and opened a cursor on it (Tom)</para></listitem>
2232 <listitem><para>Fix <function>array_map()</> so it can call PL functions
2233 (Tom)</para></listitem>
2234 <listitem><para>Several <filename>contrib/tsearch2</> and
2235 <filename>contrib/btree_gist</> fixes (Teodor)
2237 <listitem><para>Fix crash of some <filename>contrib/pgcrypto</>
2238 functions on some platforms (Marko Kreen)</para></listitem>
2239 <listitem><para>Fix <filename>contrib/intagg</> for 64-bit platforms
2240 (Tom)</para></listitem>
2241 <listitem><para>Fix ecpg bugs in parsing of <command>CREATE</> statement
2242 (Michael)</para></listitem>
2243 <listitem><para>Work around gcc bug on powerpc and amd64 causing problems in
2244 ecpg (Christof Petig)</para></listitem>
2245 <listitem><para>Do not use locale-aware versions of <function>upper()</>,
2246 <function>lower()</>, and <function>initcap()</> when the locale is
2247 <literal>C</> (Bruce)</para>
2249 This allows these functions to work on platforms that generate errors
2250 for non-7-bit data when the locale is <literal>C</>.
2252 <listitem><para>Fix <function>quote_ident()</> to quote names that match keywords (Tom)</para></listitem>
2253 <listitem><para>Fix <function>to_date()</> to behave reasonably when
2254 <literal>CC</> and <literal>YY</> fields are both used (Karel)</para></listitem>
2255 <listitem><para>Prevent <function>to_char(interval)</> from failing
2256 when given a zero-month interval (Tom)</para></listitem>
2257 <listitem><para>Fix wrong week returned by <function>date_trunc('week')</>
2260 <function>date_trunc('week')</>
2261 returned the wrong year for the first few days of January in some years.
2263 <listitem><para>Use the correct default mask length for class <literal>D</>
2264 addresses in <type>INET</> data types (Tom)</para></listitem>
2270 <sect1 id="release-8-0-1">
2271 <title>Release 8.0.1</title>
2274 <title>Release date</title>
2275 <simpara>2005-01-31</simpara>
2279 This release contains a variety of fixes from 8.0.0, including several
2280 security-related issues.
2284 <title>Migration to version 8.0.1</title>
2287 A dump/restore is not required for those running 8.0.0.
2292 <title>Changes</title>
2295 <listitem><para>Disallow <command>LOAD</> to non-superusers</para>
2297 On platforms that will automatically execute initialization functions of a
2298 shared library (this includes at least Windows and ELF-based Unixen),
2299 <command>LOAD</> can be used to make the server execute arbitrary code.
2300 Thanks to NGS Software for reporting this.</para></listitem>
2301 <listitem><para>Check that creator of an aggregate function has the right to
2302 execute the specified transition functions</para>
2304 This oversight made it possible to bypass denial of EXECUTE
2305 permission on a function.</para></listitem>
2306 <listitem><para>Fix security and 64-bit issues in
2307 contrib/intagg</para></listitem>
2308 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
2309 Jurka)</para></listitem>
2310 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
2311 many parameters (Neil)</para></listitem>
2312 <listitem><para>Make <command>ALTER TABLE ADD COLUMN</> enforce domain
2313 constraints in all cases</para></listitem>
2314 <listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
2316 The result of the join was mistakenly supposed to be sorted the same as the
2317 left input. This could not only deliver mis-sorted output to the user, but
2318 in case of nested merge joins could give outright wrong answers.
2320 <listitem><para>Improve planning of grouped aggregate queries</para></listitem>
2321 <listitem><para><command>ROLLBACK TO <replaceable>savepoint</></command>
2322 closes cursors created since the savepoint</para></listitem>
2323 <listitem><para>Fix inadequate backend stack size on Windows</para></listitem>
2324 <listitem><para>Avoid SHGetSpecialFolderPath() on Windows
2325 (Magnus)</para></listitem>
2326 <listitem><para>Fix some problems in running pg_autovacuum as a Windows
2327 service (Dave Page)</para></listitem>
2328 <listitem><para>Multiple minor bug fixes in
2329 pg_dump/pg_restore</para></listitem>
2330 <listitem><para>Fix ecpg segfault with named structs used in
2331 typedefs (Michael)</para></listitem>
2337 <sect1 id="release-8-0">
2338 <title>Release 8.0</title>
2341 <title>Release date</title>
2342 <simpara>2005-01-19</simpara>
2346 <title>Overview</title>
2349 Major changes in this release:
2355 Microsoft Windows Native Server
2360 This is the first <productname>PostgreSQL</productname> release
2361 to run natively on <trademark class=registered>Microsoft Windows</> as
2362 a server. It can run as a <productname>Windows</> service. This
2363 release supports NT-based Windows releases like
2364 <productname>Windows 2000</>, <productname>Windows XP</>, and
2365 <productname>Windows 2003</>. Older releases like
2366 <productname>Windows 95</>, <productname>Windows 98</>, and
2367 <productname>Windows ME</> are not supported because these operating
2368 systems do not have the infrastructure to support
2369 <productname>PostgreSQL</productname>. A separate installer
2370 project has been created to ease installation on
2371 <productname>Windows</> — see <ulink
2372 url="http://www.postgresql.org/ftp/win32/"></ulink>.
2376 Although tested throughout our release cycle, the Windows port
2377 does not have the benefit of years of use in production
2378 environments that <productname>PostgreSQL</productname> has on
2379 Unix platforms. Therefore it should be treated with the same
2380 level of caution as you would a new product.
2384 Previous releases required the Unix emulation toolkit
2385 <productname>Cygwin</> in order to run the server on Windows
2386 operating systems. <productname>PostgreSQL</productname> has
2387 supported native clients on Windows for many years.
2399 Savepoints allow specific parts of a transaction to be aborted
2400 without affecting the remainder of the transaction. Prior
2401 releases had no such capability; there was no way to recover
2402 from a statement failure within a transaction except by
2403 aborting the whole transaction. This feature is valuable for
2404 application writers who require error recovery within a
2405 complex transaction.
2412 Point-In-Time Recovery
2417 In previous releases there was no way to recover from disk
2418 drive failure except to restore from a previous backup or use
2419 a standby replication server. Point-in-time recovery allows
2420 continuous backup of the server. You can recover either to
2421 the point of failure or to some transaction in the past.
2433 Tablespaces allow administrators to select different file systems
2434 for storage of individual tables, indexes, and databases.
2435 This improves performance and control over disk space
2436 usage. Prior releases used <application>initlocation</> and
2437 manual symlink management for such tasks.
2444 Improved Buffer Management, <command>CHECKPOINT</command>,
2445 <command>VACUUM</command>
2450 This release has a more intelligent buffer replacement strategy,
2451 which will make better use of available shared buffers and
2452 improve performance. The performance impact of vacuum and
2453 checkpoints is also lessened.
2465 A column's data type can now be changed with <command>ALTER
2473 New Perl Server-Side Language
2478 A new version of the <application>plperl</> server-side language now
2479 supports a persistent shared storage area, triggers, returning records
2480 and arrays of records, and SPI calls to access the database.
2487 Comma-separated-value (CSV) support in <command>COPY</command>
2492 <command>COPY</command> can now read and write
2493 comma-separated-value files. It has the flexibility to
2494 interpret non-standard quoting and separation characters too.
2503 <title>Migration to version 8.0</title>
2506 A dump/restore using <application>pg_dump</application> is
2507 required for those wishing to migrate data from any previous
2512 Observe the following incompatibilities:
2519 In <option>READ COMMITTED</> serialization mode, volatile functions
2520 now see the results of concurrent transactions committed up to the
2521 beginning of each statement within the function, rather than up to the
2522 beginning of the interactive command that called the function.
2528 Functions declared <option>STABLE</> or <option>IMMUTABLE</> always
2529 use the snapshot of the calling query, and therefore do not see the
2530 effects of actions taken after the calling query starts, whether in
2531 their own transaction or other transactions. Such a function must be
2532 read-only, too, meaning that it cannot use any SQL commands other than
2539 Non-deferred <option>AFTER</> triggers are now fired immediately
2540 after completion of the triggering query, rather than upon
2541 finishing the current interactive command. This makes a
2542 difference when the triggering query occurred within a function:
2543 the trigger is invoked before the function proceeds to its next
2550 Server configuration parameters <varname>virtual_host</> and
2551 <varname>tcpip_socket</> have been replaced with a more general
2552 parameter <varname>listen_addresses</>. Also, the server now listens on
2553 <literal>localhost</> by default, which eliminates the need for the
2554 <literal>-i</> postmaster switch in many scenarios.
2560 Server configuration parameters <varname>SortMem</> and
2561 <varname>VacuumMem</> have been renamed to <varname>work_mem</>
2562 and <varname>maintenance_work_mem</> to better reflect their
2563 use. The original names are still supported in
2564 <command>SET</command> and <command>SHOW</command>.
2570 Server configuration parameters <varname>log_pid</>,
2571 <varname>log_timestamp</>, and <varname>log_source_port</> have been
2572 replaced with a more general parameter <varname>log_line_prefix</>.
2578 Server configuration parameter <varname>syslog</> has been
2579 replaced with a more logical <varname>log_destination</> variable to
2580 control the log output destination.
2586 Server configuration parameter <varname>log_statement</> has been
2587 changed so it can selectively log just database modification or
2588 data definition statements. Server configuration parameter
2589 <varname>log_duration</> now prints only when <varname>log_statement</>
2596 Server configuration parameter <varname>max_expr_depth</> parameter has
2597 been replaced with <varname>max_stack_depth</> which measures the
2598 physical stack size rather than the expression nesting depth. This
2599 helps prevent session termination due to stack overflow caused by
2600 recursive functions.
2606 The <function>length()</> function no longer counts trailing spaces in
2607 <type>CHAR(n)</> values.
2613 Casting an integer to <type>BIT(N)</> selects the rightmost N bits of the
2614 integer, not the leftmost N bits as before.
2620 Updating an element or slice of a NULL array value now produces
2621 a non-NULL array result, namely an array containing
2622 just the assigned-to positions.
2628 Syntax checking of array input values has been tightened up
2629 considerably. Junk that was previously allowed in odd places with
2630 odd results now causes an error. Empty-string element values
2631 must now be written as <literal>""</>, rather than writing nothing.
2632 Also changed behavior with respect to whitespace surrounding
2633 array elements: trailing whitespace is now ignored, for symmetry
2634 with leading whitespace (which has always been ignored).
2640 Overflow in integer arithmetic operations is now detected and
2641 reported as an error.
2647 The arithmetic operators associated with the single-byte
2648 <type>"char"</> data type have been removed.
2654 The <function>extract()</> function (also called
2655 <function>date_part</>) now returns the proper year for BC dates.
2656 It previously returned one less than the correct year. The
2657 function now also returns the proper values for millennium and
2664 <type>CIDR</> values now must have their non-masked bits be zero.
2665 For example, we no longer allow
2666 <literal>204.248.199.1/31</literal> as a <type>CIDR</> value. Such
2667 values should never have been accepted by
2668 <productname>PostgreSQL</productname> and will now be rejected.
2674 <command>EXECUTE</command> now returns a completion tag that
2675 matches the executed statement.
2681 <application>psql</>'s <command>\copy</> command now reads or
2682 writes to the query's <literal>stdin/stdout</>, rather than
2683 <application>psql</>'s <literal>stdin/stdout</>. The previous
2684 behavior can be accessed via new
2685 <option>pstdin</>/<option>pstdout</> parameters.
2691 The JDBC client interface has been removed from the core
2692 distribution, and is now hosted at <ulink url=
2693 "http://jdbc.postgresql.org"></ulink>.
2699 The Tcl client interface has also been removed. There are several
2700 Tcl interfaces now hosted at <ulink url=
2701 "http://gborg.postgresql.org"></ulink>.
2707 The server now uses its own time zone database, rather than the
2708 one supplied by the operating system. This will provide consistent
2709 behavior across all platforms. In most cases, there should be
2710 little noticeable difference in time zone behavior, except that
2711 the time zone names used by <command>SET</>/<command>SHOW</>
2712 <varname>TimeZone</> may
2713 be different from what your platform provides.
2719 <application>Configure</>'s threading option no longer requires
2720 users to run tests or edit configuration files; threading options
2721 are now detected automatically.
2727 Now that tablespaces have been implemented,
2728 <application>initlocation</> has been removed.
2734 The API for user-defined GiST indexes has been changed. The
2735 Union and PickSplit methods are now passed a pointer to a
2736 special <structname>GistEntryVector</structname> structure,
2737 rather than a <type>bytea</type>.
2745 <title>Deprecated Features</title>
2748 Some aspects of <productname>PostgreSQL</productname>'s behavior
2749 have been determined to be suboptimal. For the sake of backward
2750 compatibility these have not been removed in 8.0, but they are
2751 considered deprecated and will be removed in the next major
2758 The 8.1 release will remove the <function>to_char()</> function
2765 The server now warns of empty strings passed to
2766 <type>oid</type>/<type>float4</type>/<type>float8</type> data
2767 types, but continues to interpret them as zeroes as before.
2768 In the next major release, empty strings will be considered
2769 invalid input for these data types.
2775 By default, tables in <productname>PostgreSQL</productname> 8.0
2776 and earlier are created with <type>OID</>s. In the next release,
2777 this will <emphasis>not</emphasis> be the case: to create a table
2778 that contains <type>OID</>s, the <option>WITH OIDS</> clause must
2779 be specified or the <varname>default_with_oids</varname>
2780 configuration parameter must be set. Users are encouraged to
2781 explicitly specify <option>WITH OIDS</> if their tables
2782 require OIDs for compatibility with future releases of
2783 <productname>PostgreSQL</productname>.
2791 <title>Changes</title>
2794 Below you will find a detailed account of the changes between
2795 release 8.0 and the previous major release.
2799 <title>Performance Improvements</title>
2804 Support cross-data-type index usage (Tom)
2807 Before this change, many queries would not use an index if the data
2808 types did not match exactly. This improvement makes index usage more
2809 intuitive and consistent.
2815 New buffer replacement strategy that improves caching (Jan)
2818 Prior releases used a least-recently-used (LRU) cache to keep
2819 recently referenced pages in memory. The LRU algorithm
2820 did not consider the number of times a specific cache entry was
2821 accessed, so large table scans could force out useful cache pages.
2822 The new cache algorithm uses four separate lists to track most
2823 recently used and most frequently used cache pages and dynamically
2824 optimize their replacement based on the work load. This should
2825 lead to much more efficient use of the shared buffer cache.
2826 Administrators who have tested shared buffer sizes in the past
2827 should retest with this new cache replacement policy.
2833 Add subprocess to write dirty buffers periodically to reduce
2834 checkpoint writes (Jan)
2837 In previous releases, the checkpoint process, which runs every few
2838 minutes, would write all dirty buffers to the operating system's
2839 buffer cache then flush all dirty operating system buffers to
2840 disk. This resulted in a periodic spike in disk usage that often
2841 hurt performance. The new code uses a background writer to trickle
2842 disk writes at a steady pace so checkpoints have far fewer dirty
2843 pages to write to disk. Also, the new code does not issue a global
2844 <function>sync()</> call, but instead <function>fsync()</>s just
2845 the files written since the last checkpoint. This should improve
2846 performance and minimize degradation during checkpoints.
2852 Add ability to prolong vacuum to reduce performance impact (Jan)
2855 On busy systems, <command>VACUUM</command> performs many I/O
2856 requests which can hurt performance for other users. This
2857 release allows you to slow down <command>VACUUM</command> to
2858 reduce its impact on other users, though this increases the
2859 total duration of <command>VACUUM</command>.
2865 Improve B-tree index performance for duplicate keys (Dmitry Tkach, Tom)
2868 This improves the way indexes are scanned when many duplicate
2869 values exist in the index.
2875 Use dynamically-generated table size estimates while planning (Tom)
2878 Formerly the planner estimated table sizes using the values seen
2879 by the last <command>VACUUM</command> or <command>ANALYZE</command>,
2880 both as to physical table size (number of pages) and number of rows.
2881 Now, the current physical table size is obtained from the kernel,
2882 and the number of rows is estimated by multiplying the table size
2883 by the row density (rows per page) seen by the last
2884 <command>VACUUM</command> or <command>ANALYZE</command>. This should
2885 produce more reliable estimates in cases where the table size has
2886 changed significantly since the last housekeeping command.
2892 Improved index usage with <literal>OR</> clauses (Tom)
2895 This allows the optimizer to use indexes in statements with many OR
2896 clauses that would not have been indexed in the past. It can also use
2897 multi-column indexes where the first column is specified and the second
2898 column is part of an <literal>OR</> clause.
2904 Improve matching of partial index clauses (Tom)
2907 The server is now smarter about using partial indexes in queries
2908 involving complex <option>WHERE</> clauses.
2914 Improve performance of the GEQO optimizer (Tom)
2917 The GEQO optimizer is used to plan queries involving many tables (by
2918 default, twelve or more). This release speeds up the way queries are
2919 analyzed to decrease time spent in optimization.
2925 Miscellaneous optimizer improvements
2928 There is not room here to list all the minor improvements made, but
2929 numerous special cases work better than in prior releases.
2935 Improve lookup speed for C functions (Tom)
2938 This release uses a hash table to lookup information for dynamically
2939 loaded C functions. This improves their speed so they perform nearly as
2940 quickly as functions that are built into the server executable.
2946 Add type-specific <command>ANALYZE</command> statistics
2947 capability (Mark Cave-Ayland)
2950 This feature allows more flexibility in generating statistics
2951 for non-standard data types.
2957 <command>ANALYZE</command> now collects statistics for
2958 expression indexes (Tom)
2961 Expression indexes (also called functional indexes) allow users to
2962 index not just columns but the results of expressions and function
2963 calls. With this release, the optimizer can gather and use statistics
2964 about the contents of expression indexes. This will greatly improve
2965 the quality of planning for queries in which an expression index is
2972 New two-stage sampling method for <command>ANALYZE</command>
2976 This gives better statistics when the density of valid rows is very
2977 different in different regions of a table.
2983 Speed up <command>TRUNCATE</command> (Tom)
2986 This buys back some of the performance loss observed in 7.4, while still
2987 keeping <command>TRUNCATE</command> transaction-safe.
2996 <title>Server Changes</title>
3001 Add WAL file archiving and point-in-time recovery (Simon Riggs)
3007 Add tablespaces so admins can control disk layout (Gavin)
3013 Add a built-in log rotation program (Andreas Pflug)
3016 It is now possible to log server messages conveniently without
3017 relying on either <application>syslog</> or an external log
3024 Add new read-only server configuration parameters to show server
3025 compile-time settings: <varname>block_size</>,
3026 <varname>integer_datetimes</>, <varname>max_function_args</>,
3027 <varname>max_identifier_length</>, <varname>max_index_keys</> (Joe)
3033 Make quoting of <literal>sameuser</>, <literal>samegroup</>, and
3034 <literal>all</> remove special meaning of these terms in
3035 <filename>pg_hba.conf</> (Andrew)
3041 Use clearer IPv6 name <literal>::1/128</> for
3042 <literal>localhost</> in default <filename>pg_hba.conf</> (Andrew)
3048 Use CIDR format in <filename>pg_hba.conf</> examples (Andrew)
3054 Rename server configuration parameters <varname>SortMem</> and
3055 <varname>VacuumMem</> to <varname>work_mem</> and
3056 <varname>maintenance_work_mem</> (Old names still supported) (Tom)
3059 This change was made to clarify that bulk operations such as index and
3060 foreign key creation use <varname>maintenance_work_mem</>, while
3061 <varname>work_mem</> is for workspaces used during query execution.
3067 Allow logging of session disconnections using server configuration
3068 <varname>log_disconnections</> (Andrew)
3074 Add new server configuration parameter <varname>log_line_prefix</> to
3075 allow control of information emitted in each log line (Andrew)
3078 Available information includes user name, database name, remote IP
3079 address, and session start time.
3085 Remove server configuration parameters <varname>log_pid</>,
3086 <varname>log_timestamp</>, <varname>log_source_port</>; functionality
3087 superseded by <varname>log_line_prefix</> (Andrew)
3093 Replace the <varname>virtual_host</> and <varname>tcpip_socket</>
3094 parameters with a unified <varname>listen_addresses</> parameter
3098 <varname>virtual_host</> could only specify a single IP address to
3099 listen on. <varname>listen_addresses</> allows multiple addresses
3106 Listen on localhost by default, which eliminates the need for the
3107 <option>-i</> postmaster switch in many scenarios (Andrew)
3110 Listening on localhost (<literal>127.0.0.1</>) opens no new
3111 security holes but allows configurations like Windows and JDBC,
3112 which do not support local sockets, to work without special
3119 Remove <varname>syslog</> server configuration parameter, and add more
3120 logical <varname>log_destination</> variable to control log output
3127 Change server configuration parameter <varname>log_statement</> to take
3128 values <varname>all</>, <varname>mod</>, <varname>ddl</>, or
3129 <varname>none</> to select which queries are logged (Bruce)
3132 This allows administrators to log only data definition changes or
3133 only data modification statements.
3139 Some logging-related configuration parameters could formerly be adjusted
3140 by ordinary users, but only in the <quote>more verbose</> direction.
3141 They are now treated more strictly: only superusers can set them.
3142 However, a superuser may use <command>ALTER USER</> to provide per-user
3143 settings of these values for non-superusers. Also, it is now possible
3144 for superusers to set values of superuser-only configuration parameters
3145 via <literal>PGOPTIONS</>.
3151 Allow configuration files to be placed outside the data directory (mlw)
3154 By default, configuration files are kept in the cluster's top directory.
3155 With this addition, configuration files can be placed outside the
3156 data directory, easing administration.
3162 Plan prepared queries only when first executed so constants can be
3163 used for statistics (Oliver Jowett)
3166 Prepared statements plan queries once and execute them many
3167 times. While prepared queries avoid the overhead of re-planning
3168 on each use, the quality of the plan suffers from not knowing the exact
3169 parameters to be used in the query. In this release, planning of
3170 unnamed prepared statements is delayed until the first execution,
3171 and the actual parameter values of that execution are used as
3172 optimization hints. This allows use of out-of-line parameter passing
3173 without incurring a performance penalty.
3179 Allow <command>DECLARE CURSOR</command> to take parameters
3183 It is now useful to issue <command>DECLARE CURSOR</command> in a
3184 <function>Parse</> message with parameters. The parameter values
3185 sent at <function>Bind</> time will be substituted into the
3186 execution of the cursor's query.
3192 Fix hash joins and aggregates of <type>inet</type> and
3193 <type>cidr</type> data types (Tom)
3196 Release 7.4 handled hashing of mixed <type>inet</type> and
3197 <type>cidr</type> values incorrectly. (This bug did not exist
3198 in prior releases because they wouldn't try to hash either
3205 Make <varname>log_duration</> print only when <varname>log_statement</>
3206 prints the query (Ed L.)
3215 <title>Query Changes</title>
3220 Add savepoints (nested transactions) (Alvaro)
3226 Unsupported isolation levels are now accepted and promoted to the
3227 nearest supported level (Peter)
3230 The SQL specification states that if a database doesn't support a
3231 specific isolation level, it should use the next more restrictive level.
3232 This change complies with that recommendation.
3238 Allow <command>BEGIN WORK</command> to specify transaction
3239 isolation levels like <command>START TRANSACTION</command> does
3246 Fix table permission checking for cases in which rules generate
3247 a query type different from the originally submitted query (Tom)
3253 Implement dollar quoting to simplify single-quote usage (Andrew, Tom,
3257 In previous releases, because single quotes had to be used to
3258 quote a function's body, the use of single quotes inside the
3259 function text required use of two single quotes or other error-prone
3260 notations. With this release we add the ability to use "dollar
3261 quoting" to quote a block of text. The ability to use different
3262 quoting delimiters at different nesting levels greatly simplifies
3263 the task of quoting correctly, especially in complex functions.
3264 Dollar quoting can be used anywhere quoted text is needed.
3270 Make <literal>CASE val WHEN compval1 THEN ...</> evaluate <literal>val</> only once (Tom)
3273 <option>CASE</> no longer evaluates the tested expression multiple
3274 times. This has benefits when the expression is complex or is
3281 Test <option>HAVING</> before computing target list of an
3282 aggregate query (Tom)
3285 Fixes improper failure of cases such as <literal>SELECT SUM(win)/SUM(lose)
3286 ... GROUP BY ... HAVING SUM(lose) > 0</>. This should work but formerly
3287 could fail with divide-by-zero.
3293 Replace <varname>max_expr_depth</> parameter with
3294 <varname>max_stack_depth</> parameter, measured in kilobytes of stack
3298 This gives us a fairly bulletproof defense against crashing due to
3299 runaway recursive functions. Instead of measuring the depth of expression
3300 nesting, we now directly measure the size of the execution stack.
3306 Allow arbitrary row expressions (Tom)
3309 This release allows SQL expressions to contain arbitrary composite
3310 types, that is, row values. It also allows functions to more easily
3311 take rows as arguments and return row values.
3317 Allow <option>LIKE</>/<option>ILIKE</> to be used as the operator
3318 in row and subselect comparisons (Fabien Coelho)
3324 Avoid locale-specific case conversion of basic ASCII letters in
3325 identifiers and keywords (Tom)
3328 This solves the <quote>Turkish problem</> with mangling of words
3329 containing <literal>I</> and <literal>i</>. Folding of characters
3330 outside the 7-bit-ASCII set is still locale-aware.
3336 Improve syntax error reporting (Fabien, Tom)
3339 Syntax error reports are more useful than before.
3345 Change <command>EXECUTE</command> to return a completion tag
3346 matching the executed statement (Kris Jurka)
3349 Previous releases return an <command>EXECUTE</command> tag for
3350 any <command>EXECUTE</command> call. In this release, the tag
3351 returned will reflect the command executed.
3357 Avoid emitting <option>NATURAL CROSS JOIN</> in rule listings (Tom)
3360 Such a clause makes no logical sense, but in some cases the rule
3361 decompiler formerly produced this syntax.
3370 <title>Object Manipulation Changes</title>
3375 Add <command>COMMENT ON</> for casts, conversions, languages,
3376 operator classes, and large objects (Christopher)
3382 Add new server configuration parameter <varname>default_with_oids</> to
3383 control whether tables are created with <type>OID</>s by default (Neil)
3386 This allows administrators to control whether <command>CREATE
3387 TABLE</command> commands create tables with or without <type>OID</>
3388 columns by default. (Note: the current factory default setting for
3389 <varname>default_with_oids</> is <literal>TRUE</>, but the default
3390 will become <literal>FALSE</> in future releases.)
3396 Add <option>WITH</> / <option>WITHOUT OIDS</> clause to
3397 <command>CREATE TABLE AS</command> (Neil)
3403 Allow <command>ALTER TABLE DROP COLUMN</> to drop an <type>OID</>
3404 column (<command>ALTER TABLE SET WITHOUT OIDS</> still works)
3411 Allow composite types as table columns (Tom)
3417 Allow <command>ALTER ... ADD COLUMN</> with defaults and
3418 <option>NOT NULL</> constraints; works per SQL spec (Rod)
3421 It is now possible for <option>ADD COLUMN</> to create a column
3422 that is not initially filled with NULLs, but with a specified
3429 Add <command>ALTER COLUMN TYPE</> to change column's type (Rod)
3432 It is now possible to alter a column's data type without dropping
3433 and re-adding the column.
3439 Allow multiple <command>ALTER</> actions in a single <command>ALTER
3440 TABLE</command> command (Rod)
3443 This is particularly useful for <command>ALTER</> commands that
3444 rewrite the table (which include <option>ALTER COLUMN TYPE</> and
3445 <option>ADD COLUMN</> with a default). By grouping
3446 <command>ALTER</> commands together, the table need be rewritten
3453 Allow <command>ALTER TABLE</command> to add <type>SERIAL</type>
3457 This falls out from the new capability of specifying defaults for new
3464 Allow changing the owners of aggregates, conversions, databases,
3465 functions, operators, operator classes, schemas, types, and tablespaces
3466 (Christopher, Euler Taveira de Oliveira)
3469 Previously this required modifying the system tables directly.
3475 Allow temporary object creation to be limited to <option>SECURITY
3476 DEFINER</> functions (Sean Chittenden)
3482 Add <option>ALTER TABLE ... SET WITHOUT CLUSTER</> (Christopher)
3485 Prior to this release, there was no way to clear an auto-cluster
3486 specification except to modify the system tables.
3492 Constraint/Index/<type>SERIAL</> names are now
3493 <replaceable>table_column_type</>
3494 with numbers appended to guarantee uniqueness within the schema
3498 The SQL specification states that such names should be unique
3505 Add <function>pg_get_serial_sequence()</> to return a
3506 <type>SERIAL</> column's sequence name (Christopher)
3509 This allows automated scripts to reliably find the <type>SERIAL</>
3516 Warn when primary/foreign key data type mismatch requires costly lookup
3522 New <command>ALTER INDEX</> command to allow moving of indexes
3523 between tablespaces (Gavin)
3529 Make <command>ALTER TABLE OWNER</> change dependent sequence
3530 ownership too (Alvaro)
3540 <title>Utility Command Changes</title>
3545 Allow <command>CREATE SCHEMA</command> to create triggers,
3546 indexes, and sequences (Neil)
3552 Add <option>ALSO</> keyword to <command>CREATE RULE</command> (Fabien
3556 This allows <option>ALSO</> to be added to rule creation to contrast it with
3557 <option>INSTEAD</> rules.
3563 Add <option>NOWAIT</> option to <command>LOCK</command> (Tatsuo)
3566 This allows the <command>LOCK</command> command to fail if it
3567 would have to wait for the requested lock.
3573 Allow <command>COPY</command> to read and write
3574 comma-separated-value (CSV) files (Andrew, Bruce)
3580 Generate error if the <command>COPY</command> delimiter and NULL
3581 string conflict (Bruce)
3587 <command>GRANT</command>/<command>REVOKE</command> behavior
3588 follows the SQL spec more closely
3594 Avoid locking conflict between <command>CREATE INDEX</command>
3595 and <command>CHECKPOINT</command> (Tom)
3598 In 7.3 and 7.4, a long-running B-tree index build could block concurrent
3599 <command>CHECKPOINT</>s from completing, thereby causing WAL bloat because the
3600 WAL log could not be recycled.
3606 Database-wide <command>ANALYZE</command> does not hold locks
3610 This reduces the potential for deadlocks against other backends
3611 that want exclusive locks on tables. To get the benefit of this
3612 change, do not execute database-wide <command>ANALYZE</command>
3613 inside a transaction block (<command>BEGIN</command> block); it
3614 must be able to commit and start a new transaction for each
3621 <command>REINDEX</command> does not exclusively lock the index's
3622 parent table anymore
3625 The index itself is still exclusively locked, but readers of the
3626 table can continue if they are not using the particular index
3633 Erase MD5 user passwords when a user is renamed (Bruce)
3636 <productname>PostgreSQL</productname> uses the user name as salt
3637 when encrypting passwords via MD5. When a user's name is changed,
3638 the salt will no longer match the stored MD5 password, so the
3639 stored password becomes useless. In this release a notice is
3640 generated and the password is cleared. A new password must then
3641 be assigned if the user is to be able to log in with a password.
3647 New <application>pg_ctl</> <option>kill</> option for Windows (Andrew)
3650 Windows does not have a <literal>kill</> command to send signals to
3651 backends so this capability was added to <application>pg_ctl</>.
3657 Information schema improvements
3663 Add <option>--pwfile</> option to
3664 <application>initdb</application> so the initial password can be
3665 set by GUI tools (Magnus)
3671 Detect locale/encoding mismatch in
3672 <application>initdb</application> (Peter)
3678 Add <option>register</> command to <application>pg_ctl</> to
3679 register Windows operating system service (Dave Page)
3688 <title>Data Type and Function Changes</title>
3693 More complete support for composite types (row types) (Tom)
3696 Composite values can be used in many places where only scalar values
3703 Reject non-rectangular array values as erroneous (Joe)
3706 Formerly, <function>array_in</> would silently build a
3713 Overflow in integer arithmetic operations is now detected (Tom)
3719 The arithmetic operators associated with the single-byte
3720 <type>"char"</> data type have been removed.
3723 Formerly, the parser would select these operators in many situations
3724 where an <quote>unable to select an operator</> error would be more
3725 appropriate, such as <literal>null * null</>. If you actually want
3726 to do arithmetic on a <type>"char"</> column, you can cast it to
3733 Syntax checking of array input values considerably tightened up (Joe)
3736 Junk that was previously allowed in odd places with odd results
3737 now causes an <literal>ERROR</>, for example, non-whitespace
3738 after the closing right brace.
3744 Empty-string array element values must now be written as
3745 <literal>""</>, rather than writing nothing (Joe)
3748 Formerly, both ways of writing an empty-string element value were
3749 allowed, but now a quoted empty string is required. The case where
3750 nothing at all appears will probably be considered to be a NULL
3751 element value in some future release.
3757 Array element trailing whitespace is now ignored (Joe)
3760 Formerly leading whitespace was ignored, but trailing whitespace
3761 between an element value and the delimiter or right brace was
3762 significant. Now trailing whitespace is also ignored.
3768 Emit array values with explicit array bounds when lower bound is not one
3775 Accept <literal>YYYY-monthname-DD</> as a date string (Tom)
3781 Make <function>netmask</> and <function>hostmask</> functions
3782 return maximum-length mask length (Tom)
3788 Change factorial function to return <type>numeric</type> (Gavin)
3791 Returning <type>numeric</type> allows the factorial function to
3792 work for a wider range of input values.
3798 <function>to_char</>/<function>to_date()</> date conversion
3799 improvements (Kurt Roeckx, Fabien Coelho)
3805 Make <function>length()</> disregard trailing spaces in
3806 <type>CHAR(n)</> (Gavin)
3809 This change was made to improve consistency: trailing spaces are
3810 semantically insignificant in <type>CHAR(n)</> data, so they
3811 should not be counted by <function>length()</>.
3817 Warn about empty string being passed to
3818 <type>OID</>/<type>float4</>/<type>float8</> data types (Neil)
3821 8.1 will throw an error instead.
3827 Allow leading or trailing whitespace in
3828 <type>int2</>/<type>int4</>/<type>int8</>/<type>float4</>/<type>float8</>
3836 Better support for IEEE <literal>Infinity</> and <literal>NaN</>
3837 values in <type>float4</type>/<type>float8</type> (Neil)
3840 These should now work on all platforms that support IEEE-compliant
3841 floating point arithmetic.
3847 Add <option>week</> option to <function>date_trunc()</> (Robert Creager)
3853 Fix <function>to_char</function> for <literal>1 BC</>
3854 (previously it returned <literal>1 AD</>) (Bruce)
3860 Fix <function>date_part(year)</> for BC dates (previously it
3861 returned one less than the correct year) (Bruce)
3867 Fix <function>date_part()</> to return the proper millennium and
3868 century (Fabien Coelho)
3871 In previous versions, the century and millennium results had a wrong
3872 number and started in the wrong year, as compared to standard
3873 reckoning of such things.
3879 Add <function>ceiling()</> as an alias for <function>ceil()</>,
3880 and <function>power()</> as an alias for <function>pow()</> for
3881 standards compliance (Neil)
3887 Change <function>ln()</>, <function>log()</>,
3888 <function>power()</>, and <function>sqrt()</> to emit the correct
3889 <literal>SQLSTATE</> error codes for certain error conditions, as
3890 specified by SQL:2003 (Neil)
3896 Add <function>width_bucket()</> function as defined by SQL:2003 (Neil)
3902 Add <function>generate_series()</> functions to simplify working
3903 with numeric sets (Joe)
3909 Fix <function>upper/lower/initcap()</> functions to work with
3910 multibyte encodings (Tom)
3916 Add boolean and bitwise integer <option>AND</>/<option>OR</>
3917 aggregates (Fabien Coelho)
3923 New session information functions to return network addresses for client
3924 and server (Sean Chittenden)
3930 Add function to determine the area of a closed path (Sean Chittenden)
3936 Add function to send cancel request to other backends (Magnus)
3942 Add <type>interval</> plus <type>datetime</> operators (Tom)
3945 The reverse ordering, <type>datetime</> plus <type>interval</>,
3946 was already supported, but both are required by the SQL standard.
3952 Casting an integer to <type>BIT(N)</> selects the rightmost N bits
3957 In prior releases, the leftmost N bits were selected, but this was
3958 deemed unhelpful, not to mention inconsistent with casting from bit
3965 Require <type>CIDR</> values to have all non-masked bits be zero
3975 <title>Server-Side Language Changes</title>
3980 In <literal>READ COMMITTED</> serialization mode, volatile functions
3981 now see the results of concurrent transactions committed up to the
3982 beginning of each statement within the function, rather than up to the
3983 beginning of the interactive command that called the function.
3989 Functions declared <literal>STABLE</> or <literal>IMMUTABLE</> always
3990 use the snapshot of the calling query, and therefore do not see the
3991 effects of actions taken after the calling query starts, whether in
3992 their own transaction or other transactions. Such a function must be
3993 read-only, too, meaning that it cannot use any SQL commands other than
3994 <command>SELECT</>. There is a considerable performance gain from
3995 declaring a function <literal>STABLE</> or <literal>IMMUTABLE</>
3996 rather than <literal>VOLATILE</>.
4002 Non-deferred <option>AFTER</> triggers are now fired immediately
4003 after completion of the triggering query, rather than upon
4004 finishing the current interactive command. This makes a difference
4005 when the triggering query occurred within a function: the trigger
4006 is invoked before the function proceeds to its next operation. For
4007 example, if a function inserts a new row into a table, any
4008 non-deferred foreign key checks occur before proceeding with the
4015 Allow function parameters to be declared with names (Dennis Bjorklund)
4018 This allows better documentation of functions. Whether the names
4019 actually do anything depends on the specific function language
4026 Allow PL/pgSQL parameter names to be referenced in the function (Dennis Bjorklund)
4029 This basically creates an automatic alias for each named parameter.
4035 Do minimal syntax checking of PL/pgSQL functions at creation time (Tom)
4038 This allows us to catch simple syntax errors sooner.
4044 More support for composite types (row and record variables) in PL/pgSQL
4047 For example, it now works to pass a rowtype variable to another function
4048 as a single variable.
4054 Default values for PL/pgSQL variables can now reference previously
4061 Improve parsing of PL/pgSQL FOR loops (Tom)
4064 Parsing is now driven by presence of <literal>".."</> rather than
4065 data type of <option>FOR</> variable. This makes no difference for
4066 correct functions, but should result in more understandable error
4067 messages when a mistake is made.
4073 Major overhaul of PL/Perl server-side language (Command Prompt, Andrew Dunstan)
4079 In PL/Tcl, SPI commands are now run in subtransactions. If an error
4080 occurs, the subtransaction is cleaned up and the error is reported
4081 as an ordinary Tcl error, which can be trapped with <literal>catch</>.
4082 Formerly, it was not possible to catch such errors.
4088 Accept <command>ELSEIF</> in PL/pgSQL (Neil)
4091 Previously PL/pgSQL only allowed <command>ELSIF</>, but many people
4092 are accustomed to spelling this keyword <command>ELSEIF</>.
4101 <title><application>psql</> Changes</title>
4106 Improve <application>psql</> information display about database
4107 objects (Christopher)
4113 Allow <application>psql</> to display group membership in
4114 <command>\du</> and <command>\dg</> (Markus Bertheau)
4120 Prevent <application>psql</> <command>\dn</command> from showing
4121 temporary schemas (Bruce)
4127 Allow <application>psql</> to handle tilde user expansion for file
4134 Allow <application>psql</> to display fancy prompts, including
4135 color, via <application>readline</> (Reece Hart, Chet Ramey)
4141 Make <application>psql</> <command>\copy</> match <command>COPY</command> command syntax
4148 Show the location of syntax errors (Fabien Coelho, Tom)
4154 Add <command>CLUSTER</command> information to <application>psql</>
4155 <command>\d</> display
4162 Change <application>psql</> <command>\copy stdin/stdout</> to read
4163 from command input/output (Bruce)
4169 Add <option>pstdin</>/<option>pstdout</> to read from
4170 <application>psql</>'s <literal>stdin</>/<literal>stdout</> (Mark
4177 Add global <application>psql</> configuration file, <filename>psqlrc.sample</filename>
4181 This allows a central file where global <application>psql</> startup commands can
4188 Have <application>psql</> <command>\d+</> indicate if the table
4189 has an <type>OID</> column (Neil)
4195 On Windows, use binary mode in <application>psql</> when reading files so control-Z
4196 is not seen as end-of-file
4202 Have <command>\dn+</> show permissions and description for schemas (Dennis
4209 Improve tab completion support (Stefan Kaltenbrunn, Greg Sabino Mullane)
4215 Allow boolean settings to be set using upper or lower case (Michael Paesold)
4224 <title><application>pg_dump</> Changes</title>
4229 Use dependency information to improve the reliability of
4230 <application>pg_dump</> (Tom)
4233 This should solve the longstanding problems with related objects
4234 sometimes being dumped in the wrong order.
4240 Have <application>pg_dump</> output objects in alphabetical order if possible (Tom)
4243 This should make it easier to identify changes between
4250 Allow <application>pg_restore</> to ignore some SQL errors (Fabien Coelho)
4253 This makes <application>pg_restore</>'s behavior similar to the
4254 results of feeding a <application>pg_dump</> output script to
4255 <application>psql</>. In most cases, ignoring errors and plowing
4256 ahead is the most useful thing to do. Also added was a pg_restore
4257 option to give the old behavior of exiting on an error.
4263 <application>pg_restore</> <option>-l</> display now includes
4264 objects' schema names
4270 New begin/end markers in <application>pg_dump</> text output (Bruce)
4276 Add start/stop times for
4277 <application>pg_dump</>/<application>pg_dumpall</> in verbose mode
4284 Allow most <application>pg_dump</> options in
4285 <application>pg_dumpall</> (Christopher)
4291 Have <application>pg_dump</> use <command>ALTER OWNER</> rather
4292 than <command>SET SESSION AUTHORIZATION</> by default
4302 <title>libpq Changes</title>
4307 Make libpq's <option>SIGPIPE</> handling thread-safe (Bruce)
4313 Add <function>PQmbdsplen()</> which returns the display length
4314 of a character (Tatsuo)
4320 Add thread locking to <application>SSL</> and
4321 <application>Kerberos</> connections (Manfred Spraul)
4327 Allow <function>PQoidValue()</>, <function>PQcmdTuples()</>, and
4328 <function>PQoidStatus()</> to work on <command>EXECUTE</command>
4335 Add <function>PQserverVersion()</> to provide more convenient
4336 access to the server version number (Greg Sabino Mullane)
4342 Add <function>PQprepare/PQsendPrepared()</> functions to support
4343 preparing statements without necessarily specifying the data types
4344 of their parameters (Abhijit Menon-Sen)
4350 Many ECPG improvements, including <command>SET DESCRIPTOR</> (Michael)
4359 <title>Source Code Changes</title>
4364 Allow the database server to run natively on Windows (Claudio, Magnus, Andrew)
4370 Shell script commands converted to C versions for Windows support (Andrew)
4376 Create an extension makefile framework (Fabien Coelho, Peter)
4379 This simplifies the task of building extensions outside the original
4386 Support relocatable installations (Bruce)
4389 Directory paths for installed files (such as the
4390 <filename>/share</> directory) are now computed relative to the
4391 actual location of the executables, so that an installation tree
4392 can be moved to another place without reconfiguring and
4399 Use <option>--with-docdir</> to choose installation location of documentation; also
4400 allow <option>--infodir</> (Peter)
4406 Add <option>--without-docdir</> to prevent installation of documentation (Peter)
4412 Upgrade to <application>DocBook</> V4.2 SGML (Peter)
4418 New <literal>PostgreSQL</> <application>CVS</> tag (Marc)
4421 This was done to make it easier for organizations to manage their
4422 own copies of the <productname>PostgreSQL</productname>
4423 <application>CVS</> repository. File version stamps from the master
4424 repository will not get munged by checking into or out of a copied
4431 Clarify locking code (Manfred Koizar)
4437 Buffer manager cleanup (Neil)
4443 Decouple platform tests from CPU spinlock code (Bruce, Tom)
4449 Add inlined test-and-set code on PA-RISC for <application>gcc</>
4456 Improve i386 spinlock code (Manfred Spraul)
4462 Clean up spinlock assembly code to avoid warnings from newer
4463 <application>gcc</> releases (Tom)
4469 Remove JDBC from source tree; now a separate project
4475 Remove the libpgtcl client interface; now a separate project
4481 More accurately estimate memory and file descriptor usage (Tom)
4487 Improvements to the Mac OS X startup scripts (Ray A.)
4493 New <function>fsync()</> test program (Bruce)
4499 Major documentation improvements (Neil, Peter)
4505 Remove <application>pg_encoding</application>; not needed
4512 Remove <application>pg_id</application>; not needed anymore
4518 Remove <application>initlocation</application>; not needed
4525 Auto-detect thread flags (no more manual testing) (Bruce)
4531 Use Olson's public domain <application>timezone</> library (Magnus)
4537 With threading enabled, use thread flags on Unixware for
4538 backend executables too (Bruce)
4541 Unixware cannot mix threaded and non-threaded object files in the
4542 same executable, so everything must be compiled as threaded.
4548 <application>psql</> now uses a <application>flex</>-generated
4549 lexical analyzer to process command strings
4555 Reimplement the linked list data structure used throughout the
4559 This improves performance by allowing list append and length
4560 operations to be more efficient.
4566 Allow dynamically loaded modules to create their own server configuration
4567 parameters (Thomas Hallgren)
4573 New Brazilian version of FAQ (Euler Taveira de Oliveira)
4579 Add French FAQ (Guillaume Lelarge)
4585 New <application>pgevent</> for Windows logging
4591 Make libpq and ECPG build as proper shared libraries on OS X (Tom)
4600 <title>Contrib Changes</title>
4605 Overhaul of <filename>contrib/dblink</> (Joe)
4611 <filename>contrib/dbmirror</> improvements (Steven Singer)
4617 New <filename>contrib/xml2</> (John Gray, Torchbox)
4623 Updated <filename>contrib/mysql</filename>
4629 New version of <filename>contrib/btree_gist</> (Teodor)
4635 New <filename>contrib/trgm</>, trigram matching for
4636 <productname>PostgreSQL</productname> (Teodor)
4642 Many <filename>contrib/tsearch2</> improvements (Teodor)
4648 Add double metaphone to <filename>contrib/fuzzystrmatch</> (Andrew)
4654 Allow <filename>contrib/pg_autovacuum</> to run as a Windows service (Dave Page)
4660 Add functions to <filename>contrib/dbsize</> (Andreas Pflug)
4666 Removed <filename>contrib/pg_logger</>: obsoleted by integrated logging
4673 Removed <filename>contrib/rserv</>: obsoleted by various separate projects
4683 <sect1 id="release-7-4-8">
4684 <title>Release 7.4.8</title>
4687 <title>Release date</title>
4688 <simpara>2005-05-09</simpara>
4692 This release contains a variety of fixes from 7.4.7, including several
4693 security-related issues.
4697 <title>Migration to version 7.4.8</title>
4700 A dump/restore is not required for those running 7.4.X. However,
4701 it is one possible way of handling two significant security problems
4702 that have been found in the initial contents of 7.4.X system
4703 catalogs. A dump/initdb/reload sequence using 7.4.8's initdb will
4704 automatically correct these problems.
4708 The larger security problem is that the built-in character set encoding
4709 conversion functions can be invoked from SQL commands by unprivileged
4710 users, but the functions were not designed for such use and are not
4711 secure against malicious choices of arguments. The fix involves changing
4712 the declared parameter list of these functions so that they can no longer
4713 be invoked from SQL commands. (This does not affect their normal use
4714 by the encoding conversion machinery.)
4718 The lesser problem is that the <filename>contrib/tsearch2</> module
4719 creates several functions that are misdeclared to return
4720 <type>internal</> when they do not accept <type>internal</> arguments.
4721 This breaks type safety for all functions using <type>internal</>
4726 It is strongly recommended that all installations repair these errors,
4727 either by initdb or by following the manual repair procedures given
4728 below. The errors at least allow unprivileged database users to crash
4729 their server process, and may allow unprivileged users to gain the
4730 privileges of a database superuser.
4734 If you wish not to do an initdb, perform the following procedures instead.
4735 As the database superuser, do:
4739 UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
4740 WHERE pronamespace = 11 AND pronargs = 5
4741 AND proargtypes[2] = 'cstring'::regtype;
4742 -- The command should report having updated 90 rows;
4743 -- if not, rollback and investigate instead of committing!
4747 Next, if you have installed <filename>contrib/tsearch2</>, do
4751 UPDATE pg_proc SET proargtypes[0] = 'internal'::regtype
4753 'dex_init(text)'::regprocedure,
4754 'snb_en_init(text)'::regprocedure,
4755 'snb_ru_init(text)'::regprocedure,
4756 'spell_init(text)'::regprocedure,
4757 'syn_init(text)'::regprocedure
4759 -- The command should report having updated 5 rows;
4760 -- if not, rollback and investigate instead of committing!
4764 If this command fails with a message like <quote>function
4765 "dex_init(text)" does not exist</>, then either <filename>tsearch2</>
4766 is not installed in this database, or you already did the update.
4770 The above procedures must be carried out in <emphasis>each</> database
4771 of an installation, including <literal>template1</>, and ideally
4772 including <literal>template0</> as well. If you do not fix the
4773 template databases then any subsequently created databases will contain
4774 the same errors. <literal>template1</> can be fixed in the same way
4775 as any other database, but fixing <literal>template0</> requires
4776 additional steps. First, from any database issue
4778 UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
4780 Next connect to <literal>template0</> and perform the above repair
4781 procedures. Finally, do
4783 -- re-freeze template0:
4785 -- and protect it against future alterations:
4786 UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
4792 <title>Changes</title>
4795 <listitem><para>Change encoding function signature to prevent
4796 misuse</para></listitem>
4797 <listitem><para>Change <filename>contrib/tsearch2</> to avoid unsafe use of
4798 <type>INTERNAL</> function results</para></listitem>
4799 <listitem><para>Repair ancient race condition that allowed a transaction to be
4800 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
4801 than for other purposes</para>
4802 <para>This is an extremely serious bug since it could lead to apparent
4803 data inconsistencies being briefly visible to applications.</para></listitem>
4804 <listitem><para>Repair race condition between relation extension and
4806 <para>This could theoretically have caused loss of a page's worth of
4807 freshly-inserted data, although the scenario seems of very low probability.
4808 There are no known cases of it having caused more than an Assert failure.
4810 <listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
4812 The comparison code was wrong in the case where the
4813 <literal>--enable-integer-datetimes</> configuration switch had been used.
4814 NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
4815 it will need to be <command>REINDEX</>ed after installing this update, because
4816 the fix corrects the sort order of column values.
4818 <listitem><para>Fix <function>EXTRACT(EPOCH)</> for
4819 <type>TIME WITH TIME ZONE</> values</para></listitem>
4820 <listitem><para>Fix mis-display of negative fractional seconds in
4821 <type>INTERVAL</> values</para>
4823 This error only occurred when the
4824 <literal>--enable-integer-datetimes</> configuration switch had been used.
4826 <listitem><para>Ensure operations done during backend shutdown are counted by
4827 statistics collector</para>
4829 This is expected to resolve reports of <application>pg_autovacuum</>
4830 not vacuuming the system catalogs often enough — it was not being
4831 told about catalog deletions caused by temporary table removal during
4834 <listitem><para>Additional buffer overrun checks in plpgsql
4835 (Neil)</para></listitem>
4836 <listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
4837 correctly (Neil)</para></listitem>
4838 <listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
4839 (Marko Kreen)</para></listitem>
4840 <listitem><para>Still more 64-bit fixes for
4841 <filename>contrib/intagg</></para></listitem>
4842 <listitem><para>Prevent incorrect optimization of functions returning
4843 <type>RECORD</></para></listitem>
4844 <listitem><para>Prevent <function>to_char(interval)</> from dumping core for
4845 month-related formats</para></listitem>
4846 <listitem><para>Prevent crash on <literal>COALESCE(NULL,NULL)</></para></listitem>
4847 <listitem><para>Fix <function>array_map</> to call PL functions correctly</para></listitem>
4848 <listitem><para>Fix permission checking in <command>ALTER DATABASE RENAME</></para></listitem>
4849 <listitem><para>Fix <command>ALTER LANGUAGE RENAME</></para></listitem>
4850 <listitem><para>Make <function>RemoveFromWaitQueue</> clean up after itself</para>
4852 This fixes a lock management error that would only be visible if a transaction
4853 was kicked out of a wait for a lock (typically by query cancel) and then the
4854 holder of the lock released it within a very narrow window.
4856 <listitem><para>Fix problem with untyped parameter appearing in
4857 <command>INSERT ... SELECT</></para></listitem>
4858 <listitem><para>Fix <command>CLUSTER</> failure after
4859 <command>ALTER TABLE SET WITHOUT OIDS</></para></listitem>
4865 <sect1 id="release-7-4-7">
4866 <title>Release 7.4.7</title>
4869 <title>Release date</title>
4870 <simpara>2005-01-31</simpara>
4874 This release contains a variety of fixes from 7.4.6, including several
4875 security-related issues.
4879 <title>Migration to version 7.4.7</title>
4882 A dump/restore is not required for those running 7.4.X.
4887 <title>Changes</title>
4890 <listitem><para>Disallow <command>LOAD</> to non-superusers</para>
4892 On platforms that will automatically execute initialization functions of a
4893 shared library (this includes at least Windows and ELF-based Unixen),
4894 <command>LOAD</> can be used to make the server execute arbitrary code.
4895 Thanks to NGS Software for reporting this.</para></listitem>
4896 <listitem><para>Check that creator of an aggregate function has the right to
4897 execute the specified transition functions</para>
4899 This oversight made it possible to bypass denial of EXECUTE
4900 permission on a function.</para></listitem>
4901 <listitem><para>Fix security and 64-bit issues in
4902 contrib/intagg</para></listitem>
4903 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
4904 Jurka)</para></listitem>
4905 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
4906 many parameters (Neil)</para></listitem>
4907 <listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
4909 The result of the join was mistakenly supposed to be sorted the same as the
4910 left input. This could not only deliver mis-sorted output to the user, but
4911 in case of nested merge joins could give outright wrong answers.
4913 <listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
4914 <listitem><para>Fix display of negative intervals in SQL and GERMAN
4915 datestyles</para></listitem>
4916 <listitem><para>Make age(timestamptz) do calculation in local timezone not
4917 GMT</para></listitem>
4923 <sect1 id="release-7-4-6">
4924 <title>Release 7.4.6</title>
4927 <title>Release date</title>
4928 <simpara>2004-10-22</simpara>
4932 This release contains a variety of fixes from 7.4.5.
4937 <title>Migration to version 7.4.6</title>
4940 A dump/restore is not required for those running 7.4.X.
4945 <title>Changes</title>
4948 <listitem><para>Repair possible failure to update hint bits on disk</para>
4950 Under rare circumstances this oversight could lead to
4951 <quote>could not access transaction status</> failures, which qualifies
4952 it as a potential-data-loss bug.
4954 <listitem><para>Ensure that hashed outer join does not miss tuples</para>
4956 Very large left joins using a hash join plan could fail to output unmatched
4957 left-side rows given just the right data distribution.
4959 <listitem><para>Disallow running <application>pg_ctl</> as root</para>
4961 This is to guard against any possible security issues.
4963 <listitem><para>Avoid using temp files in <filename>/tmp</> in <command>make_oidjoins_check</command></para>
4965 This has been reported as a security issue, though it's hardly worthy of
4966 concern since there is no reason for non-developers to use this script anyway.
4968 <listitem><para>Prevent forced backend shutdown from re-emitting prior command
4971 In rare cases, a client might think that its last command had succeeded when
4972 it really had been aborted by forced database shutdown.
4974 <listitem><para>Repair bug in <function>pg_stat_get_backend_idset</function></para>
4976 This could lead to misbehavior in some of the system-statistics views.
4978 <listitem><para>Fix small memory leak in postmaster</para></listitem>
4979 <listitem><para>Fix <quote>expected both swapped tables to have TOAST
4980 tables</> bug</para>
4982 This could arise in cases such as CLUSTER after ALTER TABLE DROP COLUMN.
4984 <listitem><para>Prevent <literal>pg_ctl restart</> from adding <literal>-D</> multiple times</para></listitem>
4985 <listitem><para>Fix problem with NULL values in GiST indexes</para></listitem>
4986 <listitem><para><literal>::</> is no longer interpreted as a variable in an
4987 ECPG prepare statement</para></listitem>
4993 <sect1 id="release-7-4-5">
4994 <title>Release 7.4.5</title>
4997 <title>Release date</title>
4998 <simpara>2004-08-18</simpara>
5002 This release contains one serious bug fix over 7.4.4.
5007 <title>Migration to version 7.4.5</title>
5010 A dump/restore is not required for those running 7.4.X.
5015 <title>Changes</title>
5018 <listitem><para>Repair possible crash during concurrent B-tree index insertions</para>
5020 This patch fixes a rare case in which concurrent insertions into a B-tree index
5021 could result in a server panic. No permanent damage would result, but it's
5022 still worth a re-release. The bug does not exist in pre-7.4 releases.
5029 <sect1 id="release-7-4-4">
5030 <title>Release 7.4.4</title>
5033 <title>Release date</title>
5034 <simpara>2004-08-16</simpara>
5038 This release contains a variety of fixes from 7.4.3.
5043 <title>Migration to version 7.4.4</title>
5046 A dump/restore is not required for those running 7.4.X.
5051 <title>Changes</title>
5054 <listitem><para>Prevent possible loss of committed transactions during crash</para>
5056 Due to insufficient interlocking between transaction commit and checkpointing,
5057 it was possible for transactions committed just before the most recent
5058 checkpoint to be lost, in whole or in part, following a database crash and
5059 restart. This is a serious bug that has existed
5060 since <productname>PostgreSQL</productname> 7.1.
5062 <listitem><para>Check HAVING restriction before evaluating result list of an
5063 aggregate plan</para></listitem>
5064 <listitem><para>Avoid crash when session's current user ID is deleted</para></listitem>
5065 <listitem><para>Fix hashed crosstab for zero-rows case (Joe)</para></listitem>
5066 <listitem><para>Force cache update after renaming a column in a foreign key</para></listitem>
5067 <listitem><para>Pretty-print UNION queries correctly</para></listitem>
5068 <listitem><para>Make psql handle <literal>\r\n</> newlines properly in COPY IN</para></listitem>
5069 <listitem><para><application>pg_dump</> handled ACLs with grant options incorrectly</para></listitem>
5070 <listitem><para>Fix thread support for OS X and Solaris</para></listitem>
5071 <listitem><para>Updated JDBC driver (build 215) with various fixes</para></listitem>
5072 <listitem><para>ECPG fixes</para></listitem>
5073 <listitem><para>Translation updates (various contributors)</para></listitem>
5079 <sect1 id="release-7-4-3">
5080 <title>Release 7.4.3</title>
5083 <title>Release date</title>
5084 <simpara>2004-06-14</simpara>
5088 This release contains a variety of fixes from 7.4.2.
5093 <title>Migration to version 7.4.3</title>
5096 A dump/restore is not required for those running 7.4.X.
5101 <title>Changes</title>
5104 <listitem><para>Fix temporary memory leak when using non-hashed aggregates (Tom)</para></listitem>
5105 <listitem><para>ECPG fixes, including some for Informix compatibility (Michael)</para></listitem>
5106 <listitem><para>Fixes for compiling with thread-safety, particularly Solaris (Bruce)</para></listitem>
5107 <listitem><para>Fix error in COPY IN termination when using the old network protocol (ljb)</para></listitem>
5108 <listitem><para>Several important fixes in pg_autovacuum, including fixes for
5109 large tables, unsigned oids, stability, temp tables, and debug mode
5110 (Matthew T. O'Connor)</para></listitem>
5111 <listitem><para>Fix problem with reading tar-format dumps on NetBSD and BSD/OS (Bruce)</para></listitem>
5112 <listitem><para>Several JDBC fixes</para></listitem>
5113 <listitem><para>Fix ALTER SEQUENCE RESTART where last_value equals the restart value (Tom)</para></listitem>
5114 <listitem><para>Repair failure to recalculate nested sub-selects (Tom)</para></listitem>
5115 <listitem><para>Fix problems with non-constant expressions in LIMIT/OFFSET</para></listitem>
5116 <listitem><para>Support FULL JOIN with no join clause, such as X FULL JOIN Y ON TRUE (Tom)</para></listitem>
5117 <listitem><para>Fix another zero-column table bug (Tom)</para></listitem>
5118 <listitem><para>Improve handling of non-qualified identifiers in GROUP BY clauses in sub-selects (Tom)</para>
5120 Select-list aliases within the sub-select will now take precedence over
5121 names from outer query levels.
5123 <listitem><para>Do not generate <quote>NATURAL CROSS JOIN</> when decompiling rules (Tom)</para></listitem>
5124 <listitem><para>Add checks for invalid field length in binary COPY (Tom)</para>
5126 This fixes a difficult-to-exploit security hole.
5128 <listitem><para>Avoid locking conflict between <command>ANALYZE</command> and <command>LISTEN</command>/<command>NOTIFY</command></para></listitem>
5129 <listitem><para>Numerous translation updates (various contributors)</para></listitem>
5135 <sect1 id="release-7-4-2">
5136 <title>Release 7.4.2</title>
5139 <title>Release date</title>
5140 <simpara>2004-03-08</simpara>
5144 This release contains a variety of fixes from 7.4.1.
5149 <title>Migration to version 7.4.2</title>
5152 A dump/restore is not required for those running 7.4.X. However,
5153 it may be advisable as the easiest method of incorporating fixes for
5154 two errors that have been found in the initial contents of 7.4.X system
5155 catalogs. A dump/initdb/reload sequence using 7.4.2's initdb will
5156 automatically correct these problems.
5160 The more severe of the two errors is that data type <type>anyarray</>
5161 has the wrong alignment label; this is a problem because the
5162 <structname>pg_statistic</> system catalog uses <type>anyarray</>
5163 columns. The mislabeling can cause planner misestimations and even
5164 crashes when planning queries that involve <literal>WHERE</> clauses on
5165 double-aligned columns (such as <type>float8</> and <type>timestamp</>).
5166 It is strongly recommended that all installations repair this error,
5167 either by initdb or by following the manual repair procedure given
5172 The lesser error is that the system view <structname>pg_settings</>
5173 ought to be marked as having public update access, to allow
5174 <literal>UPDATE pg_settings</> to be used as a substitute for
5175 <command>SET</>. This can also be fixed either by initdb or manually,
5176 but it is not necessary to fix unless you want to use <literal>UPDATE
5181 If you wish not to do an initdb, the following procedure will work
5182 for fixing <structname>pg_statistic</>. As the database superuser,
5186 -- clear out old data in pg_statistic:
5187 DELETE FROM pg_statistic;
5188 VACUUM pg_statistic;
5189 -- this should update 1 row:
5190 UPDATE pg_type SET typalign = 'd' WHERE oid = 2277;
5191 -- this should update 6 rows:
5192 UPDATE pg_attribute SET attalign = 'd' WHERE atttypid = 2277;
5194 -- At this point you MUST start a fresh backend to avoid a crash!
5196 -- repopulate pg_statistic:
5200 This can be done in a live database, but beware that all backends
5201 running in the altered database must be restarted before it is safe to
5202 repopulate <structname>pg_statistic</>.
5206 To repair the <structname>pg_settings</> error, simply do:
5208 GRANT SELECT, UPDATE ON pg_settings TO PUBLIC;
5213 The above procedures must be carried out in <emphasis>each</> database
5214 of an installation, including <literal>template1</>, and ideally
5215 including <literal>template0</> as well. If you do not fix the
5216 template databases then any subsequently created databases will contain
5217 the same errors. <literal>template1</> can be fixed in the same way
5218 as any other database, but fixing <literal>template0</> requires
5219 additional steps. First, from any database issue
5221 UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
5223 Next connect to <literal>template0</> and perform the above repair
5224 procedures. Finally, do
5226 -- re-freeze template0:
5228 -- and protect it against future alterations:
5229 UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
5235 <title>Changes</title>
5238 Release 7.4.2 incorporates all the fixes included in release 7.3.6,
5239 plus the following fixes:
5243 <listitem><para>Fix <structname>pg_statistics</> alignment bug that could crash optimizer</para>
5244 <para>See above for details about this problem.</para></listitem>
5245 <listitem><para>Allow non-super users to update <structname>pg_settings</></para></listitem>
5246 <listitem><para>Fix several optimizer bugs, most of which led to
5247 <quote>variable not found in subplan target lists</> errors</para></listitem>
5248 <listitem><para>Avoid out-of-memory failure during startup of large multiple
5249 index scan</para></listitem>
5250 <listitem><para>Fix multibyte problem that could lead to <quote>out of
5251 memory</> error during <command>COPY IN</></para></listitem>
5252 <listitem><para>Fix problems with <command>SELECT INTO</> / <command>CREATE
5253 TABLE AS</> from tables without OIDs</para></listitem>
5254 <listitem><para>Fix problems with <filename>alter_table</> regression test
5255 during parallel testing</para></listitem>
5256 <listitem><para>Fix problems with hitting open file limit, especially on OS X (Tom)</para></listitem>
5257 <listitem><para>Partial fix for Turkish-locale issues</para>
5258 <para>initdb will succeed now in Turkish locale, but there are still some
5259 inconveniences associated with the <literal>i/I</> problem.</para></listitem>
5260 <listitem><para>Make pg_dump set client encoding on restore</para></listitem>
5261 <listitem><para>Other minor pg_dump fixes</para></listitem>
5262 <listitem><para>Allow ecpg to again use C keywords as column names (Michael)</para></listitem>
5263 <listitem><para>Added ecpg <literal>WHENEVER NOT_FOUND</> to
5264 <literal>SELECT/INSERT/UPDATE/DELETE</> (Michael)</para></listitem>
5265 <listitem><para>Fix ecpg crash for queries calling set-returning functions (Michael)</para></listitem>
5266 <listitem><para>Various other ecpg fixes (Michael)</para></listitem>
5267 <listitem><para>Fixes for Borland compiler</para></listitem>
5268 <listitem><para>Thread build improvements (Bruce)</para></listitem>
5269 <listitem><para>Various other build fixes</para></listitem>
5270 <listitem><para>Various JDBC fixes</para></listitem>
5276 <sect1 id="release-7-4-1">
5277 <title>Release 7.4.1</title>
5280 <title>Release date</title>
5281 <simpara>2003-12-22</simpara>
5285 This release contains a variety of fixes from 7.4.
5290 <title>Migration to version 7.4.1</title>
5293 A dump/restore is <emphasis>not</emphasis> required for those
5298 If you want to install the fixes in the information schema
5299 you need to reload it into the database.
5300 This is either accomplished by initializing a new cluster
5301 by running <command>initdb</command>, or by running the following
5302 sequence of SQL commands in each database (ideally including
5303 <literal>template1</literal>) as a superuser in
5304 <application>psql</application>, after installing the new release:
5306 DROP SCHEMA information_schema CASCADE;
5307 \i /usr/local/pgsql/share/information_schema.sql
5309 Substitute your installation path in the second command.
5315 <title>Changes</title>
5318 <listitem><para>Fixed bug in <command>CREATE SCHEMA</command> parsing in ECPG (Michael)</para></listitem>
5319 <listitem><para>Fix compile error when <option>--enable-thread-safety</option> and <option>--with-perl</option> are used together (Peter)</para></listitem>
5320 <listitem><para>Fix for subqueries that used hash joins (Tom)</para>
5322 Certain subqueries that used hash joins would crash because of
5323 improperly shared structures.
5325 <listitem><para>Fix free space map compaction bug (Tom)</para>
5327 This fixes a bug where compaction of the free space map could lead
5328 to a database server shutdown.
5331 <listitem><para>Fix for Borland compiler build of libpq (Bruce)</para></listitem>
5332 <listitem><para>Fix <function>netmask()</function> and <function>hostmask()</function> to return the maximum-length masklen (Tom)</para>
5334 Fix these functions to return values consistent with pre-7.4
5338 <listitem><para>Several <filename>contrib/pg_autovacuum</filename> fixes</para>
5340 Fixes include improper variable initialization, missing vacuum after
5341 <command>TRUNCATE</command>, and duration computation overflow for long vacuums.
5344 <listitem><para>Allow compile of <filename>contrib/cube</filename> under Cygwin (Jason Tishler)</para></listitem>
5345 <listitem><para>Fix Solaris use of password file when no passwords are defined (Tom)</para>
5347 Fix crash on Solaris caused by use of any type of password
5348 authentication when no passwords were defined.
5351 <listitem><para>JDBC fix for thread problems, other fixes</para></listitem>
5352 <listitem><para>Fix for <type>bytea</type> index lookups (Joe)</para></listitem>
5353 <listitem><para>Fix information schema for bit data types (Peter)</para></listitem>
5354 <listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
5355 <listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
5356 <listitem><para>Make <function>PQescapeBytea</function> and <function>byteaout</function> consistent with each other (Joe)</para></listitem>
5357 <listitem><para>Escape <type>bytea</type> output for bytes > 0x7e(Joe)</para>
5359 If different client encodings are used for <type>bytea</type> output and input, it
5360 is possible for <type>bytea</type> values to be corrupted by the differing
5361 encodings. This fix escapes all bytes that might be affected.
5364 <listitem><para>Added missing <function>SPI_finish()</function> calls to dblink's <function>get_tuple_of_interest()</function> (Joe)</para></listitem>
5365 <listitem><para>New Czech FAQ</para></listitem>
5366 <listitem><para>Fix information schema view <literal>constraint_column_usage</literal> for foreign keys (Peter)</para></listitem>
5367 <listitem><para>ECPG fixes (Michael)</para></listitem>
5368 <listitem><para>Fix bug with multiple <literal>IN</literal> subqueries and joins in the subqueries (Tom)</para></listitem>
5369 <listitem><para>Alllow <literal>COUNT('x')</literal> to work (Tom)</para></listitem>
5370 <listitem><para>Install ECPG include files for Informix compatibility into separate directory (Peter)</para>
5372 Some names of ECPG include files for Informix compatibility conflicted with operating system include files.
5373 By installing them in their own directory, name conflicts have been reduced.
5376 <listitem><para>Fix SSL memory leak (Neil)</para>
5378 This release fixes a bug in 7.4 where SSL didn't free all memory it allocated.
5381 <listitem><para>Prevent <filename>pg_service.conf</filename> from using service name as default dbname (Bruce)</para></listitem>
5382 <listitem><para>Fix local ident authentication on FreeBSD (Tom)</para></listitem>
5388 <sect1 id="release-7-4">
5389 <title>Release 7.4</title>
5392 <title>Release date</title>
5393 <simpara>2003-11-17</simpara>
5397 <title>Overview</title>
5400 Major changes in this release:
5406 <literal>IN</literal> / <literal>NOT IN</literal> subqueries are
5407 now much more efficient
5412 In previous releases, <literal>IN</literal>/<literal>NOT
5413 IN</literal> subqueries were joined to the upper query by
5414 sequentially scanning the subquery looking for a match. The
5415 7.4 code uses the same sophisticated techniques used by
5416 ordinary joins and so is much faster. An
5417 <literal>IN</literal> will now usually be as fast as or faster
5418 than an equivalent <literal>EXISTS</literal> subquery; this
5419 reverses the conventional wisdom that applied to previous
5427 Improved <literal>GROUP BY</literal> processing by using hash buckets
5432 In previous releases, rows to be grouped had to be sorted
5433 first. The 7.4 code can do <literal>GROUP BY</literal>
5434 without sorting, by accumulating results into a hash table
5435 with one entry per group. It will still use the sort
5436 technique, however, if the hash table is estimated to be too
5437 large to fit in <varname>sort_mem</>.
5444 New multikey hash join capability
5449 In previous releases, hash joins could only occur on single
5450 keys. This release allows multicolumn hash joins.
5457 Queries using the explicit <literal>JOIN</literal> syntax are
5458 now better optimized
5463 Prior releases evaluated queries using the explicit
5464 <literal>JOIN</literal> syntax only in the order implied by
5465 the syntax. 7.4 allows full optimization of these queries,
5466 meaning the optimizer considers all possible join orderings
5467 and chooses the most efficient. Outer joins, however, must
5468 still follow the declared ordering.
5475 Faster and more powerful regular expression code
5480 The entire regular expression module has been replaced with a
5481 new version by Henry Spencer, originally written for Tcl. The
5482 code greatly improves performance and supports several flavors
5483 of regular expressions.
5490 Function-inlining for simple SQL functions
5495 Simple SQL functions can now be inlined by including their SQL
5496 in the main query. This improves performance by eliminating
5497 per-call overhead. That means simple SQL functions now
5505 Full support for IPv6 connections and IPv6 address data types
5510 Previous releases allowed only IPv4 connections, and the IP
5511 data types only supported IPv4 addresses. This release adds
5512 full IPv6 support in both of these areas.
5519 Major improvements in SSL performance and reliability
5524 Several people very familiar with the SSL API have overhauled
5525 our SSL code to improve SSL key negotiation and error
5533 Make free space map efficiently reuse empty index pages,
5534 and other free space management improvements
5539 In previous releases, B-tree index pages that were left empty
5540 because of deleted rows could only be reused by rows with
5541 index values similar to the rows originally indexed on that
5542 page. In 7.4, <command>VACUUM</command> records empty index
5543 pages and allows them to be reused for any future index rows.
5550 SQL-standard information schema
5555 The information schema provides a standardized and stable way
5556 to access information about the schema objects defined in a
5564 Cursors conform more closely to the SQL standard
5569 The commands <command>FETCH</command> and
5570 <command>MOVE</command> have been overhauled to conform more
5571 closely to the SQL standard.
5578 Cursors can exist outside transactions
5583 These cursors are also called holdable cursors.
5590 New client-to-server protocol
5595 The new protocol adds error codes, more status information,
5596 faster startup, better support for binary data transmission,
5597 parameter values separated from SQL commands, prepared
5598 statements available at the protocol level, and cleaner
5599 recovery from <command>COPY</command> failures. The older
5600 protocol is still supported by both server and clients.
5607 <application>libpq</application> and
5608 <application>ECPG</application> applications are now fully
5614 While previous <application>libpq</application> releases
5615 already supported threads, this release improves thread safety
5616 by fixing some non-thread-safe code that was used during
5617 database connection startup. The <command>configure</command>
5618 option <option>--enable-thread-safety</option> must be used to
5619 enable this feature.
5626 New version of full-text indexing
5631 A new full-text indexing suite is available in
5632 <filename>contrib/tsearch2</filename>.
5644 The new autovacuum tool in
5645 <filename>contrib/autovacuum</filename> monitors the database
5646 statistics tables for
5647 <command>INSERT</command>/<command>UPDATE</command>/<command>DELETE</command>
5648 activity and automatically vacuums tables when needed.
5655 Array handling has been improved and moved into the server core
5660 Many array limitations have been removed, and arrays behave
5661 more like fully-supported data types.
5670 <title>Migration to version 7.4</title>
5673 A dump/restore using <application>pg_dump</application> is
5674 required for those wishing to migrate data from any previous
5679 Observe the following incompatibilities:
5685 The server-side autocommit setting was removed and
5686 reimplemented in client applications and languages.
5687 Server-side autocommit was causing too many problems with
5688 languages and applications that wanted to control their own
5689 autocommit behavior, so autocommit was removed from the server
5690 and added to individual client APIs as appropriate.
5696 Error message wording has changed substantially in this
5697 release. Significant effort was invested to make the messages
5698 more consistent and user-oriented. If your applications try to
5699 detect different error conditions by parsing the error message,
5700 you are strongly encouraged to use the new error code facility instead.
5706 Inner joins using the explicit <literal>JOIN</literal> syntax
5707 may behave differently because they are now better
5714 A number of server configuration parameters have been renamed
5715 for clarity, primarily those related to
5722 <literal>FETCH 0</literal> or <literal>MOVE 0</literal> now
5723 does nothing. In prior releases, <literal>FETCH 0</literal>
5724 would fetch all remaining rows, and <literal>MOVE 0</literal>
5725 would move to the end of the cursor.
5731 <command>FETCH</command> and <command>MOVE</command> now return
5732 the actual number of rows fetched/moved, or zero if at the
5733 beginning/end of the cursor. Prior releases would return the
5734 row count passed to the command, not the number of rows
5735 actually fetched or moved.
5741 <command>COPY</command> now can process files that use
5742 carriage-return or carriage-return/line-feed end-of-line
5743 sequences. Literal carriage-returns and line-feeds are no
5744 longer accepted in data values; use <literal>\r</literal> and
5745 <literal>\n</literal> instead.
5751 Trailing spaces are now trimmed when converting from type
5752 <type>char(<replaceable>n</>)</type> to
5753 <type>varchar(<replaceable>n</>)</type> or <type>text</type>.
5754 This is what most people always expected to happen anyway.
5760 The data type <type>float(<replaceable>p</>)</type> now
5761 measures <replaceable>p</> in binary digits, not decimal
5762 digits. The new behavior follows the SQL standard.
5768 Ambiguous date values now must match the ordering specified by
5769 the <varname>datestyle</varname> setting. In prior releases, a
5770 date specification of <literal>10/20/03</> was interpreted as a
5771 date in October even if <varname>datestyle</> specified that
5772 the day should be first. 7.4 will throw an error if a date
5773 specification is invalid for the current setting of
5774 <varname>datestyle</>.
5780 The functions <function>oidrand</function>,
5781 <function>oidsrand</function>, and
5782 <function>userfntest</function> have been removed. These
5783 functions were determined to be no longer useful.
5789 String literals specifying time-varying date/time values, such
5790 as <literal>'now'</literal> or <literal>'today'</literal> will
5791 no longer work as expected in column default expressions; they
5792 now cause the time of the table creation to be the default, not
5793 the time of the insertion. Functions such as
5794 <function>now()</>, <function>current_timestamp</>, or
5795 <function>current_date</function> should be used instead.
5799 In previous releases, there was special code so that strings
5800 such as <literal>'now'</literal> were interpreted at
5801 <command>INSERT</> time and not at table creation time, but
5802 this work around didn't cover all cases. Release 7.4 now
5803 requires that defaults be defined properly using functions such
5804 as <function>now()</> or <function>current_timestamp</>. These
5805 will work in all situations.
5811 The dollar sign (<literal>$</>) is no longer allowed in
5812 operator names. It can instead be a non-first character in
5813 identifiers. This was done to improve compatibility with other
5814 database systems, and to avoid syntax problems when parameter
5815 placeholders (<literal>$<replaceable>n</></>) are written
5816 adjacent to operators.
5824 <title>Changes</title>
5827 Below you will find a detailed account of the changes between
5828 release 7.4 and the previous major release.
5832 <title>Server Operation Changes</title>
5837 Allow IPv6 server connections (Nigel Kukard, Johan Jordaan,
5838 Bruce, Tom, Kurt Roeckx, Andrew Dunstan)
5844 Fix SSL to handle errors cleanly (Nathan Mueller)
5847 In prior releases, certain SSL API error reports were not
5848 handled correctly. This release fixes those problems.
5854 SSL protocol security and performance improvements (Sean Chittenden)
5857 SSL key renegotiation was happening too frequently, causing poor
5858 SSL performance. Also, initial key handling was improved.
5864 Print lock information when a deadlock is detected (Tom)
5867 This allows easier debugging of deadlock situations.
5873 Update <filename>/tmp</filename> socket modification times
5874 regularly to avoid their removal (Tom)
5877 This should help prevent <filename>/tmp</filename> directory
5878 cleaner administration scripts from removing server socket
5883 <listitem><para>Enable PAM for Mac OS X (Aaron Hillegass)</para></listitem>
5886 <para>Make B-tree indexes fully WAL-safe (Tom)</para>
5888 In prior releases, under certain rare cases, a server crash
5889 could cause B-tree indexes to become corrupt. This release
5890 removes those last few rare cases.
5894 <listitem><para>Allow B-tree index compaction and empty page reuse (Tom)</para></listitem>
5898 Fix inconsistent index lookups during split of first root page (Tom)
5901 In prior releases, when a single-page index split into two
5902 pages, there was a brief period when another database session
5903 could miss seeing an index entry. This release fixes that rare
5908 <listitem><para>Improve free space map allocation logic (Tom)</para></listitem>
5911 <para>Preserve free space information between server restarts (Tom)</para>
5913 In prior releases, the free space map was not saved when the
5914 postmaster was stopped, so newly started servers had no free
5915 space information. This release saves the free space map, and
5916 reloads it when the server is restarted.
5920 <listitem><para>Add start time to <literal>pg_stat_activity</literal> (Neil)</para></listitem>
5921 <listitem><para>New code to detect corrupt disk pages; erase with <varname>zero_damaged_pages</varname> (Tom)</para></listitem>
5922 <listitem><para>New client/server protocol: faster, no username length limit, allow clean exit from <command>COPY</command> (Tom)</para></listitem>
5923 <listitem><para>Add transaction status, table ID, column ID to client/server protocol (Tom)</para></listitem>
5924 <listitem><para>Add binary I/O to client/server protocol (Tom)</para></listitem>
5925 <listitem><para>Remove autocommit server setting; move to client applications (Tom)</para></listitem>
5926 <listitem><para>New error message wording, error codes, and three levels of error detail (Tom, Joe, Peter)</para></listitem>
5931 <title>Performance Improvements</title>
5934 <listitem><para>Add hashing for <literal>GROUP BY</literal> aggregates (Tom)</para></listitem>
5935 <listitem><para>Make nested-loop joins be smarter about multicolumn indexes (Tom)</para></listitem>
5936 <listitem><para>Allow multikey hash joins (Tom)</para></listitem>
5937 <listitem><para>Improve constant folding (Tom)</para></listitem>
5938 <listitem><para>Add ability to inline simple SQL functions (Tom)</para></listitem>
5941 <para>Reduce memory usage for queries using complex functions (Tom)</para>
5943 In prior releases, functions returning allocated memory would
5944 not free it until the query completed. This release allows the
5945 freeing of function-allocated memory when the function call
5946 completes, reducing the total memory used by functions.
5951 <para>Improve GEQO optimizer performance (Tom)</para>
5953 This release fixes several inefficiencies in the way the GEQO optimizer
5954 manages potential query paths.
5960 Allow <literal>IN</>/<literal>NOT IN</> to be handled via hash
5967 Improve <literal>NOT IN (<replaceable>subquery</>)</literal>
5974 Allow most <literal>IN</literal> subqueries to be processed as
5981 Pattern matching operations can use indexes regardless of
5985 There is no way for non-ASCII locales to use the standard
5986 indexes for <literal>LIKE</literal> comparisons. This release
5987 adds a way to create a special index for
5988 <literal>LIKE</literal>.
5993 <para>Allow the postmaster to preload libraries using <varname>preload_libraries</varname> (Joe)</para>
5995 For shared libraries that require a long time to load, this
5996 option is available so the library can be preloaded in the
5997 postmaster and inherited by all database sessions.
6003 Improve optimizer cost computations, particularly for subqueries (Tom)
6009 Avoid sort when subquery <literal>ORDER BY</literal> matches upper query (Tom)
6015 Deduce that <literal>WHERE a.x = b.y AND b.y = 42</literal> also
6016 means <literal>a.x = 42</literal> (Tom)
6022 Allow hash/merge joins on complex joins (Tom)
6028 Allow hash joins for more data types (Tom)
6034 Allow join optimization of explicit inner joins, disable with
6035 <varname>join_collapse_limit</varname> (Tom)
6041 Add parameter <varname>from_collapse_limit</varname> to control
6042 conversion of subqueries to joins (Tom)
6048 Use faster and more powerful regular expression code from Tcl
6049 (Henry Spencer, Tom)
6055 Use bit-mapped relation sets in the optimizer (Tom)
6060 <para>Improve connection startup time (Tom)</para>
6062 The new client/server protocol requires fewer network packets to
6063 start a database session.
6069 Improve trigger/constraint performance (Stephan)
6075 Improve speed of <literal>col IN (const, const, const, ...)</literal> (Tom)
6081 Fix hash indexes which were broken in rare cases (Tom)
6085 <listitem><para>Improve hash index concurrency and speed (Tom)</para>
6087 Prior releases suffered from poor hash index performance,
6088 particularly for high concurrency situations. This release fixes
6089 that, and the development group is interested in reports
6090 comparing B-tree and hash index performance.
6095 <para>Align shared buffers on 32-byte boundary for copy speed improvement (Manfred Spraul)</para>
6097 Certain CPU's perform faster data copies when addresses are
6103 <para>Data type <type>numeric</type> reimplemented for better performance (Tom)</para>
6105 <type>numeric</type> used to be stored in base 100. The new code
6106 uses base 10000, for significantly better performance.
6113 <title>Server Configuration Changes</title>
6117 <para>Rename server parameter <varname>server_min_messages</> to <varname>log_min_messages</> (Bruce)</para>
6119 This was done so most parameters that control the server logs
6120 begin with <literal>log_</>.
6124 <listitem><para>Rename <varname>show_*_stats</> to <varname>log_*_stats</> (Bruce)</para></listitem>
6125 <listitem><para>Rename <varname>show_source_port</> to <varname>log_source_port</> (Bruce)</para></listitem>
6126 <listitem><para>Rename <varname>hostname_lookup</> to <varname>log_hostname</> (Bruce)</para></listitem>
6129 <para>Add <varname>checkpoint_warning</> to warn of excessive checkpointing (Bruce)</para>
6131 In prior releases, it was difficult to determine if checkpoint
6132 was happening too frequently. This feature adds a warning to the
6133 server logs when excessive checkpointing happens.
6137 <listitem><para>New read-only server parameters for localization (Tom)</para></listitem>
6141 Change debug server log messages to output as <literal>DEBUG</>
6142 rather than <literal>LOG</> (Bruce)
6147 <para>Prevent server log variables from being turned off by non-superusers (Bruce)</para>
6149 This is a security feature so non-superusers cannot disable
6150 logging that was enabled by the administrator.
6156 <varname>log_min_messages</>/<varname>client_min_messages</> now
6157 controls <varname>debug_*</> output (Bruce)
6160 This centralizes client debug information so all debug output
6161 can be sent to either the client or server logs.
6166 <para>Add Mac OS X Rendezvous server support (Chris Campbell)</para>
6168 This allows Mac OS X hosts to query the network for available
6169 <productname>PostgreSQL</productname> servers.
6175 Add ability to print only slow statements using
6176 <varname>log_min_duration_statement</varname>
6180 This is an often requested debugging feature that allows
6181 administrators to see only slow queries in their server logs.
6186 <para>Allow <filename>pg_hba.conf</filename> to accept netmasks in CIDR format (Andrew Dunstan)</para>
6188 This allows administrators to merge the host IP address and
6189 netmask fields into a single CIDR field in <filename>pg_hba.conf</filename>.
6193 <listitem><para>New read-only parameter <varname>is_superuser</varname> (Tom)</para></listitem>
6196 <para>New parameter <varname>log_error_verbosity</varname> to control error detail (Tom)</para>
6198 This works with the new error reporting feature to supply
6199 additional error information like hints, file names and line
6205 <para><literal>postgres --describe-config</literal> now dumps server config variables (Aizaz Ahmed, Peter)</para>
6207 This option is useful for administration tools that need to know
6208 the configuration variable names and their minimums, maximums,
6209 defaults, and descriptions.
6215 Add new columns in <literal>pg_settings</literal>:
6216 <literal>context</>, <literal>type</>, <literal>source</>,
6217 <literal>min_val</>, <literal>max_val</> (Joe)
6223 Make default <varname>shared_buffers</> 1000 and
6224 <varname>max_connections</> 100, if possible (Tom)
6227 Prior versions defaulted to 64 shared buffers so <productname>PostgreSQL</productname>
6228 would start on even very old systems. This release tests the
6229 amount of shared memory allowed by the platform and selects more
6230 reasonable default values if possible. Of course, users are
6231 still encouraged to evaluate their resource load and size
6232 <varname>shared_buffers</varname> accordingly.
6238 New <filename>pg_hba.conf</filename> record type
6239 <literal>hostnossl</> to prevent SSL connections (Jon
6243 In prior releases, there was no way to prevent SSL connections
6244 if both the client and server supported SSL. This option allows
6251 Remove parameter <varname>geqo_random_seed</varname>
6258 Add server parameter <varname>regex_flavor</varname> to control regular expression processing (Tom)
6264 Make <command>pg_ctl</command> better handle nonstandard ports (Greg)
6271 <title>Query Changes</title>
6274 <listitem><para>New SQL-standard information schema (Peter)</para></listitem>
6275 <listitem><para>Add read-only transactions (Peter)</para></listitem>
6276 <listitem><para>Print key name and value in foreign-key violation messages (Dmitry Tkach)</para></listitem>
6279 <para>Allow users to see their own queries in <literal>pg_stat_activity</literal> (Kevin Brown)</para>
6281 In prior releases, only the superuser could see query strings
6282 using <literal>pg_stat_activity</literal>. Now ordinary users
6283 can see their own query strings.
6288 <para>Fix aggregates in subqueries to match SQL standard (Tom)</para>
6290 The SQL standard says that an aggregate function appearing
6291 within a nested subquery belongs to the outer query if its
6292 argument contains only outer-query variables. Prior
6293 <productname>PostgreSQL</productname> releases did not handle
6294 this fine point correctly.
6299 <para>Add option to prevent auto-addition of tables referenced in query (Nigel J. Andrews)</para>
6301 By default, tables mentioned in the query are automatically
6302 added to the <literal>FROM</> clause if they are not already
6303 there. This is compatible with historic
6304 <productname>POSTGRES</productname> behavior but is contrary to
6305 the SQL standard. This option allows selecting
6306 standard-compatible behavior.
6311 <para>Allow <literal>UPDATE ... SET col = DEFAULT</literal> (Rod)</para>
6313 This allows <command>UPDATE</command> to set a column to its
6314 declared default value.
6319 <para>Allow expressions to be used in <literal>LIMIT</>/<literal>OFFSET</> (Tom)</para>
6321 In prior releases, <literal>LIMIT</>/<literal>OFFSET</> could
6322 only use constants, not expressions.
6327 <para>Implement <literal>CREATE TABLE AS EXECUTE</literal> (Neil, Peter)</para>
6333 <title>Object Manipulation Changes</title>
6337 <para>Make <command>CREATE SEQUENCE</command> grammar more conforming to SQL:2003 (Neil)</para>
6341 <para>Add statement-level triggers (Neil)</para>
6343 While this allows a trigger to fire at the end of a statement,
6344 it does not allow the trigger to access all rows modified by the
6345 statement. This capability is planned for a future release.
6350 <para>Add check constraints for domains (Rod)</para>
6352 This greatly increases the usefulness of domains by allowing
6353 them to use check constraints.
6358 <para>Add <command>ALTER DOMAIN</command> (Rod)</para>
6360 This allows manipulation of existing domains.
6365 <para>Fix several zero-column table bugs (Tom)</para>
6367 <productname>PostgreSQL</productname> supports zero-column tables. This fixes various bugs
6368 that occur when using such tables.
6373 <para>Have <literal>ALTER TABLE ... ADD PRIMARY KEY</literal> add not-null constraint (Rod)</para>
6375 In prior releases, <literal>ALTER TABLE ... ADD
6376 PRIMARY</literal> would add a unique index, but not a not-null
6377 constraint. That is fixed in this release.
6381 <listitem><para>Add <literal>ALTER TABLE ... WITHOUT OIDS</literal> (Rod)</para>
6383 This allows control over whether new and updated rows will have
6384 an OID column. This is most useful for saving storage space.
6390 Add <literal>ALTER SEQUENCE</literal> to modify minimum, maximum,
6391 increment, cache, cycle values (Rod)
6396 <para>Add <literal>ALTER TABLE ... CLUSTER ON</literal> (Alvaro Herrera)</para>
6398 This command is used by <command>pg_dump</command> to record the
6399 cluster column for each table previously clustered. This
6400 information is used by database-wide cluster to cluster all
6401 previously clustered tables.
6405 <listitem><para>Improve automatic type casting for domains (Rod, Tom)</para></listitem>
6406 <listitem><para>Allow dollar signs in identifiers, except as first character (Tom)</para></listitem>
6407 <listitem><para>Disallow dollar signs in operator names, so <literal>x=$1</> works (Tom)</para></listitem>
6411 Allow copying table schema using <literal>LIKE
6412 <replaceable>subtable</replaceable></literal>, also SQL:2003
6413 feature <literal>INCLUDING DEFAULTS</literal> (Rod)
6419 Add <literal>WITH GRANT OPTION</literal> clause to
6420 <command>GRANT</command> (Peter)
6423 This enabled <command>GRANT</command> to give other users the
6424 ability to grant privileges on a object.
6431 <title>Utility Command Changes</title>
6435 <para>Add <literal>ON COMMIT</literal> clause to <command>CREATE TABLE</command> for temporary tables (Gavin)</para>
6437 This adds the ability for a table to be dropped or all rows
6438 deleted on transaction commit.
6443 <para>Allow cursors outside transactions using <literal>WITH HOLD</literal> (Neil)</para>
6445 In previous releases, cursors were removed at the end of the
6446 transaction that created them. Cursors can now be created with
6447 the <literal>WITH HOLD</literal> option, which allows them to
6448 continue to be accessed after the creating transaction has
6454 <para><literal>FETCH 0</literal> and <literal>MOVE 0 </literal> now do nothing (Bruce)</para>
6456 In previous releases, <literal>FETCH 0</literal> fetched all
6457 remaining rows, and <literal>MOVE 0</literal> moved to the end
6464 Cause <command>FETCH</command> and <command>MOVE</command> to
6465 return the number of rows fetched/moved, or zero if at the
6466 beginning/end of cursor, per SQL standard (Bruce)
6469 In prior releases, the row count returned by
6470 <command>FETCH</command> and <command>MOVE</command> did not
6471 accurately reflect the number of rows processed.
6476 <para>Properly handle <literal>SCROLL</literal> with cursors, or
6477 report an error (Neil)</para>
6479 Allowing random access (both forward and backward scrolling) to
6480 some kinds of queries cannot be done without some additional
6481 work. If <literal>SCROLL</literal> is specified when the cursor
6482 is created, this additional work will be performed. Furthermore,
6483 if the cursor has been created with <literal>NO SCROLL</literal>,
6484 no random access is allowed.
6490 Implement SQL-compatible options <literal>FIRST</>,
6491 <literal>LAST</>, <literal>ABSOLUTE <replaceable>n</></>,
6492 <literal>RELATIVE <replaceable>n</></> for
6493 <command>FETCH</command> and <command>MOVE</command> (Tom)
6498 <para>Allow <command>EXPLAIN</command> on <command>DECLARE CURSOR</command> (Tom)</para>
6502 <para>Allow <command>CLUSTER</command> to use index marked as pre-clustered by default (Alvaro Herrera)</para>
6506 <para>Allow <command>CLUSTER</command> to cluster all tables (Alvaro Herrera)</para>
6508 This allows all previously clustered tables in a database to be
6509 reclustered with a single command.
6513 <listitem><para>Prevent <command>CLUSTER</command> on partial indexes (Tom)</para></listitem>
6515 <listitem><para>Allow DOS and Mac line-endings in <command>COPY</> files (Bruce)</para></listitem>
6519 Disallow literal carriage return as a data value,
6520 backslash-carriage-return and <literal>\r</> are still allowed
6526 <para><command>COPY</> changes (binary, <literal>\.</>) (Tom)</para>
6530 <para>Recover from <command>COPY</command> failure cleanly (Tom)</para>
6534 <para>Prevent possible memory leaks in <command>COPY</command> (Tom)</para>
6538 <para>Make <command>TRUNCATE</command> transaction-safe (Rod)</para>
6540 <command>TRUNCATE</command> can now be used inside a
6541 transaction. If the transaction aborts, the changes made by the
6542 <command>TRUNCATE</command> are automatically rolled back.
6548 Allow prepare/bind of utility commands like
6549 <command>FETCH</command> and <command>EXPLAIN</command> (Tom)
6554 <para>Add <command>EXPLAIN EXECUTE</command> (Neil)</para>
6558 <para>Improve <command>VACUUM</command> performance on indexes by reducing WAL traffic (Tom)</para>
6562 <para>Functional indexes have been generalized into indexes on expressions (Tom)</para>
6564 In prior releases, functional indexes only supported a simple
6565 function applied to one or more column names. This release
6566 allows any type of scalar expression.
6572 Have <command>SHOW TRANSACTION ISOLATION</command> match input
6573 to <command>SET TRANSACTION ISOLATION</command>
6580 Have <command>COMMENT ON DATABASE</command> on nonlocal
6581 database generate a warning, rather than an error (Rod)
6585 Database comments are stored in database-local tables so
6586 comments on a database have to be stored in each database.
6592 Improve reliability of <command>LISTEN</>/<command>NOTIFY</> (Tom)
6597 <para>Allow <command>REINDEX</command> to reliably reindex nonshared system catalog indexes (Tom)</para>
6599 This allows system tables to be reindexed without the
6600 requirement of a standalone session, which was necessary in
6601 previous releases. The only tables that now require a standalone
6602 session for reindexing are the global system tables
6603 <literal>pg_database</>, <literal>pg_shadow</>, and
6604 <literal>pg_group</>.
6611 <title>Data Type and Function Changes</title>
6616 New server parameter <varname>extra_float_digits</varname> to
6617 control precision display of floating-point numbers (Pedro
6621 This controls output precision which was causing regression
6626 <listitem><para>Allow <literal>+1300</literal> as a numeric time-zone specifier, for FJST (Tom)</para></listitem>
6630 Remove rarely used functions <function>oidrand</>,
6631 <function>oidsrand</>, and <function>userfntest</> functions
6637 <para>Add <function>md5()</> function to main server, already in <filename>contrib/pgcrypto</filename> (Joe)</para>
6639 An MD5 function was frequently requested. For more complex
6640 encryption capabilities, use
6641 <filename>contrib/pgcrypto</filename>.
6645 <listitem><para>Increase date range of <type>timestamp</type> (John Cochran)</para></listitem>
6649 Change <literal>EXTRACT(EPOCH FROM timestamp)</literal> so
6650 <type>timestamp without time zone</type> is assumed to be in
6651 local time, not GMT (Tom)
6655 <listitem><para>Trap division by zero in case the operating system doesn't prevent it (Tom)</para></listitem>
6656 <listitem><para>Change the <type>numeric</type> data type internally to base 10000 (Tom)</para></listitem>
6657 <listitem><para>New <function>hostmask()</function> function (Greg Wickham)</para></listitem>
6658 <listitem><para>Fixes for <function>to_char()</function> and <function>to_timestamp()</function> (Karel)</para></listitem>
6662 Allow functions that can take any argument data type and return
6663 any data type, using <type>anyelement</type> and
6664 <type>anyarray</type> (Joe)
6667 This allows the creation of functions that can work with any
6674 Arrays may now be specified as <literal>ARRAY[1,2,3]</literal>,
6675 <literal>ARRAY[['a','b'],['c','d']]</literal>, or
6676 <literal>ARRAY[ARRAY[ARRAY[2]]]</literal> (Joe)
6682 Allow proper comparisons for arrays, including <literal>ORDER
6683 BY</literal> and <literal>DISTINCT</literal> support
6688 <listitem><para>Allow indexes on array columns (Joe)</para></listitem>
6689 <listitem><para>Allow array concatenation with <literal>||</literal> (Joe)</para></listitem>
6693 Allow <literal>WHERE</literal> qualification
6694 <literal><replaceable>expr</> <replaceable>op</> ANY/SOME/ALL
6695 (<replaceable>array_expr</>)</literal> (Joe)
6698 This allows arrays to behave like a list of values, for purposes
6699 like <literal>SELECT * FROM tab WHERE col IN
6700 (array_val)</literal>.
6706 New array functions <function>array_append</>,
6707 <function>array_cat</>, <function>array_lower</>,
6708 <function>array_prepend</>, <function>array_to_string</>,
6709 <function>array_upper</>, <function>string_to_array</> (Joe)
6713 <listitem><para>Allow user defined aggregates to use polymorphic functions (Joe)</para></listitem>
6714 <listitem><para>Allow assignments to empty arrays (Joe)</para></listitem>
6718 Allow 60 in seconds fields of <type>time</type>,
6719 <type>timestamp</type>, and <type>interval</type> input values
6723 Sixty-second values are needed for leap seconds.
6727 <listitem><para>Allow <type>cidr</type> data type to be cast to <type>text</type> (Tom)</para></listitem>
6729 <listitem><para>Disallow invalid time zone names in SET TIMEZONE</para></listitem>
6733 Trim trailing spaces when <type>char</type> is cast to
6734 <type>varchar</> or <type>text</> (Tom)
6740 Make <type>float(<replaceable>p</>)</> measure the precision
6741 <replaceable>p</> in binary digits, not decimal digits
6747 <para>Add IPv6 support to the <type>inet</type> and <type>cidr</type> data types (Michael Graff)</para>
6751 <para>Add <function>family()</function> function to report whether address is IPv4 or IPv6 (Michael Graff)</para>
6756 Have <literal>SHOW datestyle</literal> generate output similar
6757 to that used by <literal>SET datestyle</literal> (Tom)
6763 Make <literal>EXTRACT(TIMEZONE)</literal> and <literal>SET/SHOW
6764 TIME ZONE</literal> follow the SQL convention for the sign of
6765 time zone offsets, i.e., positive is east from UTC (Tom)
6770 <para>Fix <literal>date_trunc('quarter', ...)</literal> (Böjthe Zoltán)</para>
6772 Prior releases returned an incorrect value for this function call.
6777 <para>Make <function>initcap()</function> more compatible with Oracle (Mike Nolan)</para>
6779 <function>initcap()</function> now uppercases a letter appearing
6780 after any non-alphanumeric character, rather than only after
6786 <para>Allow only <varname>datestyle</varname> field order for date values not in ISO-8601 format (Greg)</para>
6791 Add new <varname>datestyle</varname> values <literal>MDY</>,
6792 <literal>DMY</>, and <literal>YMD</> to set input field order;
6793 honor <literal>US</> and <literal>European</> for backward
6800 String literals like <literal>'now'</literal> or
6801 <literal>'today'</literal> will no longer work as a column
6802 default. Use functions such as <function>now()</function>,
6803 <function>current_timestamp</function> instead. (change
6804 required for prepared statements) (Tom)
6809 <para>Treat NaN as larger than any other value in <function>min()</>/<function>max()</> (Tom)</para>
6811 NaN was already sorted after ordinary numeric values for most
6812 purposes, but <function>min()</> and <function>max()</> didn't
6818 <para>Prevent interval from suppressing <literal>:00</literal>
6819 seconds display</para>
6824 New functions <function>pg_get_triggerdef(prettyprint)</function>
6825 and <function>pg_conversion_is_visible()</function> (Christopher)
6830 <para>Allow time to be specified as <literal>040506</> or <literal>0405</> (Tom)</para>
6835 Input date order must now be <literal>YYYY-MM-DD</literal> (with 4-digit year) or
6836 match <varname>datestyle</varname>
6842 Make <function>pg_get_constraintdef</function> support
6843 unique, primary-key, and check constraints (Christopher)
6850 <title>Server-Side Language Changes</title>
6855 Prevent PL/pgSQL crash when <literal>RETURN NEXT</literal> is
6856 used on a zero-row record variable (Tom)
6862 Make PL/Python's <function>spi_execute</function> interface
6863 handle null values properly (Andrew Bosma)
6868 <para>Allow PL/pgSQL to declare variables of composite types without <literal>%ROWTYPE</literal> (Tom)</para>
6872 <para>Fix PL/Python's <function>_quote()</function> function to handle big integers</para>
6876 <para>Make PL/Python an untrusted language, now called <literal>plpythonu</literal> (Kevin Jacobs, Tom)</para>
6878 The Python language no longer supports a restricted execution
6879 environment, so the trusted version of PL/Python was removed. If
6880 this situation changes, a version of PL/Python that can be used
6881 by non-superusers will be readded.
6886 <para>Allow polymorphic PL/pgSQL functions (Joe, Tom)</para>
6890 <para>Allow polymorphic SQL functions (Joe)</para>
6895 Improved compiled function caching mechanism in PL/pgSQL with
6896 full support for polymorphism (Joe)
6902 Add new parameter <literal>$0</> in PL/pgSQL representing the
6903 function's actual return type (Joe)
6909 Allow PL/Tcl and PL/Python to use the same trigger on multiple tables (Tom)
6915 Fixed PL/Tcl's <function>spi_prepare</function> to accept fully
6916 qualified type names in the parameter type list
6924 <title>psql Changes</title>
6928 <para>Add <literal>\pset pager always</literal> to always use pager (Greg)</para>
6930 This forces the pager to be used even if the number of rows is
6931 less than the screen height. This is valuable for rows that
6932 wrap across several screen rows.
6936 <listitem><para>Improve tab completion (Rod, Ross Reedstrom, Ian Barwick)</para></listitem>
6937 <listitem><para>Reorder <literal>\?</> help into groupings (Harald Armin Massa, Bruce)</para></listitem>
6938 <listitem><para>Add backslash commands for listing schemas, casts, and conversions (Christopher)</para></listitem>
6942 <command>\encoding</> now changes based on the server parameter
6943 <varname>client_encoding</varname> (Tom)
6946 In previous versions, <command>\encoding</command> was not aware
6947 of encoding changes made using <literal>SET
6948 client_encoding</literal>.
6953 <para>Save editor buffer into readline history (Ross)</para>
6955 When <command>\e</> is used to edit a query, the result is saved
6956 in the readline history for retrieval using the up arrow.
6960 <listitem><para>Improve <command>\d</command> display (Christopher)</para></listitem>
6961 <listitem><para>Enhance HTML mode to be more standards-conforming (Greg)</para></listitem>
6964 <para>New <command>\set AUTOCOMMIT off</command> capability (Tom)</para>
6966 This takes the place of the removed server parameter <varname>autocommit</varname>.
6971 <para>New <command>\set VERBOSITY</command> to control error detail (Tom)</para>
6973 This controls the new error reporting details.
6977 <listitem><para>New prompt escape sequence <literal>%x</literal> to show transaction status (Tom)</para></listitem>
6978 <listitem><para>Long options for <application>psql</application> are now available on all platforms</para></listitem>
6983 <title>pg_dump Changes</title>
6986 <listitem><para>Multiple pg_dump fixes, including tar format and large objects</para></listitem>
6987 <listitem><para>Allow pg_dump to dump specific schemas (Neil)</para></listitem>
6990 <para>Make pg_dump preserve column storage characteristics (Christopher)</para>
6992 This preserves <literal>ALTER TABLE ... SET STORAGE</literal> information.
6996 <listitem><para>Make pg_dump preserve <command>CLUSTER</command> characteristics (Christopher)</para></listitem>
7000 Have pg_dumpall use <command>GRANT</>/<command>REVOKE</> to dump database-level privleges (Tom)
7006 Allow pg_dumpall to support the options <option>-a</>,
7007 <option>-s</>, <option>-x</> of pg_dump (Tom)
7011 <listitem><para>Prevent pg_dump from lowercasing identifiers specified on the command line (Tom)</para></listitem>
7015 pg_dump options <option>--use-set-session-authorization</option>
7016 and <option>--no-reconnect</option> now do nothing, all dumps
7017 use <command>SET SESSION AUTHORIZATION</command>
7020 pg_dump no longer reconnects to switch users, but instead always
7021 uses <command>SET SESSION AUTHORIZATION</command>. This will
7022 reduce password prompting during restores.
7027 <para>Long options for <application>pg_dump</application> are now available on all platforms</para>
7029 <productname>PostgreSQL</productname> now includes its own
7030 long-option processing routines.
7037 <title>libpq Changes</title>
7042 Add function <function>PQfreemem</function> for freeing memory on
7043 Windows, suggested for <command>NOTIFY</command> (Bruce)
7046 Windows requires that memory allocated in a library be freed by
7047 a function in the same library, hence
7048 <function>free()</function> doesn't work for freeing memory
7049 allocated by libpq. <function>PQfreemem</function> is the proper
7050 way to free libpq memory, especially on Windows, and is
7051 recommended for other platforms as well.
7056 <para>Document service capability, and add sample file (Bruce)</para>
7058 This allows clients to look up connection information in a
7059 central file on the client machine.
7065 Make <function>PQsetdbLogin</function> have the same defaults as
7066 <function>PQconnectdb</function> (Tom)
7070 <listitem><para>Allow libpq to cleanly fail when result sets are too large (Tom)</para></listitem>
7074 Improve performance of function <function>PQunescapeBytea</function> (Ben Lamb)
7080 Allow thread-safe libpq with <filename>configure</filename>
7081 option <option>--enable-thread-safety</option> (Lee Kindness,
7088 Allow function <function>pqInternalNotice</function> to accept a
7089 format string and arguments instead of just a preformatted
7090 message (Tom, Sean Chittenden)
7096 Control SSL negotiation with <literal>sslmode</literal> values
7097 <literal>disable</literal>, <literal>allow</literal>,
7098 <literal>prefer</literal>, and <literal>require</literal> (Jon
7104 <para>Allow new error codes and levels of text (Tom)</para>
7108 <para>Allow access to the underlying table and column of a query result (Tom)</para>
7110 This is helpful for query-builder applications that want to know
7111 the underlying table and column names associated with a specific
7116 <listitem><para>Allow access to the current transaction status (Tom)</para></listitem>
7117 <listitem><para>Add ability to pass binary data directly to the server (Tom)</para></listitem>
7121 Add function <function>PQexecPrepared</function> and
7122 <function>PQsendQueryPrepared</function> functions which perform
7123 bind/execute of previously prepared statements (Tom)
7130 <title>JDBC Changes</title>
7133 <listitem><para>Allow <function>setNull</function> on updateable result sets</para></listitem>
7134 <listitem><para>Allow <function>executeBatch</function> on a prepared statement (Barry)</para></listitem>
7135 <listitem><para>Support SSL connections (Barry)</para></listitem>
7136 <listitem><para>Handle schema names in result sets (Paul Sorenson)</para></listitem>
7137 <listitem><para>Add refcursor support (Nic Ferrier)</para></listitem>
7142 <title>Miscellaneous Interface Changes</title>
7146 <para>Prevent possible memory leak or core dump during libpgtcl shutdown (Tom)</para>
7149 <para>Add Informix compatibility to ECPG (Michael)</para>
7151 This allows ECPG to process embedded C programs that were
7152 written using certain Informix extensions.
7157 <para>Add type <type>decimal</type> to ECPG that is fixed length, for Informix (Michael)</para>
7162 Allow thread-safe embedded SQL programs with
7163 <filename>configure</filename> option
7164 <option>--enable-thread-safety</option> (Lee Kindness, Bruce)
7167 This allows multiple threads to access the database at the same
7173 <para>Moved Python client PyGreSQL to <ulink url="http://www.pygresql.org"></ulink> (Marc)</para>
7179 <title>Source Code Changes</title>
7182 <listitem><para>Prevent need for separate platform geometry regression result files (Tom)</para></listitem>
7183 <listitem><para>Improved PPC locking primitive (Reinhard Max)</para></listitem>
7184 <listitem><para>New function <function>palloc0</function> to allocate and clear memory (Bruce)</para></listitem>
7185 <listitem><para>Fix locking code for s390x CPU (64-bit) (Tom)</para></listitem>
7186 <listitem><para>Allow OpenBSD to use local ident credentials (William Ahern)</para></listitem>
7187 <listitem><para>Make query plan trees read-only to executor (Tom)</para></listitem>
7188 <listitem><para>Add Darwin startup scripts (David Wheeler)</para></listitem>
7189 <listitem><para>Allow libpq to compile with Borland C++ compiler (Lester Godwin, Karl Waclawek)</para></listitem>
7190 <listitem><para>Use our own version of <function>getopt_long()</function> if needed (Peter)</para></listitem>
7191 <listitem><para>Convert administration scripts to C (Peter)</para></listitem>
7192 <listitem><para> Bison >= 1.85 is now required to build the <productname>PostgreSQL</> grammar, if building from CVS</para></listitem>
7193 <listitem><para>Merge documentation into one book (Peter)</para></listitem>
7194 <listitem><para>Add Windows compatibility functions (Bruce)</para></listitem>
7195 <listitem><para>Allow client interfaces to compile under MinGW (Bruce)</para></listitem>
7196 <listitem><para>New <function>ereport()</function> function for error reporting (Tom)</para></listitem>
7197 <listitem><para>Support Intel compiler on Linux (Peter)</para></listitem>
7198 <listitem><para>Improve Linux startup scripts (Slawomir Sudnik, Darko Prenosil)</para></listitem>
7199 <listitem><para>Add support for AMD Opteron and Itanium (Jeffrey W. Baker, Bruce)</para></listitem>
7201 <para>Remove <option>--enable-recode</option> option from <command>configure</command></para>
7203 This was no longer needed now that we have <command>CREATE CONVERSION</command>.
7207 <para>Generate a compile error if spinlock code is not found (Bruce)</para>
7209 Platforms without spinlock code will now fail to compile, rather
7210 than silently using semaphores. This failure can be disabled
7211 with a new <command>configure</command> option.
7218 <title>Contrib Changes</title>
7221 <listitem><para>Change dbmirror license to BSD</para></listitem>
7222 <listitem><para>Improve earthdistance (Bruno Wolff III)</para></listitem>
7223 <listitem><para>Portability improvements to pgcrypto (Marko Kreen)</para></listitem>
7224 <listitem><para>Prevent crash in xml (John Gray, Michael Richards)</para></listitem>
7225 <listitem><para>Update oracle</para></listitem>
7226 <listitem><para>Update mysql</para></listitem>
7227 <listitem><para>Update cube (Bruno Wolff III)</para></listitem>
7228 <listitem><para>Update earthdistance to use cube (Bruno Wolff III)</para></listitem>
7229 <listitem><para>Update btree_gist (Oleg)</para></listitem>
7230 <listitem><para>New tsearch2 full-text search module (Oleg, Teodor)</para></listitem>
7231 <listitem><para>Add hash-based crosstab function to tablefuncs (Joe)</para></listitem>
7232 <listitem><para>Add serial column to order <function>connectby()</> siblings in tablefuncs (Nabil Sayegh,Joe)</para></listitem>
7233 <listitem><para>Add named persistent connections to dblink (Shridhar Daithanka)</para></listitem>
7234 <listitem><para>New pg_autovacuum allows automatic <command>VACUUM</command> (Matthew T. O'Connor)</para></listitem>
7235 <listitem><para>Make pgbench honor environment variables <envar>PGHOST</>, <envar>PGPORT</>, <envar>PGUSER</> (Tatsuo)</para></listitem>
7236 <listitem><para>Improve intarray (Teodor Sigaev)</para></listitem>
7237 <listitem><para>Improve pgstattuple (Rod)</para></listitem>
7238 <listitem><para>Fix bug in <function>metaphone()</function> in fuzzystrmatch</para></listitem>
7239 <listitem><para>Improve adddepend (Rod)</para></listitem>
7240 <listitem><para>Update spi/timetravel (Böjthe Zoltán)</para></listitem>
7241 <listitem><para>Fix dbase <option>-s</> option and improve non-ASCII handling (Thomas Behr, Márcio Smiderle)</para></listitem>
7242 <listitem><para>Remove array module because features now included by default (Joe)</para></listitem>
7248 <sect1 id="release-7-3-10">
7249 <title>Release 7.3.10</title>
7252 <title>Release date</title>
7253 <simpara>2005-05-09</simpara>
7257 This release contains a variety of fixes from 7.3.9, including several
7258 security-related issues.
7262 <title>Migration to version 7.3.10</title>
7265 A dump/restore is not required for those running 7.3.X. However,
7266 it is one possible way of handling a significant security problem
7267 that has been found in the initial contents of 7.3.X system
7268 catalogs. A dump/initdb/reload sequence using 7.3.10's initdb will
7269 automatically correct this problem.
7273 The security problem is that the built-in character set encoding
7274 conversion functions can be invoked from SQL commands by unprivileged
7275 users, but the functions were not designed for such use and are not
7276 secure against malicious choices of arguments. The fix involves changing
7277 the declared parameter list of these functions so that they can no longer
7278 be invoked from SQL commands. (This does not affect their normal use
7279 by the encoding conversion machinery.)
7280 It is strongly recommended that all installations repair this error,
7281 either by initdb or by following the manual repair procedure given
7282 below. The error at least allows unprivileged database users to crash
7283 their server process, and may allow unprivileged users to gain the
7284 privileges of a database superuser.
7288 If you wish not to do an initdb, perform the following procedure instead.
7289 As the database superuser, do:
7293 UPDATE pg_proc SET proargtypes[3] = 'internal'::regtype
7294 WHERE pronamespace = 11 AND pronargs = 5
7295 AND proargtypes[2] = 'cstring'::regtype;
7296 -- The command should report having updated 90 rows;
7297 -- if not, rollback and investigate instead of committing!
7303 The above procedure must be carried out in <emphasis>each</> database
7304 of an installation, including <literal>template1</>, and ideally
7305 including <literal>template0</> as well. If you do not fix the
7306 template databases then any subsequently created databases will contain
7307 the same error. <literal>template1</> can be fixed in the same way
7308 as any other database, but fixing <literal>template0</> requires
7309 additional steps. First, from any database issue
7311 UPDATE pg_database SET datallowconn = true WHERE datname = 'template0';
7313 Next connect to <literal>template0</> and perform the above repair
7314 procedure. Finally, do
7316 -- re-freeze template0:
7318 -- and protect it against future alterations:
7319 UPDATE pg_database SET datallowconn = false WHERE datname = 'template0';
7325 <title>Changes</title>
7328 <listitem><para>Change encoding function signature to prevent
7329 misuse</para></listitem>
7330 <listitem><para>Repair ancient race condition that allowed a transaction to be
7331 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
7332 than for other purposes</para>
7333 <para>This is an extremely serious bug since it could lead to apparent
7334 data inconsistencies being briefly visible to applications.</para></listitem>
7335 <listitem><para>Repair race condition between relation extension and
7337 <para>This could theoretically have caused loss of a page's worth of
7338 freshly-inserted data, although the scenario seems of very low probability.
7339 There are no known cases of it having caused more than an Assert failure.
7341 <listitem><para>Fix comparisons of <type>TIME WITH TIME ZONE</> values</para>
7343 The comparison code was wrong in the case where the
7344 <literal>--enable-integer-datetimes</> configuration switch had been used.
7345 NOTE: if you have an index on a <type>TIME WITH TIME ZONE</> column,
7346 it will need to be <command>REINDEX</>ed after installing this update, because
7347 the fix corrects the sort order of column values.
7349 <listitem><para>Fix <function>EXTRACT(EPOCH)</> for
7350 <type>TIME WITH TIME ZONE</> values</para></listitem>
7351 <listitem><para>Fix mis-display of negative fractional seconds in
7352 <type>INTERVAL</> values</para>
7354 This error only occurred when the
7355 <literal>--enable-integer-datetimes</> configuration switch had been used.
7357 <listitem><para>Additional buffer overrun checks in plpgsql
7358 (Neil)</para></listitem>
7359 <listitem><para>Fix pg_dump to dump trigger names containing <literal>%</>
7360 correctly (Neil)</para></listitem>
7361 <listitem><para>Prevent <function>to_char(interval)</> from dumping core for
7362 month-related formats</para></listitem>
7363 <listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
7364 (Marko Kreen)</para></listitem>
7365 <listitem><para>Still more 64-bit fixes for
7366 <filename>contrib/intagg</></para></listitem>
7367 <listitem><para>Prevent incorrect optimization of functions returning
7368 <type>RECORD</></para></listitem>
7374 <sect1 id="release-7-3-9">
7375 <title>Release 7.3.9</title>
7378 <title>Release date</title>
7379 <simpara>2005-01-31</simpara>
7383 This release contains a variety of fixes from 7.3.8, including several
7384 security-related issues.
7388 <title>Migration to version 7.3.9</title>
7391 A dump/restore is not required for those running 7.3.X.
7396 <title>Changes</title>
7399 <listitem><para>Disallow <command>LOAD</> to non-superusers</para>
7401 On platforms that will automatically execute initialization functions of a
7402 shared library (this includes at least Windows and ELF-based Unixen),
7403 <command>LOAD</> can be used to make the server execute arbitrary code.
7404 Thanks to NGS Software for reporting this.</para></listitem>
7405 <listitem><para>Check that creator of an aggregate function has the right to
7406 execute the specified transition functions</para>
7408 This oversight made it possible to bypass denial of EXECUTE
7409 permission on a function.</para></listitem>
7410 <listitem><para>Fix security and 64-bit issues in
7411 contrib/intagg</para></listitem>
7412 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
7413 Jurka)</para></listitem>
7414 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
7415 many parameters (Neil)</para></listitem>
7416 <listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
7418 The result of the join was mistakenly supposed to be sorted the same as the
7419 left input. This could not only deliver mis-sorted output to the user, but
7420 in case of nested merge joins could give outright wrong answers.
7422 <listitem><para>Fix plperl for quote marks in tuple fields</para></listitem>
7423 <listitem><para>Fix display of negative intervals in SQL and GERMAN
7424 datestyles</para></listitem>
7430 <sect1 id="release-7-3-8">
7431 <title>Release 7.3.8</title>
7434 <title>Release date</title>
7435 <simpara>2004-10-22</simpara>
7439 This release contains a variety of fixes from 7.3.7.
7444 <title>Migration to version 7.3.8</title>
7447 A dump/restore is not required for those running 7.3.X.
7452 <title>Changes</title>
7455 <listitem><para>Repair possible failure to update hint bits on disk</para>
7457 Under rare circumstances this oversight could lead to
7458 <quote>could not access transaction status</> failures, which qualifies
7459 it as a potential-data-loss bug.
7461 <listitem><para>Ensure that hashed outer join does not miss tuples</para>
7463 Very large left joins using a hash join plan could fail to output unmatched
7464 left-side rows given just the right data distribution.
7466 <listitem><para>Disallow running pg_ctl as root</para>
7468 This is to guard against any possible security issues.
7470 <listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
7472 This has been reported as a security issue, though it's hardly worthy of
7473 concern since there is no reason for non-developers to use this script anyway.
7480 <sect1 id="release-7-3-7">
7481 <title>Release 7.3.7</title>
7484 <title>Release date</title>
7485 <simpara>2004-08-16</simpara>
7489 This release contains one critical fix over 7.3.6, and some minor items.
7494 <title>Migration to version 7.3.7</title>
7497 A dump/restore is not required for those running 7.3.X.
7502 <title>Changes</title>
7505 <listitem><para>Prevent possible loss of committed transactions during crash</para>
7507 Due to insufficient interlocking between transaction commit and checkpointing,
7508 it was possible for transactions committed just before the most recent
7509 checkpoint to be lost, in whole or in part, following a database crash and
7510 restart. This is a serious bug that has existed
7511 since <productname>PostgreSQL</productname> 7.1.
7513 <listitem><para>Remove asymmetrical word processing in tsearch (Teodor)</para></listitem>
7514 <listitem><para>Properly schema-qualify function names when pg_dump'ing a CAST</para></listitem>
7520 <sect1 id="release-7-3-6">
7521 <title>Release 7.3.6</title>
7524 <title>Release date</title>
7525 <simpara>2004-03-02</simpara>
7529 This release contains a variety of fixes from 7.3.5.
7534 <title>Migration to version 7.3.6</title>
7537 A dump/restore is <emphasis>not</emphasis> required for those
7544 <title>Changes</title>
7547 <listitem><para>Revert erroneous changes in rule permissions checking</para>
7548 <para>A patch applied in 7.3.3 to fix a corner case in rule permissions checks
7549 turns out to have disabled rule-related permissions checks in many
7550 not-so-corner cases. This would for example allow users to insert into views
7551 they weren't supposed to have permission to insert into. We have therefore
7552 reverted the 7.3.3 patch. The original bug will be fixed in 8.0.
7554 <listitem><para>Repair incorrect order of operations in
7555 GetNewTransactionId()</para>
7557 This bug could result in failure under out-of-disk-space conditions, including
7558 inability to restart even after disk space is freed.
7560 <listitem><para>Ensure configure selects -fno-strict-aliasing even when
7561 an external value for CFLAGS is supplied</para>
7563 On some platforms, building with -fstrict-aliasing causes bugs.
7565 <listitem><para>Make pg_restore handle 64-bit off_t correctly</para>
7567 This bug prevented proper restoration from archive files exceeding 4Gb.
7569 <listitem><para>Make contrib/dblink not assume that local and remote type OIDs
7570 match (Joe)</para></listitem>
7571 <listitem><para>Quote connectby()'s start_with argument properly (Joe)</para></listitem>
7572 <listitem><para>Don't crash when a rowtype argument to a plpgsql function is
7573 NULL</para></listitem>
7574 <listitem><para>Avoid generating invalid character encoding sequences in
7575 corner cases when planning LIKE operations</para></listitem>
7576 <listitem><para>Ensure text_position() cannot scan past end of source string
7577 in multibyte cases (Korea PostgreSQL Users' Group)</para></listitem>
7578 <listitem><para>Fix index optimization and selectivity estimates for LIKE
7579 operations on bytea columns (Joe)</para></listitem>
7585 <sect1 id="release-7-3-5">
7586 <title>Release 7.3.5</title>
7589 <title>Release date</title>
7590 <simpara>2003-12-03</simpara>
7594 This has a variety of fixes from 7.3.4.
7599 <title>Migration to version 7.3.5</title>
7602 A dump/restore is <emphasis>not</emphasis> required for those
7608 <title>Changes</title>
7611 <listitem><para>Force zero_damaged_pages to be on during recovery from WAL</para></listitem>
7612 <listitem><para>Prevent some obscure cases of <quote>variable not in subplan target lists</quote></para></listitem>
7613 <listitem><para>Force stats processes to detach from shared memory, ensuring cleaner shutdown</para></listitem>
7614 <listitem><para>Make PQescapeBytea and byteaout consistent with each other (Joe)</para></listitem>
7615 <listitem><para>Added missing SPI_finish() calls to dblink's get_tuple_of_interest() (Joe)</para></listitem>
7616 <listitem><para>Fix for possible foreign key violation when rule rewrites INSERT (Jan)</para></listitem>
7617 <listitem><para>Support qualified type names in PL/Tcl's spi_prepare command (Jan)</para></listitem>
7618 <listitem><para>Make pg_dump handle a procedural language handler located in pg_catalog</para></listitem>
7619 <listitem><para>Make pg_dump handle cases where a custom opclass is in another schema</para></listitem>
7620 <listitem><para>Make pg_dump dump binary-compatible casts correctly (Jan)</para></listitem>
7621 <listitem><para>Fix insertion of expressions containing subqueries into rule bodies</para></listitem>
7622 <listitem><para>Fix incorrect argument processing in clusterdb script (Anand Ranganathan)</para></listitem>
7623 <listitem><para>Fix problems with dropped columns in plpython triggers</para></listitem>
7624 <listitem><para>Repair problems with to_char() reading past end of its input string (Karel)</para></listitem>
7625 <listitem><para>Fix GB18030 mapping errors (Tatsuo)</para></listitem>
7626 <listitem><para>Fix several problems with SSL error handling and asynchronous SSL I/O</para></listitem>
7627 <listitem><para>Remove ability to bind a list of values to a single parameter in JDBC
7628 (prevents possible SQL-injection attacks)</para></listitem>
7629 <listitem><para>Fix some errors in HAVE_INT64_TIMESTAMP code paths</para></listitem>
7630 <listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
7636 <sect1 id="release-7-3-4">
7637 <title>Release 7.3.4</title>
7640 <title>Release date</title>
7641 <simpara>2003-07-24</simpara>
7645 This has a variety of fixes from 7.3.3.
7650 <title>Migration to version 7.3.4</title>
7653 A dump/restore is <emphasis>not</emphasis> required for those
7659 <title>Changes</title>
7662 <listitem><para>Repair breakage in timestamp-to-date conversion for dates before 2000</para></listitem>
7663 <listitem><para>Prevent rare possibility of server startup failure (Tom)</para></listitem>
7664 <listitem><para>Fix bugs in interval-to-time conversion (Tom)</para></listitem>
7665 <listitem><para>Add constraint names in a few places in pg_dump (Rod)</para></listitem>
7666 <listitem><para>Improve performance of functions with many parameters (Tom)</para></listitem>
7667 <listitem><para>Fix to_ascii() buffer overruns (Tom)</para></listitem>
7668 <listitem><para>Prevent restore of database comments from throwing an error (Tom)</para></listitem>
7669 <listitem><para>Work around buggy strxfrm() present in some Solaris releases (Tom)</para></listitem>
7670 <listitem><para>Properly escape jdbc setObject() strings to improve security (Barry)</para></listitem>
7676 <sect1 id="release-7-3-3">
7677 <title>Release 7.3.3</title>
7680 <title>Release date</title>
7681 <simpara>2003-05-22</simpara>
7685 This release contains a variety of fixes for version 7.3.2.
7689 <title>Migration to version 7.3.3</title>
7692 A dump/restore is <emphasis>not</emphasis> required for those
7693 running version 7.3.*.
7698 <title>Changes</title>
7701 <listitem><para>Repair sometimes-incorrect computation of StartUpID after a crash</para></listitem>
7702 <listitem><para>Avoid slowness with lots of deferred triggers in one transaction (Stephan)</para></listitem>
7703 <listitem><para>Don't lock referenced row when <command>UPDATE</command> doesn't change foreign key's value (Jan)</para></listitem>
7704 <listitem><para>Use <command>-fPIC</command> not <command>-fpic</command> on Sparc (Tom Callaway)</para></listitem>
7705 <listitem><para>Repair lack of schema-awareness in contrib/reindexdb</para></listitem>
7706 <listitem><para>Fix contrib/intarray error for zero-element result array (Teodor)</para></listitem>
7707 <listitem><para>Ensure createuser script will exit on control-C (Oliver)</para></listitem>
7708 <listitem><para>Fix errors when the type of a dropped column has itself been dropped</para></listitem>
7709 <listitem><para><command>CHECKPOINT</command> does not cause database panic on failure in noncritical steps</para></listitem>
7710 <listitem><para>Accept 60 in seconds fields of timestamp, time, interval input values</para></listitem>
7711 <listitem><para>Issue notice, not error, if <type>TIMESTAMP</type>,
7712 <type> TIME</type>, or <type>INTERVAL</type> precision too large</para></listitem>
7713 <listitem><para>Fix <function>abstime-to-time</function> cast function (fix is
7714 not applied unless you <application>initdb</application>)</para></listitem>
7715 <listitem><para>Fix <application>pg_proc</application> entry for
7716 <type>timestampt_izone</type> (fix is not applied unless you
7717 <application>initdb</application>)</para></listitem>
7718 <listitem><para>Make <function>EXTRACT(EPOCH FROM timestamp without time zone)</function> treat input as local time</para></listitem>
7719 <listitem><para><command>'now'::timestamptz</command> gave wrong answer if timezone changed earlier in transaction</para></listitem>
7720 <listitem><para><envar>HAVE_INT64_TIMESTAMP</envar> code for time with timezone overwrote its input</para></listitem>
7721 <listitem><para>Accept <command>GLOBAL TEMP/TEMPORARY</command> as a
7722 synonym for <command>TEMPORARY</command></para></listitem>
7723 <listitem><para>Avoid improper schema-privilege-check failure in foreign-key triggers</para></listitem>
7724 <listitem><para>Fix bugs in foreign-key triggers for <command>SET DEFAULT</command> action</para></listitem>
7725 <listitem><para>Fix incorrect time-qual check in row fetch for
7726 <command>UPDATE</command> and <command>DELETE</command> triggers</para></listitem>
7727 <listitem><para>Foreign-key clauses were parsed but ignored in
7728 <command>ALTER TABLE ADD COLUMN</command></para></listitem>
7729 <listitem><para>Fix createlang script breakage for case where handler function already exists</para></listitem>
7730 <listitem><para>Fix misbehavior on zero-column tables in <application>pg_dump</application>, COPY, ANALYZE, other places</para></listitem>
7731 <listitem><para>Fix misbehavior of <function>func_error()</function> on type names containing '%'</para></listitem>
7732 <listitem><para>Fix misbehavior of <function>replace()</function> on strings containing '%'</para></listitem>
7733 <listitem><para>Regular-expression patterns containing certain multibyte characters failed</para></listitem>
7734 <listitem><para>Account correctly for <command>NULL</command>s in more cases in join size estimation</para></listitem>
7735 <listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
7736 <listitem><para>Fix failure to convert large code point values in EUC_TW conversions (Tatsuo)</para></listitem>
7737 <listitem><para>Fix error recovery for <function>SSL_read</function>/<function>SSL_write</function> calls</para></listitem>
7738 <listitem><para>Don't do early constant-folding of type coercion expressions</para></listitem>
7739 <listitem><para>Validate page header fields immediately after reading in any page</para></listitem>
7740 <listitem><para>Repair incorrect check for ungrouped variables in unnamed joins</para></listitem>
7741 <listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
7742 <listitem><para>contrib/ltree fixes (Teodor)</para></listitem>
7743 <listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
7744 <listitem><para>Avoid running out of buffers in many-way indexscan (bug introduced in 7.3)</para></listitem>
7745 <listitem><para>Fix planner's selectivity estimation functions to handle domains properly</para></listitem>
7746 <listitem><para>Fix <application>dbmirror</application> memory-allocation bug (Steven Singer)</para></listitem>
7747 <listitem><para>Prevent infinite loop in <function>ln(numeric)</function> due to roundoff error</para></listitem>
7748 <listitem><para><command>GROUP BY</command> got confused if there were multiple equal GROUP BY items</para></listitem>
7749 <listitem><para>Fix bad plan when inherited <command>UPDATE</command>/<command>DELETE</command> references another inherited table</para></listitem>
7750 <listitem><para>Prevent clustering on incomplete (partial or non-NULL-storing) indexes</para></listitem>
7751 <listitem><para>Service shutdown request at proper time if it arrives while still starting up</para></listitem>
7752 <listitem><para>Fix left-links in temporary indexes (could make backwards scans miss entries)</para></listitem>
7753 <listitem><para>Fix incorrect handling of client_encoding setting in postgresql.conf (Tatsuo)</para></listitem>
7754 <listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
7755 <listitem><para>Fix SPI for case where rule contains multiple statements of the same type</para></listitem>
7756 <listitem><para>Fix problem with checking for wrong type of access privilege in rule query</para></listitem>
7757 <listitem><para>Fix problem with <command>EXCEPT</command> in <command>CREATE RULE</command></para></listitem>
7758 <listitem><para>Prevent problem with dropping temp tables having serial columns</para></listitem>
7759 <listitem><para>Fix replace_vars_with_subplan_refs failure in complex views</para></listitem>
7760 <listitem><para>Fix regexp slowness in single-byte encodings (Tatsuo)</para></listitem>
7761 <listitem><para>Allow qualified type names in <command>CREATE CAST</command>
7762 and <command> DROP CAST</command></para></listitem>
7763 <listitem><para>Accept <function>SETOF type[]</function>, which formerly had to
7764 be written <function>SETOF _type</function></para></listitem>
7765 <listitem><para>Fix <application>pg_dump</application> core dump in some cases with procedural languages</para></listitem>
7766 <listitem><para>Force ISO datestyle in <application>pg_dump</application> output, for portability (Oliver)</para></listitem>
7767 <listitem><para><application>pg_dump</application> failed to handle error return
7768 from <function>lo_read</function> (Oleg Drokin)</para></listitem>
7769 <listitem><para><application>pg_dumpall</application> failed with groups having no members (Nick Eskelinen)</para></listitem>
7770 <listitem><para><application>pg_dumpall</application> failed to recognize --globals-only switch</para></listitem>
7771 <listitem><para>pg_restore failed to restore blobs if -X disable-triggers is specified</para></listitem>
7772 <listitem><para>Repair intrafunction memory leak in plpgsql</para></listitem>
7773 <listitem><para>pltcl's <command>elog</command> command dumped core if given wrong parameters (Ian Harding)</para></listitem>
7774 <listitem><para>plpython used wrong value of <envar>atttypmod</envar> (Brad McLean)</para></listitem>
7775 <listitem><para>Fix improper quoting of boolean values in Python interface (D'Arcy)</para></listitem>
7776 <listitem><para>Added <function>addDataType()</function> method to PGConnection interface for JDBC</para></listitem>
7777 <listitem><para>Fixed various problems with updateable ResultSets for JDBC (Shawn Green)</para></listitem>
7778 <listitem><para>Fixed various problems with DatabaseMetaData for JDBC (Kris Jurka, Peter Royal)</para></listitem>
7779 <listitem><para>Fixed problem with parsing table ACLs in JDBC</para></listitem>
7780 <listitem><para>Better error message for character set conversion problems in JDBC</para></listitem>
7786 <sect1 id="release-7-3-2">
7787 <title>Release 7.3.2</title>
7790 <title>Release date</title>
7791 <simpara>2003-02-04</simpara>
7795 This release contains a variety of fixes for version 7.3.1.
7800 <title>Migration to version 7.3.2</title>
7803 A dump/restore is <emphasis>not</emphasis> required for those
7804 running version 7.3.*.
7809 <title>Changes</title>
7812 <listitem><para>Restore creation of OID column in CREATE TABLE AS / SELECT INTO</para></listitem>
7813 <listitem><para>Fix <application>pg_dump</> core dump when dumping views having comments</para></listitem>
7814 <listitem><para>Dump DEFERRABLE/INITIALLY DEFERRED constraints properly</para></listitem>
7815 <listitem><para>Fix UPDATE when child table's column numbering differs from parent</para></listitem>
7816 <listitem><para>Increase default value of max_fsm_relations</para></listitem>
7817 <listitem><para>Fix problem when fetching backwards in a cursor for a single-row query</para></listitem>
7818 <listitem><para>Make backward fetch work properly with cursor on SELECT DISTINCT query</para></listitem>
7819 <listitem><para>Fix problems with loading <application>pg_dump</> files containing contrib/lo usage</para></listitem>
7820 <listitem><para>Fix problem with all-numeric user names</para></listitem>
7821 <listitem><para>Fix possible memory leak and core dump during disconnect in libpgtcl</para></listitem>
7822 <listitem><para>Make plpython's spi_execute command handle nulls properly (Andrew Bosma)</para></listitem>
7823 <listitem><para>Adjust plpython error reporting so that its regression test passes again</para></listitem>
7824 <listitem><para>Work with bison 1.875</para></listitem>
7825 <listitem><para>Handle mixed-case names properly in plpgsql's %type (Neil)</para></listitem>
7826 <listitem><para>Fix core dump in pltcl when executing a query rewritten by a rule</para></listitem>
7827 <listitem><para>Repair array subscript overruns (per report from Yichen Xie)</para></listitem>
7828 <listitem><para>Reduce MAX_TIME_PRECISION from 13 to 10 in floating-point case</para></listitem>
7829 <listitem><para>Correctly case-fold variable names in per-database and per-user settings</para></listitem>
7830 <listitem><para>Fix coredump in plpgsql's RETURN NEXT when SELECT into record returns no rows</para></listitem>
7831 <listitem><para>Fix outdated use of pg_type.typprtlen in python client interface</para></listitem>
7832 <listitem><para>Correctly handle fractional seconds in timestamps in JDBC driver</para></listitem>
7833 <listitem><para>Improve performance of getImportedKeys() in JDBC</para></listitem>
7834 <listitem><para>Make shared-library symlinks work standardly on HPUX (Giles)</para></listitem>
7835 <listitem><para>Repair inconsistent rounding behavior for timestamp, time, interval</para></listitem>
7836 <listitem><para>SSL negotiation fixes (Nathan Mueller)</para></listitem>
7837 <listitem><para>Make libpq's ~/.pgpass feature work when connecting with PQconnectDB</para></listitem>
7838 <listitem><para>Update my2pg, ora2pg</para></listitem>
7839 <listitem><para>Translation updates</para></listitem>
7840 <listitem><para>Add casts between types lo and oid in contrib/lo</para></listitem>
7841 <listitem><para>fastpath code now checks for privilege to call function</para></listitem>
7847 <sect1 id="release-7-3-1">
7848 <title>Release 7.3.1</title>
7851 <title>Release date</title>
7852 <simpara>2002-12-18</simpara>
7856 This release contains a variety of fixes for version 7.3.
7861 <title>Migration to version 7.3.1</title>
7864 A dump/restore is <emphasis>not</emphasis> required for those
7865 running version 7.3. However, it should be noted that the main
7866 <productname>PostgreSQL</productname> interface library, libpq,
7867 has a new major version number for this release, which may require
7868 recompilation of client code in certain cases.
7873 <title>Changes</title>
7876 <listitem><para>Fix a core dump of COPY TO when client/server encodings don't match (Tom)</para></listitem>
7877 <listitem><para>Allow <application>pg_dump</> to work with pre-7.2 servers (Philip)</para></listitem>
7878 <listitem><para>contrib/adddepend fixes (Tom)</para></listitem>
7879 <listitem><para>Fix problem with deletion of per-user/per-database config settings (Tom)</para></listitem>
7880 <listitem><para>contrib/vacuumlo fix (Tom)</para></listitem>
7881 <listitem><para>Allow 'password' encryption even when pg_shadow contains MD5 passwords (Bruce)</para></listitem>
7882 <listitem><para>contrib/dbmirror fix (Steven Singer)</para></listitem>
7883 <listitem><para>Optimizer fixes (Tom)</para></listitem>
7884 <listitem><para>contrib/tsearch fixes (Teodor Sigaev, Magnus)</para></listitem>
7885 <listitem><para>Allow locale names to be mixed case (Nicolai Tufar)</para></listitem>
7886 <listitem><para>Increment libpq library's major version number (Bruce)</para></listitem>
7887 <listitem><para>pg_hba.conf error reporting fixes (Bruce, Neil)</para></listitem>
7888 <listitem><para>Add SCO Openserver 5.0.4 as a supported platform (Bruce)</para></listitem>
7889 <listitem><para>Prevent EXPLAIN from crashing server (Tom)</para></listitem>
7890 <listitem><para>SSL fixes (Nathan Mueller)</para></listitem>
7891 <listitem><para>Prevent composite column creation via ALTER TABLE (Tom)</para></listitem>
7897 <sect1 id="release-7-3">
7898 <title>Release 7.3</title>
7901 <title>Release date</title>
7902 <simpara>2002-11-27</simpara>
7906 <title>Overview</title>
7909 Major changes in this release:
7914 <term>Schemas</term>
7917 Schemas allow users to create objects in separate namespaces,
7918 so two people or applications can have tables with the same
7919 name. There is also a public schema for shared tables.
7920 Table/index creation can be restricted by removing privileges
7921 on the public schema.
7927 <term>Drop Column</term>
7930 <productname>PostgreSQL</productname> now supports the
7931 <literal>ALTER TABLE ... DROP COLUMN</literal> functionality.
7937 <term>Table Functions</term>
7940 Functions returning multiple rows and/or multiple columns are
7941 now much easier to use than before. You can call such a
7942 <quote>table function</quote> in the <literal>SELECT</literal>
7943 <literal>FROM</literal> clause, treating its output like a
7944 table. Also, <application>PL/pgSQL</application> functions can
7951 <term>Prepared Queries</term>
7954 <productname>PostgreSQL</productname> now supports prepared
7955 queries, for improved performance.
7961 <term>Dependency Tracking</term>
7964 <productname>PostgreSQL</productname> now records object
7965 dependencies, which allows improvements in many areas.
7966 <command>DROP</command> statements now take either
7967 <literal>CASCADE</> or <literal>RESTRICT</> to control whether
7968 dependent objects are also dropped.
7974 <term>Privileges</term>
7977 Functions and procedural languages now have privileges, and
7978 functions can be defined to run with the privileges of their
7985 <term>Internationalization</term>
7988 Both multibyte and locale support are now always enabled.
7994 <term>Logging</term>
7997 A variety of logging options have been enhanced.
8003 <term>Interfaces</term>
8006 A large number of interfaces have been moved to <ulink
8007 url="http://gborg.postgresql.org">http://gborg.postgresql.org</>
8008 where they can be developed and released independently.
8014 <term>Functions/Identifiers</term>
8017 By default, functions can now take up to 32 parameters, and
8018 identifiers can be up to 63 bytes long. Also, <literal>OPAQUE</>
8019 is now deprecated: there are specific <quote>pseudo-datatypes</>
8020 to represent each of the former meanings of <literal>OPAQUE</>
8021 in function argument and result types.
8030 <title>Migration to version 7.3</title>
8033 A dump/restore using <application>pg_dump</> is required for those
8034 wishing to migrate data from any previous release. If your
8035 application examines the system catalogs, additional changes will
8036 be required due to the introduction of schemas in 7.3; for more
8037 information, see: <ulink
8038 url="http://developer.postgresql.org/~momjian/upgrade_tips_7.3"></>.
8042 Observe the following incompatibilities:
8048 Pre-6.3 clients are no longer supported.
8054 <filename>pg_hba.conf</filename> now has a column for the user
8055 name and additional features. Existing files need to be
8062 Several <filename>postgresql.conf</filename> logging parameters
8069 <literal>LIMIT #,#</literal> has been disabled; use
8070 <literal>LIMIT # OFFSET #</literal>.
8076 <command>INSERT</command> statements with column lists must
8077 specify a value for each specified column. For example,
8078 <literal>INSERT INTO tab (col1, col2) VALUES ('val1')</literal>
8079 is now invalid. It's still allowed to supply fewer columns than
8080 expected if the <command>INSERT</command> does not have a column list.
8086 <type>serial</type> columns are no longer automatically
8087 <literal>UNIQUE</>; thus, an index will not automatically be
8094 A <command>SET</command> command inside an aborted transaction
8101 <command>COPY</command> no longer considers missing trailing
8102 columns to be null. All columns need to be specified.
8103 (However, one may achieve a similar effect by specifying a
8104 column list in the <command>COPY</command> command.)
8110 The data type <type>timestamp</type> is now equivalent to
8111 <type>timestamp without time zone</type>, instead of
8112 <type>timestamp with time zone</type>.
8118 Pre-7.3 databases loaded into 7.3 will not have the new object
8119 dependencies for <type>serial</type> columns, unique
8120 constraints, and foreign keys. See the directory
8121 <filename>contrib/adddepend/</filename> for a detailed
8122 description and a script that will add such dependencies.
8128 An empty string (<literal>''</literal>) is no longer allowed as
8129 the input into an integer field. Formerly, it was silently
8138 <title>Changes</title>
8141 <title>Server Operation</title>
8143 <listitem><para>Add pg_locks view to show locks (Neil)</para></listitem>
8144 <listitem><para>Security fixes for password negotiation memory allocation (Neil)</para></listitem>
8145 <listitem><para>Remove support for version 0 FE/BE protocol (<productname>PostgreSQL</productname> 6.2 and earlier) (Tom)</para></listitem>
8146 <listitem><para>Reserve the last few backend slots for superusers, add parameter superuser_reserved_connections to control this (Nigel J. Andrews)</para></listitem>
8151 <title>Performance</title>
8153 <listitem><para>Improve startup by calling localtime() only once (Tom)</para></listitem>
8154 <listitem><para>Cache system catalog information in flat files for faster startup (Tom)</para></listitem>
8155 <listitem><para>Improve caching of index information (Tom)</para></listitem>
8156 <listitem><para>Optimizer improvements (Tom, Fernando Nasser)</para></listitem>
8157 <listitem><para>Catalog caches now store failed lookups (Tom)</para></listitem>
8158 <listitem><para>Hash function improvements (Neil)</para></listitem>
8159 <listitem><para>Improve performance of query tokenization and network handling (Peter)</para></listitem>
8160 <listitem><para>Speed improvement for large object restore (Mario Weilguni)</para></listitem>
8161 <listitem><para>Mark expired index entries on first lookup, saving later heap fetches (Tom)</para></listitem>
8162 <listitem><para>Avoid excessive NULL bitmap padding (Manfred Koizar)</para></listitem>
8163 <listitem><para>Add BSD-licensed qsort() for Solaris, for performance (Bruce)</para></listitem>
8164 <listitem><para>Reduce per-row overhead by four bytes (Manfred Koizar)</para></listitem>
8165 <listitem><para>Fix GEQO optimizer bug (Neil Conway)</para></listitem>
8166 <listitem><para>Make WITHOUT OID actually save four bytes per row (Manfred Koizar)</para></listitem>
8167 <listitem><para>Add default_statistics_target variable to specify ANALYZE buckets (Neil)</para></listitem>
8168 <listitem><para>Use local buffer cache for temporary tables so no WAL overhead (Tom)</para></listitem>
8169 <listitem><para>Improve free space map performance on large tables (Stephen Marshall, Tom)</para></listitem>
8170 <listitem><para>Improved WAL write concurrency (Tom)</para></listitem>
8175 <title>Privileges</title>
8177 <listitem><para>Add privileges on functions and procedural languages (Peter)</para></listitem>
8178 <listitem><para>Add OWNER to CREATE DATABASE so superusers can create databases on behalf of unprivileged users (Gavin Sherry, Tom)</para></listitem>
8179 <listitem><para>Add new object privilege bits EXECUTE and USAGE (Tom)</para></listitem>
8180 <listitem><para>Add SET SESSION AUTHORIZATION DEFAULT and RESET SESSION AUTHORIZATION (Tom)</para></listitem>
8181 <listitem><para>Allow functions to be executed with the privilege of the function owner (Peter)</para></listitem>
8186 <title>Server Configuration</title>
8188 <listitem><para>Server log messages now tagged with LOG, not DEBUG (Bruce)</para></listitem>
8189 <listitem><para>Add user column to pg_hba.conf (Bruce)</para></listitem>
8190 <listitem><para>Have log_connections output two lines in log file (Tom)</para></listitem>
8191 <listitem><para>Remove debug_level from postgresql.conf, now server_min_messages (Bruce)</para></listitem>
8192 <listitem><para>New ALTER DATABASE/USER ... SET command for per-user/database initialization (Peter)</para></listitem>
8193 <listitem><para>New parameters server_min_messages and client_min_messages to control which messages are sent to the server logs or client applications (Bruce)</para></listitem>
8194 <listitem><para>Allow pg_hba.conf to specify lists of users/databases separated by commas, group names prepended with +, and file names prepended with @ (Bruce)</para></listitem>
8195 <listitem><para>Remove secondary password file capability and pg_password utility (Bruce)</para></listitem>
8196 <listitem><para>Add variable db_user_namespace for database-local user names (Bruce)</para></listitem>
8197 <listitem><para>SSL improvements (Bear Giles)</para></listitem>
8198 <listitem><para>Make encryption of stored passwords the default (Bruce)</para></listitem>
8199 <listitem><para>Allow pg_statistics to be reset by calling pg_stat_reset() (Christopher)</para></listitem>
8200 <listitem><para>Add log_duration parameter (Bruce)</para></listitem>
8201 <listitem><para>Rename debug_print_query to log_statement (Bruce)</para></listitem>
8202 <listitem><para>Rename show_query_stats to show_statement_stats (Bruce)</para></listitem>
8203 <listitem><para>Add param log_min_error_statement to print commands to logs on error (Gavin)</para></listitem>
8208 <title>Queries</title>
8210 <listitem><para>Make cursors insensitive, meaning their contents do not change (Tom)</para></listitem>
8211 <listitem><para>Disable LIMIT #,# syntax; now only LIMIT # OFFSET # supported (Bruce)</para></listitem>
8212 <listitem><para>Increase identifier length to 63 (Neil, Bruce)</para></listitem>
8213 <listitem><para>UNION fixes for merging >= 3 columns of different lengths (Tom)</para></listitem>
8214 <listitem><para>Add DEFAULT key word to INSERT, e.g., INSERT ... (..., DEFAULT, ...) (Rod)</para></listitem>
8215 <listitem><para>Allow views to have default values using ALTER COLUMN ... SET DEFAULT (Neil)</para></listitem>
8216 <listitem><para>Fail on INSERTs with column lists that don't supply all column values, e.g., INSERT INTO tab (col1, col2) VALUES ('val1'); (Rod)</para></listitem>
8217 <listitem><para>Fix for join aliases (Tom)</para></listitem>
8218 <listitem><para>Fix for FULL OUTER JOINs (Tom)</para></listitem>
8219 <listitem><para>Improve reporting of invalid identifier and location (Tom, Gavin)</para></listitem>
8220 <listitem><para>Fix OPEN cursor(args) (Tom)</para></listitem>
8221 <listitem><para>Allow 'ctid' to be used in a view and currtid(viewname) (Hiroshi)</para></listitem>
8222 <listitem><para>Fix for CREATE TABLE AS with UNION (Tom)</para></listitem>
8223 <listitem><para>SQL99 syntax improvements (Thomas)</para></listitem>
8224 <listitem><para>Add statement_timeout variable to cancel queries (Bruce)</para></listitem>
8225 <listitem><para>Allow prepared queries with PREPARE/EXECUTE (Neil)</para></listitem>
8226 <listitem><para>Allow FOR UPDATE to appear after LIMIT/OFFSET (Bruce)</para></listitem>
8227 <listitem><para>Add variable autocommit (Tom, David Van Wie)</para></listitem>
8232 <title>Object Manipulation</title>
8234 <listitem><para>Make equals signs optional in CREATE DATABASE (Gavin Sherry)</para></listitem>
8235 <listitem><para>Make ALTER TABLE OWNER change index ownership too (Neil)</para></listitem>
8236 <listitem><para>New ALTER TABLE tabname ALTER COLUMN colname SET STORAGE controls TOAST storage, compression (John Gray)</para></listitem>
8237 <listitem><para>Add schema support, CREATE/DROP SCHEMA (Tom)</para></listitem>
8238 <listitem><para>Create schema for temporary tables (Tom)</para></listitem>
8239 <listitem><para>Add variable search_path for schema search (Tom)</para></listitem>
8240 <listitem><para>Add ALTER TABLE SET/DROP NOT NULL (Christopher)</para></listitem>
8241 <listitem><para>New CREATE FUNCTION volatility levels (Tom)</para></listitem>
8242 <listitem><para>Make rule names unique only per table (Tom)</para></listitem>
8243 <listitem><para>Add 'ON tablename' clause to DROP RULE and COMMENT ON RULE (Tom)</para></listitem>
8244 <listitem><para>Add ALTER TRIGGER RENAME (Joe)</para></listitem>
8245 <listitem><para>New current_schema() and current_schemas() inquiry functions (Tom)</para></listitem>
8246 <listitem><para>Allow functions to return multiple rows (table functions) (Joe)</para></listitem>
8247 <listitem><para>Make WITH optional in CREATE DATABASE, for consistency (Bruce)</para></listitem>
8248 <listitem><para>Add object dependency tracking (Rod, Tom)</para></listitem>
8249 <listitem><para>Add RESTRICT/CASCADE to DROP commands (Rod)</para></listitem>
8250 <listitem><para>Add ALTER TABLE DROP for non-CHECK CONSTRAINT (Rod)</para></listitem>
8251 <listitem><para>Autodestroy sequence on DROP of table with SERIAL (Rod)</para></listitem>
8252 <listitem><para>Prevent column dropping if column is used by foreign key (Rod)</para></listitem>
8253 <listitem><para>Automatically drop constraints/functions when object is dropped (Rod)</para></listitem>
8254 <listitem><para>Add CREATE/DROP OPERATOR CLASS (Bill Studenmund, Tom)</para></listitem>
8255 <listitem><para>Add ALTER TABLE DROP COLUMN (Christopher, Tom, Hiroshi)</para></listitem>
8256 <listitem><para>Prevent inherited columns from being removed or renamed (Alvaro Herrera)</para></listitem>
8257 <listitem><para>Fix foreign key constraints to not error on intermediate database states (Stephan)</para></listitem>
8258 <listitem><para>Propagate column or table renaming to foreign key constraints</para></listitem>
8259 <listitem><para>Add CREATE OR REPLACE VIEW (Gavin, Neil, Tom)</para></listitem>
8260 <listitem><para>Add CREATE OR REPLACE RULE (Gavin, Neil, Tom)</para></listitem>
8261 <listitem><para>Have rules execute alphabetically, returning more predictable values (Tom)</para></listitem>
8262 <listitem><para>Triggers are now fired in alphabetical order (Tom)</para></listitem>
8263 <listitem><para>Add /contrib/adddepend to handle pre-7.3 object dependencies (Rod)</para></listitem>
8264 <listitem><para>Allow better casting when inserting/updating values (Tom)</para></listitem>
8269 <title>Utility Commands</title>
8271 <listitem><para>Have COPY TO output embedded carriage returns and newlines as \r and \n (Tom)</para></listitem>
8272 <listitem><para>Allow DELIMITER in COPY FROM to be 8-bit clean (Tatsuo)</para></listitem>
8273 <listitem><para>Make <application>pg_dump</> use ALTER TABLE ADD PRIMARY KEY, for performance (Neil)</para></listitem>
8274 <listitem><para>Disable brackets in multistatement rules (Bruce)</para></listitem>
8275 <listitem><para>Disable VACUUM from being called inside a function (Bruce)</para></listitem>
8276 <listitem><para>Allow dropdb and other scripts to use identifiers with spaces (Bruce)</para></listitem>
8277 <listitem><para>Restrict database comment changes to the current database</para></listitem>
8278 <listitem><para>Allow comments on operators, independent of the underlying function (Rod)</para></listitem>
8279 <listitem><para>Rollback SET commands in aborted transactions (Tom)</para></listitem>
8280 <listitem><para>EXPLAIN now outputs as a query (Tom)</para></listitem>
8281 <listitem><para>Display condition expressions and sort keys in EXPLAIN (Tom)</para></listitem>
8282 <listitem><para>Add 'SET LOCAL var = value' to set configuration variables for a single transaction (Tom)</para></listitem>
8283 <listitem><para>Allow ANALYZE to run in a transaction (Bruce)</para></listitem>
8284 <listitem><para>Improve COPY syntax using new WITH clauses, keep backward compatibility (Bruce)</para></listitem>
8285 <listitem><para>Fix <application>pg_dump</> to consistently output tags in non-ASCII dumps (Bruce)</para></listitem>
8286 <listitem><para>Make foreign key constraints clearer in dump file (Rod)</para></listitem>
8287 <listitem><para>Add COMMENT ON CONSTRAINT (Rod)</para></listitem>
8288 <listitem><para>Allow COPY TO/FROM to specify column names (Brent Verner)</para></listitem>
8289 <listitem><para>Dump UNIQUE and PRIMARY KEY constraints as ALTER TABLE (Rod)</para></listitem>
8290 <listitem><para>Have SHOW output a query result (Joe)</para></listitem>
8291 <listitem><para>Generate failure on short COPY lines rather than pad NULLs (Neil)</para></listitem>
8292 <listitem><para>Fix CLUSTER to preserve all table attributes (Alvaro Herrera)</para></listitem>
8293 <listitem><para>New pg_settings table to view/modify GUC settings (Joe)</para></listitem>
8294 <listitem><para>Add smart quoting, portability improvements to <application>pg_dump</> output (Peter)</para></listitem>
8295 <listitem><para>Dump serial columns out as SERIAL (Tom)</para></listitem>
8296 <listitem><para>Enable large file support, >2G for <application>pg_dump</> (Peter, Philip Warner, Bruce)</para></listitem>
8297 <listitem><para>Disallow TRUNCATE on tables that are involved in referential constraints (Rod)</para></listitem>
8298 <listitem><para>Have TRUNCATE also auto-truncate the toast table of the relation (Tom)</para></listitem>
8299 <listitem><para>Add clusterdb utility that will auto-cluster an entire database based on previous CLUSTER operations (Alvaro Herrera)</para></listitem>
8300 <listitem><para>Overhaul pg_dumpall (Peter)</para></listitem>
8301 <listitem><para>Allow REINDEX of TOAST tables (Tom)</para></listitem>
8302 <listitem><para>Implemented START TRANSACTION, per SQL99 (Neil)</para></listitem>
8303 <listitem><para>Fix rare index corruption when a page split affects bulk delete (Tom)</para></listitem>
8304 <listitem><para>Fix ALTER TABLE ... ADD COLUMN for inheritance (Alvaro Herrera)</para></listitem>
8309 <title>Data Types and Functions</title>
8311 <listitem><para>Fix factorial(0) to return 1 (Bruce)</para></listitem>
8312 <listitem><para>Date/time/timezone improvements (Thomas)</para></listitem>
8313 <listitem><para>Fix for array slice extraction (Tom)</para></listitem>
8314 <listitem><para>Fix extract/date_part to report proper microseconds for timestamp (Tatsuo)</para></listitem>
8315 <listitem><para>Allow text_substr() and bytea_substr() to read TOAST values more efficiently (John Gray)</para></listitem>
8316 <listitem><para>Add domain support (Rod)</para></listitem>
8317 <listitem><para>Make WITHOUT TIME ZONE the default for TIMESTAMP and TIME data types (Thomas)</para></listitem>
8318 <listitem><para>Allow alternate storage scheme of 64-bit integers for date/time types using --enable-integer-datetimes in configure (Thomas)</para></listitem>
8319 <listitem><para>Make timezone(timestamptz) return timestamp rather than a string (Thomas)</para></listitem>
8320 <listitem><para>Allow fractional seconds in date/time types for dates prior to 1BC (Thomas)</para></listitem>
8321 <listitem><para>Limit timestamp data types to 6 decimal places of precision (Thomas)</para></listitem>
8322 <listitem><para>Change timezone conversion functions from timetz() to timezone() (Thomas)</para></listitem>
8323 <listitem><para>Add configuration variables datestyle and timezone (Tom)</para></listitem>
8324 <listitem><para>Add OVERLAY(), which allows substitution of a substring in a string (Thomas)</para></listitem>
8325 <listitem><para>Add SIMILAR TO (Thomas, Tom)</para></listitem>
8326 <listitem><para>Add regular expression SUBSTRING(string FROM pat FOR escape) (Thomas)</para></listitem>
8327 <listitem><para>Add LOCALTIME and LOCALTIMESTAMP functions (Thomas)</para></listitem>
8328 <listitem><para>Add named composite types using CREATE TYPE typename AS (column) (Joe)</para></listitem>
8329 <listitem><para>Allow composite type definition in the table alias clause (Joe)</para></listitem>
8330 <listitem><para>Add new API to simplify creation of C language table functions (Joe)</para></listitem>
8331 <listitem><para>Remove ODBC-compatible empty parentheses from calls to SQL99 functions for which these parentheses do not match the standard (Thomas)</para></listitem>
8332 <listitem><para>Allow macaddr data type to accept 12 hex digits with no separators (Mike Wyer)</para></listitem>
8333 <listitem><para>Add CREATE/DROP CAST (Peter)</para></listitem>
8334 <listitem><para>Add IS DISTINCT FROM operator (Thomas)</para></listitem>
8335 <listitem><para>Add SQL99 TREAT() function, synonym for CAST() (Thomas)</para></listitem>
8336 <listitem><para>Add pg_backend_pid() to output backend pid (Bruce)</para></listitem>
8337 <listitem><para>Add IS OF / IS NOT OF type predicate (Thomas)</para></listitem>
8338 <listitem><para>Allow bit string constants without fully-specified length (Thomas)</para></listitem>
8339 <listitem><para>Allow conversion between 8-byte integers and bit strings (Thomas)</para></listitem>
8340 <listitem><para>Implement hex literal conversion to bit string literal (Thomas)</para></listitem>
8341 <listitem><para>Allow table functions to appear in the FROM clause (Joe)</para></listitem>
8342 <listitem><para>Increase maximum number of function parameters to 32 (Bruce)</para></listitem>
8343 <listitem><para>No longer automatically create index for SERIAL column (Tom)</para></listitem>
8344 <listitem><para>Add current_database() (Rod)</para></listitem>
8345 <listitem><para>Fix cash_words() to not overflow buffer (Tom)</para></listitem>
8346 <listitem><para>Add functions replace(), split_part(), to_hex() (Joe)</para></listitem>
8347 <listitem><para>Fix LIKE for bytea as a right-hand argument (Joe)</para></listitem>
8348 <listitem><para>Prevent crashes caused by SELECT cash_out(2) (Tom)</para></listitem>
8349 <listitem><para>Fix to_char(1,'FM999.99') to return a period (Karel)</para></listitem>
8350 <listitem><para>Fix trigger/type/language functions returning OPAQUE to return proper type (Tom)</para></listitem>
8355 <title>Internationalization</title>
8357 <listitem><para>Add additional encodings: Korean (JOHAB), Thai (WIN874), Vietnamese (TCVN), Arabic (WIN1256), Simplified Chinese (GBK), Korean (UHC) (Eiji Tokuya)</para></listitem>
8358 <listitem><para>Enable locale support by default (Peter)</para></listitem>
8359 <listitem><para>Add locale variables (Peter)</para></listitem>
8360 <listitem><para>Escape byes >= 0x7f for multibyte in PQescapeBytea/PQunescapeBytea (Tatsuo)</para></listitem>
8361 <listitem><para>Add locale awareness to regular expression character classes</para></listitem>
8362 <listitem><para>Enable multibyte support by default (Tatsuo)</para></listitem>
8363 <listitem><para>Add GB18030 multibyte support (Bill Huang)</para></listitem>
8364 <listitem><para>Add CREATE/DROP CONVERSION, allowing loadable encodings (Tatsuo, Kaori)</para></listitem>
8365 <listitem><para>Add pg_conversion table (Tatsuo)</para></listitem>
8366 <listitem><para>Add SQL99 CONVERT() function (Tatsuo)</para></listitem>
8367 <listitem><para>pg_dumpall, pg_controldata, and pg_resetxlog now national-language aware (Peter)</para></listitem>
8368 <listitem><para>New and updated translations</para></listitem>
8373 <title>Server-side Languages</title>
8375 <listitem><para>Allow recursive SQL function (Peter)</para></listitem>
8376 <listitem><para>Change PL/Tcl build to use configured compiler and Makefile.shlib (Peter)</para></listitem>
8377 <listitem><para>Overhaul the PL/pgSQL FOUND variable to be more Oracle-compatible (Neil, Tom)</para></listitem>
8378 <listitem><para>Allow PL/pgSQL to handle quoted identifiers (Tom)</para></listitem>
8379 <listitem><para>Allow set-returning PL/pgSQL functions (Neil)</para></listitem>
8380 <listitem><para>Make PL/pgSQL schema-aware (Joe)</para></listitem>
8381 <listitem><para>Remove some memory leaks (Nigel J. Andrews, Tom)</para></listitem>
8388 <listitem><para>Don't lowercase psql \connect database name for 7.2.0 compatibility (Tom)</para></listitem>
8389 <listitem><para>Add psql \timing to time user queries (Greg Sabino Mullane)</para></listitem>
8390 <listitem><para>Have psql \d show index information (Greg Sabino Mullane)</para></listitem>
8391 <listitem><para>New psql \dD shows domains (Jonathan Eisler)</para></listitem>
8392 <listitem><para>Allow psql to show rules on views (Paul ?)</para></listitem>
8393 <listitem><para>Fix for psql variable substitution (Tom)</para></listitem>
8394 <listitem><para>Allow psql \d to show temporary table structure (Tom)</para></listitem>
8395 <listitem><para>Allow psql \d to show foreign keys (Rod)</para></listitem>
8396 <listitem><para>Fix \? to honor \pset pager (Bruce)</para></listitem>
8397 <listitem><para>Have psql reports its version number on startup (Tom)</para></listitem>
8398 <listitem><para>Allow \copy to specify column names (Tom)</para></listitem>
8403 <title>libpq</title>
8405 <listitem><para>Add ~/.pgpass to store host/user password combinations (Alvaro Herrera)</para></listitem>
8406 <listitem><para>Add PQunescapeBytea() function to libpq (Patrick Welche)</para></listitem>
8407 <listitem><para>Fix for sending large queries over non-blocking connections (Bernhard Herzog)</para></listitem>
8408 <listitem><para>Fix for libpq using timers on Win9X (David Ford)</para></listitem>
8409 <listitem><para>Allow libpq notify to handle servers with different-length identifiers (Tom)</para></listitem>
8410 <listitem><para>Add libpq PQescapeString() and PQescapeBytea() to Windows (Bruce)</para></listitem>
8411 <listitem><para>Fix for SSL with non-blocking connections (Jack Bates)</para></listitem>
8412 <listitem><para>Add libpq connection timeout parameter (Denis A Ustimenko)</para></listitem>
8419 <listitem><para>Allow JDBC to compile with JDK 1.4 (Dave)</para></listitem>
8420 <listitem><para>Add JDBC 3 support (Barry)</para></listitem>
8421 <listitem><para>Allows JDBC to set loglevel by adding ?loglevel=X to the connection URL (Barry)</para></listitem>
8422 <listitem><para>Add Driver.info() message that prints out the version number (Barry)</para></listitem>
8423 <listitem><para>Add updateable result sets (Raghu Nidagal, Dave)</para></listitem>
8424 <listitem><para>Add support for callable statements (Paul Bethe)</para></listitem>
8425 <listitem><para>Add query cancel capability</para></listitem>
8426 <listitem><para>Add refresh row (Dave)</para></listitem>
8427 <listitem><para>Fix MD5 encryption handling for multibyte servers (Jun Kawai)</para></listitem>
8428 <listitem><para>Add support for prepared statements (Barry)</para></listitem>
8433 <title>Miscellaneous Interfaces</title>
8435 <listitem><para>Fixed ECPG bug concerning octal numbers in single quotes (Michael)</para></listitem>
8436 <listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
8437 <listitem><para>Improve Python interface (Elliot Lee, Andrew Johnson, Greg Copeland)</para></listitem>
8438 <listitem><para>Add libpgtcl connection close event (Gerhard Hintermayer)</para></listitem>
8439 <listitem><para>Move src/interfaces/libpq++ to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
8440 <listitem><para>Move src/interfaces/odbc to http://gborg.postgresql.org (Marc)</para></listitem>
8441 <listitem><para>Move src/interfaces/libpgeasy to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
8442 <listitem><para>Move src/interfaces/perl5 to http://gborg.postgresql.org (Marc, Bruce)</para></listitem>
8443 <listitem><para>Remove src/bin/pgaccess from main tree, now at http://www.pgaccess.org (Bruce)</para></listitem>
8444 <listitem><para>Add pg_on_connection_loss command to libpgtcl (Gerhard Hintermayer, Tom)</para></listitem>
8449 <title>Source Code</title>
8451 <listitem><para>Fix for parallel make (Peter)</para></listitem>
8452 <listitem><para>AIX fixes for linking Tcl (Andreas Zeugswetter)</para></listitem>
8453 <listitem><para>Allow PL/Perl to build under Cygwin (Jason Tishler)</para></listitem>
8454 <listitem><para>Improve MIPS compiles (Peter, Oliver Elphick)</para></listitem>
8455 <listitem><para>Require Autoconf version 2.53 (Peter)</para></listitem>
8456 <listitem><para>Require readline and zlib by default in configure (Peter)</para></listitem>
8457 <listitem><para>Allow Solaris to use Intimate Shared Memory (ISM), for performance (Scott Brunza, P.J. Josh Rovero)</para></listitem>
8458 <listitem><para>Always enable syslog in compile, remove --enable-syslog option (Tatsuo)</para></listitem>
8459 <listitem><para>Always enable multibyte in compile, remove --enable-multibyte option (Tatsuo)</para></listitem>
8460 <listitem><para>Always enable locale in compile, remove --enable-locale option (Peter)</para></listitem>
8461 <listitem><para>Fix for Win9x DLL creation (Magnus Naeslund)</para></listitem>
8462 <listitem><para>Fix for link() usage by WAL code on Windows, BeOS (Jason Tishler)</para></listitem>
8463 <listitem><para>Add sys/types.h to c.h, remove from main files (Peter, Bruce)</para></listitem>
8464 <listitem><para>Fix AIX hang on SMP machines (Tomoyuki Niijima)</para></listitem>
8465 <listitem><para>AIX SMP hang fix (Tomoyuki Niijima)</para></listitem>
8466 <listitem><para>Fix pre-1970 date handling on newer glibc libraries (Tom)</para></listitem>
8467 <listitem><para>Fix PowerPC SMP locking (Tom)</para></listitem>
8468 <listitem><para>Prevent gcc -ffast-math from being used (Peter, Tom)</para></listitem>
8469 <listitem><para>Bison >= 1.50 now required for developer builds</para></listitem>
8470 <listitem><para>Kerberos 5 support now builds with Heimdal (Peter)</para></listitem>
8471 <listitem><para>Add appendix in the User's Guide which lists SQL features (Thomas)</para></listitem>
8472 <listitem><para>Improve loadable module linking to use RTLD_NOW (Tom)</para></listitem>
8473 <listitem><para>New error levels WARNING, INFO, LOG, DEBUG[1-5] (Bruce)</para></listitem>
8474 <listitem><para>New src/port directory holds replaced libc functions (Peter, Bruce)</para></listitem>
8475 <listitem><para>New pg_namespace system catalog for schemas (Tom)</para></listitem>
8476 <listitem><para>Add pg_class.relnamespace for schemas (Tom)</para></listitem>
8477 <listitem><para>Add pg_type.typnamespace for schemas (Tom)</para></listitem>
8478 <listitem><para>Add pg_proc.pronamespace for schemas (Tom)</para></listitem>
8479 <listitem><para>Restructure aggregates to have pg_proc entries (Tom)</para></listitem>
8480 <listitem><para>System relations now have their own namespace, pg_* test not required (Fernando Nasser)</para></listitem>
8481 <listitem><para>Rename TOAST index names to be *_index rather than *_idx (Neil)</para></listitem>
8482 <listitem><para>Add namespaces for operators, opclasses (Tom)</para></listitem>
8483 <listitem><para>Add additional checks to server control file (Thomas)</para></listitem>
8484 <listitem><para>New Polish FAQ (Marcin Mazurek)</para></listitem>
8485 <listitem><para>Add Posix semaphore support (Tom)</para></listitem>
8486 <listitem><para>Document need for reindex (Bruce)</para></listitem>
8487 <listitem><para>Rename some internal identifiers to simplify Windows compile (Jan, Katherine Ward)</para></listitem>
8488 <listitem><para>Add documentation on computing disk space (Bruce)</para></listitem>
8489 <listitem><para>Remove KSQO from GUC (Bruce)</para></listitem>
8490 <listitem><para>Fix memory leak in rtree (Kenneth Been)</para></listitem>
8491 <listitem><para>Modify a few error messages for consistency (Bruce)</para></listitem>
8492 <listitem><para>Remove unused system table columns (Peter)</para></listitem>
8493 <listitem><para>Make system columns NOT NULL where appropriate (Tom)</para></listitem>
8494 <listitem><para>Clean up use of sprintf in favor of snprintf() (Neil, Jukka Holappa)</para></listitem>
8495 <listitem><para>Remove OPAQUE and create specific subtypes (Tom)</para></listitem>
8496 <listitem><para>Cleanups in array internal handling (Joe, Tom)</para></listitem>
8497 <listitem><para>Disallow pg_atoi('') (Bruce)</para></listitem>
8498 <listitem><para>Remove parameter wal_files because WAL files are now recycled (Bruce)</para></listitem>
8499 <listitem><para>Add version numbers to heap pages (Tom)</para></listitem>
8504 <title>Contrib</title>
8506 <listitem><para>Allow inet arrays in /contrib/array (Neil)</para></listitem>
8507 <listitem><para>GiST fixes (Teodor Sigaev, Neil)</para></listitem>
8508 <listitem><para>Upgrade /contrib/mysql</para></listitem>
8509 <listitem><para>Add /contrib/dbsize which shows table sizes without vacuum (Peter)</para></listitem>
8510 <listitem><para>Add /contrib/intagg, integer aggregator routines (mlw)</para></listitem>
8511 <listitem><para>Improve /contrib/oid2name (Neil, Bruce)</para></listitem>
8512 <listitem><para>Improve /contrib/tsearch (Oleg, Teodor Sigaev)</para></listitem>
8513 <listitem><para>Cleanups of /contrib/rserver (Alexey V. Borzov)</para></listitem>
8514 <listitem><para>Update /contrib/oracle conversion utility (Gilles Darold)</para></listitem>
8515 <listitem><para>Update /contrib/dblink (Joe)</para></listitem>
8516 <listitem><para>Improve options supported by /contrib/vacuumlo (Mario Weilguni)</para></listitem>
8517 <listitem><para>Improvements to /contrib/intarray (Oleg, Teodor Sigaev, Andrey Oktyabrski)</para></listitem>
8518 <listitem><para>Add /contrib/reindexdb utility (Shaun Thomas)</para></listitem>
8519 <listitem><para>Add indexing to /contrib/isbn_issn (Dan Weston)</para></listitem>
8520 <listitem><para>Add /contrib/dbmirror (Steven Singer)</para></listitem>
8521 <listitem><para>Improve /contrib/pgbench (Neil)</para></listitem>
8522 <listitem><para>Add /contrib/tablefunc table function examples (Joe)</para></listitem>
8523 <listitem><para>Add /contrib/ltree data type for tree structures (Teodor Sigaev, Oleg Bartunov)</para></listitem>
8524 <listitem><para>Move /contrib/pg_controldata, pg_resetxlog into main tree (Bruce)</para></listitem>
8525 <listitem><para>Fixes to /contrib/cube (Bruno Wolff)</para></listitem>
8526 <listitem><para>Improve /contrib/fulltextindex (Christopher)</para></listitem>
8533 <sect1 id="release-7-2-8">
8534 <title>Release 7.2.8</title>
8537 <title>Release date</title>
8538 <simpara>2005-05-09</simpara>
8542 This release contains a variety of fixes from 7.2.7, including one
8543 security-related issue.
8547 <title>Migration to version 7.2.8</title>
8550 A dump/restore is not required for those running 7.2.X.
8555 <title>Changes</title>
8558 <listitem><para>Repair ancient race condition that allowed a transaction to be
8559 seen as committed for some purposes (eg SELECT FOR UPDATE) slightly sooner
8560 than for other purposes</para>
8561 <para>This is an extremely serious bug since it could lead to apparent
8562 data inconsistencies being briefly visible to applications.</para></listitem>
8563 <listitem><para>Repair race condition between relation extension and
8565 <para>This could theoretically have caused loss of a page's worth of
8566 freshly-inserted data, although the scenario seems of very low probability.
8567 There are no known cases of it having caused more than an Assert failure.
8569 <listitem><para>Fix <function>EXTRACT(EPOCH)</> for
8570 <type>TIME WITH TIME ZONE</> values</para></listitem>
8571 <listitem><para>Additional buffer overrun checks in plpgsql
8572 (Neil)</para></listitem>
8573 <listitem><para>Fix pg_dump to dump index names and trigger names containing
8574 <literal>%</> correctly (Neil)</para></listitem>
8575 <listitem><para>Prevent <function>to_char(interval)</> from dumping core for
8576 month-related formats</para></listitem>
8577 <listitem><para>Fix <filename>contrib/pgcrypto</> for newer OpenSSL builds
8578 (Marko Kreen)</para></listitem>
8584 <sect1 id="release-7-2-7">
8585 <title>Release 7.2.7</title>
8588 <title>Release date</title>
8589 <simpara>2005-01-31</simpara>
8593 This release contains a variety of fixes from 7.2.6, including several
8594 security-related issues.
8598 <title>Migration to version 7.2.7</title>
8601 A dump/restore is not required for those running 7.2.X.
8606 <title>Changes</title>
8609 <listitem><para>Disallow <command>LOAD</> to non-superusers</para>
8611 On platforms that will automatically execute initialization functions of a
8612 shared library (this includes at least Windows and ELF-based Unixen),
8613 <command>LOAD</> can be used to make the server execute arbitrary code.
8614 Thanks to NGS Software for reporting this.</para></listitem>
8615 <listitem><para>Add needed STRICT marking to some contrib functions (Kris
8616 Jurka)</para></listitem>
8617 <listitem><para>Avoid buffer overrun when plpgsql cursor declaration has too
8618 many parameters (Neil)</para></listitem>
8619 <listitem><para>Fix planning error for FULL and RIGHT outer joins</para>
8621 The result of the join was mistakenly supposed to be sorted the same as the
8622 left input. This could not only deliver mis-sorted output to the user, but
8623 in case of nested merge joins could give outright wrong answers.
8625 <listitem><para>Fix display of negative intervals in SQL and GERMAN
8626 datestyles</para></listitem>
8632 <sect1 id="release-7-2-6">
8633 <title>Release 7.2.6</title>
8636 <title>Release date</title>
8637 <simpara>2004-10-22</simpara>
8641 This release contains a variety of fixes from 7.2.5.
8646 <title>Migration to version 7.2.6</title>
8649 A dump/restore is not required for those running 7.2.X.
8654 <title>Changes</title>
8657 <listitem><para>Repair possible failure to update hint bits on disk</para>
8659 Under rare circumstances this oversight could lead to
8660 <quote>could not access transaction status</> failures, which qualifies
8661 it as a potential-data-loss bug.
8663 <listitem><para>Ensure that hashed outer join does not miss tuples</para>
8665 Very large left joins using a hash join plan could fail to output unmatched
8666 left-side rows given just the right data distribution.
8668 <listitem><para>Disallow running pg_ctl as root</para>
8670 This is to guard against any possible security issues.
8672 <listitem><para>Avoid using temp files in /tmp in make_oidjoins_check</para>
8674 This has been reported as a security issue, though it's hardly worthy of
8675 concern since there is no reason for non-developers to use this script anyway.
8677 <listitem><para>Update to newer versions of Bison</para></listitem>
8683 <sect1 id="release-7-2-5">
8684 <title>Release 7.2.5</title>
8687 <title>Release date</title>
8688 <simpara>2004-08-16</simpara>
8692 This release contains a variety of fixes from 7.2.4.
8697 <title>Migration to version 7.2.5</title>
8700 A dump/restore is not required for those running 7.2.X.
8705 <title>Changes</title>
8708 <listitem><para>Prevent possible loss of committed transactions during crash</para>
8710 Due to insufficient interlocking between transaction commit and checkpointing,
8711 it was possible for transactions committed just before the most recent
8712 checkpoint to be lost, in whole or in part, following a database crash and
8713 restart. This is a serious bug that has existed
8714 since <productname>PostgreSQL</productname> 7.1.
8716 <listitem><para>Fix corner case for btree search in parallel with first root page split</para></listitem>
8717 <listitem><para>Fix buffer overrun in <function>to_ascii</function> (Guido Notari)</para></listitem>
8718 <listitem><para>Fix core dump in deadlock detection on machines where char is unsigned</para></listitem>
8719 <listitem><para>Fix failure to respond to <command>pg_ctl stop -m fast</command> after Async_NotifyHandler runs</para></listitem>
8720 <listitem><para>Repair memory leaks in pg_dump</para></listitem>
8721 <listitem><para>Avoid conflict with system definition of <function>isblank()</function> function or macro</para></listitem>
8726 <sect1 id="release-7-2-4">
8727 <title>Release 7.2.4</title>
8730 <title>Release date</title>
8731 <simpara>2003-01-30</simpara>
8735 This release contains a variety of fixes for version 7.2.3,
8736 including fixes to prevent possible data loss.
8740 <title>Migration to version 7.2.4</title>
8743 A dump/restore is <emphasis>not</emphasis> required for those
8744 running version 7.2.*.
8749 <title>Changes</title>
8752 <listitem><para>Fix some additional cases of VACUUM "No one parent tuple was found" error</para></listitem>
8753 <listitem><para>Prevent VACUUM from being called inside a function (Bruce)</para></listitem>
8754 <listitem><para>Ensure pg_clog updates are sync'd to disk before marking checkpoint complete</para></listitem>
8755 <listitem><para>Avoid integer overflow during large hash joins</para></listitem>
8756 <listitem><para>Make GROUP commands work when pg_group.grolist is large enough to be toasted</para></listitem>
8757 <listitem><para>Fix errors in datetime tables; some timezone names weren't being recognized</para></listitem>
8758 <listitem><para>Fix integer overflows in circle_poly(), path_encode(), path_add() (Neil)</para></listitem>
8759 <listitem><para>Repair long-standing logic errors in lseg_eq(), lseg_ne(), lseg_center()</para></listitem>
8765 <sect1 id="release-7-2-3">
8766 <title>Release 7.2.3</title>
8769 <title>Release date</title>
8770 <simpara>2002-10-01</simpara>
8774 This release contains a variety of fixes for version 7.2.2,
8775 including fixes to prevent possible data loss.
8779 <title>Migration to version 7.2.3</title>
8782 A dump/restore is <emphasis>not</emphasis> required for those
8783 running version 7.2.*.
8788 <title>Changes</title>
8791 <listitem><para>Prevent possible compressed transaction log loss (Tom)</para></listitem>
8792 <listitem><para>Prevent non-superuser from increasing most recent vacuum info (Tom)</para></listitem>
8793 <listitem><para>Handle pre-1970 date values in newer versions of glibc (Tom)</para></listitem>
8794 <listitem><para>Fix possible hang during server shutdown</para></listitem>
8795 <listitem><para>Prevent spinlock hangs on SMP PPC machines (Tomoyuki Niijima)</para></listitem>
8796 <listitem><para>Fix <application>pg_dump</> to properly dump FULL JOIN USING (Tom)</para></listitem>
8802 <sect1 id="release-7-2-2">
8803 <title>Release 7.2.2</title>
8806 <title>Release date</title>
8807 <simpara>2002-08-23</simpara>
8811 This release contains a variety of fixes for version 7.2.1.
8815 <title>Migration to version 7.2.2</title>
8818 A dump/restore is <emphasis>not</emphasis> required for those
8819 running version 7.2.*.
8824 <title>Changes</title>
8827 <listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
8828 <listitem><para>Fix for compressed transaction log id wraparound (Tom)</para></listitem>
8829 <listitem><para>Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f (Tatsuo)</para></listitem>
8830 <listitem><para>Fix for psql and <application>pg_dump</> crashing when invoked with non-existent long options (Tatsuo)</para></listitem>
8831 <listitem><para>Fix crash when invoking geometric operators (Tom)</para></listitem>
8832 <listitem><para>Allow OPEN cursor(args) (Tom)</para></listitem>
8833 <listitem><para>Fix for rtree_gist index build (Teodor)</para></listitem>
8834 <listitem><para>Fix for dumping user-defined aggregates (Tom)</para></listitem>
8835 <listitem><para>contrib/intarray fixes (Oleg)</para></listitem>
8836 <listitem><para>Fix for complex UNION/EXCEPT/INTERSECT queries using parens (Tom)</para></listitem>
8837 <listitem><para>Fix to pg_convert (Tatsuo)</para></listitem>
8838 <listitem><para>Fix for crash with long DATA strings (Thomas, Neil)</para></listitem>
8839 <listitem><para>Fix for repeat(), lpad(), rpad() and long strings (Neil)</para></listitem>
8845 <sect1 id="release-7-2-1">
8846 <title>Release 7.2.1</title>
8849 <title>Release date</title>
8850 <simpara>2002-03-21</simpara>
8854 This release contains a variety of fixes for version 7.2.
8858 <title>Migration to version 7.2.1</title>
8861 A dump/restore is <emphasis>not</emphasis> required for those
8862 running version 7.2.
8867 <title>Changes</title>
8870 <listitem><para>Ensure that sequence counters do not go backwards after a crash (Tom)</para></listitem>
8871 <listitem><para>Fix pgaccess kanji-conversion key binding (Tatsuo)</para></listitem>
8872 <listitem><para>Optimizer improvements (Tom)</para></listitem>
8873 <listitem><para>Cash I/O improvements (Tom)</para></listitem>
8874 <listitem><para>New Russian FAQ</para></listitem>
8875 <listitem><para>Compile fix for missing AuthBlockSig (Heiko)</para></listitem>
8876 <listitem><para>Additional time zones and time zone fixes (Thomas)</para></listitem>
8877 <listitem><para>Allow psql \connect to handle mixed case database and user names (Tom)</para></listitem>
8878 <listitem><para>Return proper OID on command completion even with ON INSERT rules (Tom)</para></listitem>
8879 <listitem><para>Allow COPY FROM to use 8-bit DELIMITERS (Tatsuo)</para></listitem>
8880 <listitem><para>Fix bug in extract/date_part for milliseconds/microseconds (Tatsuo)</para></listitem>
8881 <listitem><para>Improve handling of multiple UNIONs with different lengths (Tom)</para></listitem>
8882 <listitem><para>contrib/btree_gist improvements (Teodor Sigaev)</para></listitem>
8883 <listitem><para>contrib/tsearch dictionary improvements, see README.tsearch for an additional installation step (Thomas T. Thai, Teodor Sigaev)</para></listitem>
8884 <listitem><para>Fix for array subscripts handling (Tom)</para></listitem>
8885 <listitem><para>Allow EXECUTE of "CREATE TABLE AS ... SELECT" in PL/pgSQL (Tom)</para></listitem>
8891 <sect1 id="release-7-2">
8892 <title>Release 7.2</title>
8895 <title>Release date</title>
8896 <simpara>2002-02-04</simpara>
8900 <title>Overview</title>
8903 This release improves <productname>PostgreSQL</> for use in
8904 high-volume applications.
8908 Major changes in this release:
8916 Vacuuming no longer locks tables, thus allowing normal user
8917 access during the vacuum. A new <command>VACUUM FULL</>
8918 command does old-style vacuum by locking the table and
8919 shrinking the on-disk copy of the table.
8925 <term>Transactions</term>
8928 There is no longer a problem with installations that exceed
8929 four billion transactions.
8938 OIDs are now optional. Users can now create tables without
8939 OIDs for cases where OID usage is excessive.
8945 <term>Optimizer</term>
8948 The system now computes histogram column statistics during
8949 <command>ANALYZE</>, allowing much better optimizer choices.
8955 <term>Security</term>
8958 A new MD5 encryption option allows more secure storage and
8959 transfer of passwords. A new Unix-domain socket
8960 authentication option is available on Linux and BSD systems.
8966 <term>Statistics</term>
8969 Administrators can use the new table access statistics module
8970 to get fine-grained information about table and index usage.
8976 <term>Internationalization</term>
8979 Program and library messages can now be displayed in several
8989 <title>Migration to version 7.2</title>
8992 A dump/restore using <command>pg_dump</command> is required for
8993 those wishing to migrate data from any previous release.
8997 Observe the following incompatibilities:
9003 The semantics of the <command>VACUUM</command> command have
9004 changed in this release. You may wish to update your
9005 maintenance procedures accordingly.
9011 In this release, comparisons using <literal>= NULL</literal>
9012 will always return false (or NULL, more precisely). Previous
9013 releases automatically transformed this syntax to <literal>IS
9014 NULL</literal>. The old behavior can be re-enabled using a
9015 <filename>postgresql.conf</filename> parameter.
9021 The <filename>pg_hba.conf</> and <filename>pg_ident.conf</>
9022 configuration is now only reloaded after receiving a
9023 <systemitem>SIGHUP</> signal, not with each connection.
9029 The function <filename>octet_length()</> now returns the uncompressed data length.
9035 The date/time value <literal>'current'</literal> is no longer
9036 available. You will need to rewrite your applications.
9042 The <literal>timestamp()</literal>, <literal>time()</literal>,
9043 and <literal>interval()</literal> functions are no longer
9044 available. Instead of <literal>timestamp()</literal>, use
9045 <literal>timestamp 'string'</literal> or <literal>CAST</literal>.
9052 The <literal>SELECT ... LIMIT #,#</literal> syntax will be removed
9053 in the next release. You should change your queries to use
9054 separate LIMIT and OFFSET clauses, e.g. <literal>LIMIT 10 OFFSET
9060 <title>Changes</title>
9063 <title>Server Operation</title>
9065 <listitem><para>Create temporary files in a separate directory (Bruce)</para></listitem>
9066 <listitem><para>Delete orphaned temporary files on postmaster startup (Bruce)</para></listitem>
9067 <listitem><para>Added unique indexes to some system tables (Tom)</para></listitem>
9068 <listitem><para>System table operator reorganization (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
9069 <listitem><para>Renamed pg_log to pg_clog (Tom)</para></listitem>
9070 <listitem><para>Enable SIGTERM, SIGQUIT to kill backends (Jan)</para></listitem>
9071 <listitem><para>Removed compile-time limit on number of backends (Tom)</para></listitem>
9072 <listitem><para>Better cleanup for semaphore resource failure (Tatsuo, Tom)</para></listitem>
9073 <listitem><para>Allow safe transaction ID wraparound (Tom)</para></listitem>
9074 <listitem><para>Removed OIDs from some system tables (Tom)</para></listitem>
9075 <listitem><para>Removed "triggered data change violation" error check (Tom)</para></listitem>
9076 <listitem><para>SPI portal creation of prepared/saved plans (Jan)</para></listitem>
9077 <listitem><para>Allow SPI column functions to work for system columns (Tom)</para></listitem>
9078 <listitem><para>Long value compression improvement (Tom)</para></listitem>
9079 <listitem><para>Statistics collector for table, index access (Jan)</para></listitem>
9080 <listitem><para>Truncate extra-long sequence names to a reasonable value (Tom)</para></listitem>
9081 <listitem><para>Measure transaction times in milliseconds (Thomas)</para></listitem>
9082 <listitem><para>Fix TID sequential scans (Hiroshi)</para></listitem>
9083 <listitem><para>Superuser ID now fixed at 1 (Peter E)</para></listitem>
9084 <listitem><para>New pg_ctl "reload" option (Tom)</para></listitem>
9089 <title>Performance</title>
9091 <listitem><para>Optimizer improvements (Tom)</para></listitem>
9092 <listitem><para>New histogram column statistics for optimizer (Tom)</para></listitem>
9093 <listitem><para>Reuse write-ahead log files rather than discarding them (Tom)</para></listitem>
9094 <listitem><para>Cache improvements (Tom)</para></listitem>
9095 <listitem><para>IS NULL, IS NOT NULL optimizer improvement (Tom)</para></listitem>
9096 <listitem><para>Improve lock manager to reduce lock contention (Tom)</para></listitem>
9097 <listitem><para>Keep relcache entries for index access support functions (Tom)</para></listitem>
9098 <listitem><para>Allow better selectivity with NaN and infinities in NUMERIC (Tom)</para></listitem>
9099 <listitem><para>R-tree performance improvements (Kenneth Been)</para></listitem>
9100 <listitem><para>B-tree splits more efficient (Tom)</para></listitem>
9105 <title>Privileges</title>
9107 <listitem><para>Change UPDATE, DELETE privileges to be distinct (Peter E)</para></listitem>
9108 <listitem><para>New REFERENCES, TRIGGER privileges (Peter E)</para></listitem>
9109 <listitem><para>Allow GRANT/REVOKE to/from more than one user at a time (Peter E)</para></listitem>
9110 <listitem><para>New has_table_privilege() function (Joe Conway)</para></listitem>
9111 <listitem><para>Allow non-superuser to vacuum database (Tom)</para></listitem>
9112 <listitem><para>New SET SESSION AUTHORIZATION command (Peter E)</para></listitem>
9113 <listitem><para>Fix bug in privilege modifications on newly created tables (Tom)</para></listitem>
9114 <listitem><para>Disallow access to pg_statistic for non-superuser, add user-accessible views (Tom)</para></listitem>
9119 <title>Client Authentication</title>
9121 <listitem><para>Fork postmaster before doing authentication to prevent hangs (Peter E)</para></listitem>
9122 <listitem><para>Add ident authentication over Unix domain sockets on Linux, *BSD (Helge Bahmann, Oliver Elphick, Teodor Sigaev, Bruce)</para></listitem>
9123 <listitem><para>Add a password authentication method that uses MD5 encryption (Bruce)</para></listitem>
9124 <listitem><para>Allow encryption of stored passwords using MD5 (Bruce)</para></listitem>
9125 <listitem><para>PAM authentication (Dominic J. Eidson)</para></listitem>
9126 <listitem><para>Load pg_hba.conf and pg_ident.conf only on startup and SIGHUP (Bruce)</para></listitem>
9131 <title>Server Configuration</title>
9133 <listitem><para>Interpretation of some time zone abbreviations as Australian rather than North American now settable at run time (Bruce)</para></listitem>
9134 <listitem><para>New parameter to set default transaction isolation level (Peter E)</para></listitem>
9135 <listitem><para>New parameter to enable conversion of "expr = NULL" into "expr IS NULL", off by default (Peter E)</para></listitem>
9136 <listitem><para>New parameter to control memory usage by VACUUM (Tom)</para></listitem>
9137 <listitem><para>New parameter to set client authentication timeout (Tom)</para></listitem>
9138 <listitem><para>New parameter to set maximum number of open files (Tom)</para></listitem>
9143 <title>Queries</title>
9145 <listitem><para>Statements added by INSERT rules now execute after the INSERT (Jan)</para></listitem>
9146 <listitem><para>Prevent unadorned relation names in target list (Bruce)</para></listitem>
9147 <listitem><para>NULLs now sort after all normal values in ORDER BY (Tom)</para></listitem>
9148 <listitem><para>New IS UNKNOWN, IS NOT UNKNOWN Boolean tests (Tom)</para></listitem>
9149 <listitem><para>New SHARE UPDATE EXCLUSIVE lock mode (Tom)</para></listitem>
9150 <listitem><para>New EXPLAIN ANALYZE command that shows run times and row counts (Martijn van Oosterhout)</para></listitem>
9151 <listitem><para>Fix problem with LIMIT and subqueries (Tom)</para></listitem>
9152 <listitem><para>Fix for LIMIT, DISTINCT ON pushed into subqueries (Tom)</para></listitem>
9153 <listitem><para>Fix nested EXCEPT/INTERSECT (Tom)</para></listitem>
9158 <title>Schema Manipulation</title>
9160 <listitem><para>Fix SERIAL in temporary tables (Bruce)</para></listitem>
9161 <listitem><para>Allow temporary sequences (Bruce)</para></listitem>
9162 <listitem><para>Sequences now use int8 internally (Tom)</para></listitem>
9163 <listitem><para>New SERIAL8 creates int8 columns with sequences, default still SERIAL4 (Tom)</para></listitem>
9164 <listitem><para>Make OIDs optional using WITHOUT OIDS (Tom)</para></listitem>
9165 <listitem><para>Add %TYPE syntax to CREATE TYPE (Ian Lance Taylor)</para></listitem>
9166 <listitem><para>Add ALTER TABLE / DROP CONSTRAINT for CHECK constraints (Christopher Kings-Lynne)</para></listitem>
9167 <listitem><para>New CREATE OR REPLACE FUNCTION to alter existing function (preserving the function OID) (Gavin Sherry)</para></listitem>
9168 <listitem><para>Add ALTER TABLE / ADD [ UNIQUE | PRIMARY ] (Christopher Kings-Lynne)</para></listitem>
9169 <listitem><para>Allow column renaming in views</para></listitem>
9170 <listitem><para>Make ALTER TABLE / RENAME COLUMN update column names of indexes (Brent Verner)</para></listitem>
9171 <listitem><para>Fix for ALTER TABLE / ADD CONSTRAINT ... CHECK with inherited tables (Stephan Szabo)</para></listitem>
9172 <listitem><para>ALTER TABLE RENAME update foreign-key trigger arguments correctly (Brent Verner)</para></listitem>
9173 <listitem><para>DROP AGGREGATE and COMMENT ON AGGREGATE now accept an aggtype (Tom)</para></listitem>
9174 <listitem><para>Add automatic return type data casting for SQL functions (Tom)</para></listitem>
9175 <listitem><para>Allow GiST indexes to handle NULLs and multikey indexes (Oleg Bartunov, Teodor Sigaev, Tom)</para></listitem>
9176 <listitem><para>Enable partial indexes (Martijn van Oosterhout)</para></listitem>
9181 <title>Utility Commands</title>
9183 <listitem><para>Add RESET ALL, SHOW ALL (Marko Kreen)</para></listitem>
9184 <listitem><para>CREATE/ALTER USER/GROUP now allow options in any order (Vince)</para></listitem>
9185 <listitem><para>Add LOCK A, B, C functionality (Neil Padgett)</para></listitem>
9186 <listitem><para>New ENCRYPTED/UNENCRYPTED option to CREATE/ALTER USER (Bruce)</para></listitem>
9187 <listitem><para>New light-weight VACUUM does not lock table; old semantics are available as VACUUM FULL (Tom)</para></listitem>
9188 <listitem><para>Disable COPY TO/FROM on views (Bruce)</para></listitem>
9189 <listitem><para>COPY DELIMITERS string must be exactly one character (Tom)</para></listitem>
9190 <listitem><para>VACUUM warning about index tuples fewer than heap now only appears when appropriate (Martijn van Oosterhout)</para></listitem>
9191 <listitem><para>Fix privilege checks for CREATE INDEX (Tom)</para></listitem>
9192 <listitem><para>Disallow inappropriate use of CREATE/DROP INDEX/TRIGGER/VIEW (Tom)</para></listitem>
9197 <title>Data Types and Functions</title>
9199 <listitem><para>SUM(), AVG(), COUNT() now uses int8 internally for speed (Tom)</para></listitem>
9200 <listitem><para>Add convert(), convert2() (Tatsuo)</para></listitem>
9201 <listitem><para>New function bit_length() (Peter E)</para></listitem>
9202 <listitem><para>Make the "n" in CHAR(n)/VARCHAR(n) represents letters, not bytes (Tatsuo)</para></listitem>
9203 <listitem><para>CHAR(), VARCHAR() now reject strings that are too long (Peter E)</para></listitem>
9204 <listitem><para>BIT VARYING now rejects bit strings that are too long (Peter E)</para></listitem>
9205 <listitem><para>BIT now rejects bit strings that do not match declared size (Peter E)</para></listitem>
9206 <listitem><para>INET, CIDR text conversion functions (Alex Pilosov)</para></listitem>
9207 <listitem><para>INET, CIDR operators << and <<= indexable (Alex Pilosov)</para></listitem>
9208 <listitem><para>Bytea \### now requires valid three digit octal number</para></listitem>
9209 <listitem><para>Bytea comparison improvements, now supports =, <>, >, >=, <, and <=</para></listitem>
9210 <listitem><para>Bytea now supports B-tree indexes</para></listitem>
9211 <listitem><para>Bytea now supports LIKE, LIKE...ESCAPE, NOT LIKE, NOT LIKE...ESCAPE</para></listitem>
9212 <listitem><para>Bytea now supports concatenation</para></listitem>
9213 <listitem><para>New bytea functions: position, substring, trim, btrim, and length</para></listitem>
9214 <listitem><para>New encode() function mode, "escaped", converts minimally escaped bytea to/from text</para></listitem>
9215 <listitem><para>Add pg_database_encoding_max_length() (Tatsuo)</para></listitem>
9216 <listitem><para>Add pg_client_encoding() function (Tatsuo)</para></listitem>
9217 <listitem><para>now() returns time with millisecond precision (Thomas)</para></listitem>
9218 <listitem><para>New TIMESTAMP WITHOUT TIMEZONE data type (Thomas)</para></listitem>
9219 <listitem><para>Add ISO date/time specification with "T", yyyy-mm-ddThh:mm:ss (Thomas)</para></listitem>
9220 <listitem><para>New xid/int comparison functions (Hiroshi)</para></listitem>
9221 <listitem><para>Add precision to TIME, TIMESTAMP, and INTERVAL data types (Thomas)</para></listitem>
9222 <listitem><para>Modify type coercion logic to attempt binary-compatible functions first (Tom)</para></listitem>
9223 <listitem><para>New encode() function installed by default (Marko Kreen)</para></listitem>
9224 <listitem><para>Improved to_*() conversion functions (Karel Zak)</para></listitem>
9225 <listitem><para>Optimize LIKE/ILIKE when using single-byte encodings (Tatsuo)</para></listitem>
9226 <listitem><para>New functions in contrib/pgcrypto: crypt(), hmac(), encrypt(), gen_salt() (Marko Kreen)</para></listitem>
9227 <listitem><para>Correct description of translate() function (Bruce)</para></listitem>
9228 <listitem><para>Add INTERVAL argument for SET TIME ZONE (Thomas)</para></listitem>
9229 <listitem><para>Add INTERVAL YEAR TO MONTH (etc.) syntax (Thomas)</para></listitem>
9230 <listitem><para>Optimize length functions when using single-byte encodings (Tatsuo)</para></listitem>
9231 <listitem><para>Fix path_inter, path_distance, path_length, dist_ppath to handle closed paths (Curtis Barrett, Tom)</para></listitem>
9232 <listitem><para>octet_length(text) now returns non-compressed length (Tatsuo, Bruce)</para></listitem>
9233 <listitem><para>Handle "July" full name in date/time literals (Greg Sabino Mullane)</para></listitem>
9234 <listitem><para>Some datatype() function calls now evaluated differently</para></listitem>
9235 <listitem><para>Add support for Julian and ISO time specifications (Thomas)</para></listitem>
9240 <title>Internationalization</title>
9242 <listitem><para>National language support in psql, <application>pg_dump</>, libpq, and server (Peter E)</para></listitem>
9243 <listitem><para>Message translations in Chinese (simplified, traditional), Czech, French, German, Hungarian, Russian, Swedish (Peter E, Serguei A. Mokhov, Karel Zak, Weiping He, Zhenbang Wei, Kovacs Zoltan)</para></listitem>
9244 <listitem><para>Make trim, ltrim, rtrim, btrim, lpad, rpad, translate multibyte aware (Tatsuo)</para></listitem>
9245 <listitem><para>Add LATIN5,6,7,8,9,10 support (Tatsuo)</para></listitem>
9246 <listitem><para>Add ISO 8859-5,6,7,8 support (Tatsuo)</para></listitem>
9247 <listitem><para>Correct LATIN5 to mean ISO-8859-9, not ISO-8859-5 (Tatsuo)</para></listitem>
9248 <listitem><para>Make mic2ascii() non-ASCII aware (Tatsuo)</para></listitem>
9249 <listitem><para>Reject invalid multibyte character sequences (Tatsuo)</para></listitem>
9254 <title><application>PL/pgSQL</></title>
9256 <listitem><para>Now uses portals for SELECT loops, allowing huge result sets (Jan)</para></listitem>
9257 <listitem><para>CURSOR and REFCURSOR support (Jan)</para></listitem>
9258 <listitem><para>Can now return open cursors (Jan)</para></listitem>
9259 <listitem><para>Add ELSEIF (Klaus Reger)</para></listitem>
9260 <listitem><para>Improve PL/pgSQL error reporting, including location of error (Tom)</para></listitem>
9261 <listitem><para>Allow IS or FOR key words in cursor declaration, for compatibility (Bruce)</para></listitem>
9262 <listitem><para>Fix for SELECT ... FOR UPDATE (Tom)</para></listitem>
9263 <listitem><para>Fix for PERFORM returning multiple rows (Tom)</para></listitem>
9264 <listitem><para>Make PL/pgSQL use the server's type coercion code (Tom)</para></listitem>
9265 <listitem><para>Memory leak fix (Jan, Tom)</para></listitem>
9266 <listitem><para>Make trailing semicolon optional (Tom)</para></listitem>
9271 <title>PL/Perl</title>
9273 <listitem><para>New untrusted PL/Perl (Alex Pilosov)</para></listitem>
9274 <listitem><para>PL/Perl is now built on some platforms even if libperl is not shared (Peter E)</para></listitem>
9279 <title>PL/Tcl</title>
9281 <listitem><para>Now reports errorInfo (Vsevolod Lobko)</para></listitem>
9282 <listitem><para>Add spi_lastoid function (bob@redivi.com)</para></listitem>
9287 <title>PL/Python</title>
9289 <listitem><para>...is new (Andrew Bosma)</para></listitem>
9294 <title><application>psql</></title>
9296 <listitem><para>\d displays indexes in unique, primary groupings (Christopher Kings-Lynne)</para></listitem>
9297 <listitem><para>Allow trailing semicolons in backslash commands (Greg Sabino Mullane)</para></listitem>
9298 <listitem><para>Read password from /dev/tty if possible</para></listitem>
9299 <listitem><para>Force new password prompt when changing user and database (Tatsuo, Tom)</para></listitem>
9300 <listitem><para>Format the correct number of columns for Unicode (Patrice)</para></listitem>
9305 <title><application>libpq</></title>
9307 <listitem><para>New function PQescapeString() to escape quotes in command strings (Florian Weimer)</para></listitem>
9308 <listitem><para>New function PQescapeBytea() escapes binary strings for use as SQL string literals</para></listitem>
9315 <listitem><para>Return OID of INSERT (Ken K)</para></listitem>
9316 <listitem><para>Handle more data types (Ken K)</para></listitem>
9317 <listitem><para>Handle single quotes and newlines in strings (Ken K)</para></listitem>
9318 <listitem><para>Handle NULL variables (Ken K)</para></listitem>
9319 <listitem><para>Fix for time zone handling (Barry Lind)</para></listitem>
9320 <listitem><para>Improved Druid support</para></listitem>
9321 <listitem><para>Allow eight-bit characters with non-multibyte server (Barry Lind)</para></listitem>
9322 <listitem><para>Support BIT, BINARY types (Ned Wolpert)</para></listitem>
9323 <listitem><para>Reduce memory usage (Michael Stephens, Dave Cramer)</para></listitem>
9324 <listitem><para>Update DatabaseMetaData (Peter E)</para></listitem>
9325 <listitem><para>Add DatabaseMetaData.getCatalogs() (Peter E)</para></listitem>
9326 <listitem><para>Encoding fixes (Anders Bengtsson)</para></listitem>
9327 <listitem><para>Get/setCatalog methods (Jason Davies)</para></listitem>
9328 <listitem><para>DatabaseMetaData.getColumns() now returns column defaults (Jason Davies)</para></listitem>
9329 <listitem><para>DatabaseMetaData.getColumns() performance improvement (Jeroen van Vianen)</para></listitem>
9330 <listitem><para>Some JDBC1 and JDBC2 merging (Anders Bengtsson)</para></listitem>
9331 <listitem><para>Transaction performance improvements (Barry Lind)</para></listitem>
9332 <listitem><para>Array fixes (Greg Zoller)</para></listitem>
9333 <listitem><para>Serialize addition </para></listitem>
9334 <listitem><para>Fix batch processing (Rene Pijlman)</para></listitem>
9335 <listitem><para>ExecSQL method reorganization (Anders Bengtsson)</para></listitem>
9336 <listitem><para>GetColumn() fixes (Jeroen van Vianen)</para></listitem>
9337 <listitem><para>Fix isWriteable() function (Rene Pijlman)</para></listitem>
9338 <listitem><para>Improved passage of JDBC2 conformance tests (Rene Pijlman)</para></listitem>
9339 <listitem><para>Add bytea type capability (Barry Lind)</para></listitem>
9340 <listitem><para>Add isNullable() (Rene Pijlman)</para></listitem>
9341 <listitem><para>JDBC date/time test suite fixes (Liam Stewart)</para></listitem>
9342 <listitem><para>Fix for SELECT 'id' AS xxx FROM table (Dave Cramer)</para></listitem>
9343 <listitem><para>Fix DatabaseMetaData to show precision properly (Mark Lillywhite)</para></listitem>
9344 <listitem><para>New getImported/getExported keys (Jason Davies)</para></listitem>
9345 <listitem><para>MD5 password encryption support (Jeremy Wohl)</para></listitem>
9346 <listitem><para>Fix to actually use type cache (Ned Wolpert)</para></listitem>
9353 <listitem><para>Remove query size limit (Hiroshi)</para></listitem>
9354 <listitem><para>Remove text field size limit (Hiroshi)</para></listitem>
9355 <listitem><para>Fix for SQLPrimaryKeys in multibyte mode (Hiroshi)</para></listitem>
9356 <listitem><para>Allow ODBC procedure calls (Hiroshi)</para></listitem>
9357 <listitem><para>Improve boolean handing (Aidan Mountford)</para></listitem>
9358 <listitem><para>Most configuration options now settable via DSN (Hiroshi)</para></listitem>
9359 <listitem><para>Multibyte, performance fixes (Hiroshi)</para></listitem>
9360 <listitem><para>Allow driver to be used with iODBC or unixODBC (Peter E)</para></listitem>
9361 <listitem><para>MD5 password encryption support (Bruce)</para></listitem>
9362 <listitem><para>Add more compatibility functions to odbc.sql (Peter E)</para></listitem>
9367 <title><application>ECPG</></title>
9369 <listitem><para>EXECUTE ... INTO implemented (Christof Petig)</para></listitem>
9370 <listitem><para>Multiple row descriptor support (e.g. CARDINALITY) (Christof Petig)</para></listitem>
9371 <listitem><para>Fix for GRANT parameters (Lee Kindness)</para></listitem>
9372 <listitem><para>Fix INITIALLY DEFERRED bug</para></listitem>
9373 <listitem><para>Various bug fixes (Michael, Christof Petig)</para></listitem>
9374 <listitem><para>Auto allocation for indicator variable arrays (int *ind_p=NULL)</para></listitem>
9375 <listitem><para>Auto allocation for string arrays (char **foo_pp=NULL)</para></listitem>
9376 <listitem><para>ECPGfree_auto_mem fixed</para></listitem>
9377 <listitem><para>All function names with external linkage are now prefixed by ECPG</para></listitem>
9378 <listitem><para>Fixes for arrays of structures (Michael)</para></listitem>
9383 <title>Misc. Interfaces</title>
9385 <listitem><para>Python fix fetchone() (Gerhard Haring)</para></listitem>
9386 <listitem><para>Use UTF, Unicode in Tcl where appropriate (Vsevolod Lobko, Reinhard Max)</para></listitem>
9387 <listitem><para>Add Tcl COPY TO/FROM (ljb)</para></listitem>
9388 <listitem><para>Prevent output of default index op class in <application>pg_dump</> (Tom)</para></listitem>
9389 <listitem><para>Fix libpgeasy memory leak (Bruce)</para></listitem>
9394 <title>Build and Install</title>
9396 <listitem><para>Configure, dynamic loader, and shared library fixes (Peter E)</para></listitem>
9397 <listitem><para>Fixes in QNX 4 port (Bernd Tegge)</para></listitem>
9398 <listitem><para>Fixes in Cygwin and Windows ports (Jason Tishler, Gerhard Haring, Dmitry Yurtaev, Darko Prenosil, Mikhail Terekhov)</para></listitem>
9399 <listitem><para>Fix for Windows socket communication failures (Magnus, Mikhail Terekhov)</para></listitem>
9400 <listitem><para>Hurd compile fix (Oliver Elphick)</para></listitem>
9401 <listitem><para>BeOS fixes (Cyril Velter)</para></listitem>
9402 <listitem><para>Remove configure --enable-unicode-conversion, now enabled by multibyte (Tatsuo)</para></listitem>
9403 <listitem><para>AIX fixes (Tatsuo, Andreas)</para></listitem>
9404 <listitem><para>Fix parallel make (Peter E)</para></listitem>
9405 <listitem><para>Install SQL language manual pages into OS-specific directories (Peter E)</para></listitem>
9406 <listitem><para>Rename config.h to pg_config.h (Peter E)</para></listitem>
9407 <listitem><para>Reorganize installation layout of header files (Peter E)</para></listitem>
9412 <title>Source Code</title>
9414 <listitem><para>Remove SEP_CHAR (Bruce)</para></listitem>
9415 <listitem><para>New GUC hooks (Tom)</para></listitem>
9416 <listitem><para>Merge GUC and command line handling (Marko Kreen)</para></listitem>
9417 <listitem><para>Remove EXTEND INDEX (Martijn van Oosterhout, Tom)</para></listitem>
9418 <listitem><para>New pgjindent utility to indent java code (Bruce)</para></listitem>
9419 <listitem><para>Remove define of true/false when compiling under C++ (Leandro Fanzone, Tom)</para></listitem>
9420 <listitem><para>pgindent fixes (Bruce, Tom)</para></listitem>
9421 <listitem><para>Replace strcasecmp() with strcmp() where appropriate (Peter E)</para></listitem>
9422 <listitem><para>Dynahash portability improvements (Tom)</para></listitem>
9423 <listitem><para>Add 'volatile' usage in spinlock structures</para></listitem>
9424 <listitem><para>Improve signal handling logic (Tom)</para></listitem>
9429 <title>Contrib</title>
9431 <listitem><para>New contrib/rtree_gist (Oleg Bartunov, Teodor Sigaev)</para></listitem>
9432 <listitem><para>New contrib/tsearch full-text indexing (Oleg, Teodor Sigaev)</para></listitem>
9433 <listitem><para>Add contrib/dblink for remote database access (Joe Conway)</para></listitem>
9434 <listitem><para>contrib/ora2pg Oracle conversion utility (Gilles Darold)</para></listitem>
9435 <listitem><para>contrib/xml XML conversion utility (John Gray)</para></listitem>
9436 <listitem><para>contrib/fulltextindex fixes (Christopher Kings-Lynne)</para></listitem>
9437 <listitem><para>New contrib/fuzzystrmatch with levenshtein and metaphone, soundex merged (Joe Conway)</para></listitem>
9438 <listitem><para>Add contrib/intarray boolean queries, binary search, fixes (Oleg Bartunov)</para></listitem>
9439 <listitem><para>New pg_upgrade utility (Bruce)</para></listitem>
9440 <listitem><para>Add new pg_resetxlog options (Bruce, Tom)</para></listitem>
9447 <sect1 id="release-7-1-3">
9448 <title>Release 7.1.3</title>
9451 <title>Release date</title>
9452 <simpara>2001-08-15</simpara>
9456 <title>Migration to version 7.1.3</title>
9459 A dump/restore is <emphasis>not</emphasis> required for those running
9465 <title>Changes</title>
9469 Remove unused WAL segements of large transactions (Tom)
9470 Multiaction rule fix (Tom)
9471 PL/pgSQL memory allocation fix (Jan)
9472 VACUUM buffer fix (Tom)
9473 Regression test fixes (Tom)
9474 pg_dump fixes for GRANT/REVOKE/comments on views, user-defined types (Tom)
9475 Fix subselects with DISTINCT ON or LIMIT (Tom)
9477 Disable COPY TO/FROM a view (Tom)
9478 Cygwin build (Jason Tishler)
9485 <sect1 id="release-7-1-2">
9486 <title>Release 7.1.2</title>
9489 <title>Release date</title>
9490 <simpara>2001-05-11</simpara>
9494 This has one fix from 7.1.1.
9499 <title>Migration to version 7.1.2</title>
9502 A dump/restore is <emphasis>not</emphasis> required for those running
9508 <title>Changes</title>
9512 Fix PL/pgSQL SELECTs when returning no rows
9513 Fix for psql backslash core dump
9514 Referential integrity privilege fix
9523 <sect1 id="release-7-1-1">
9524 <title>Release 7.1.1</title>
9527 <title>Release date</title>
9528 <simpara>2001-05-05</simpara>
9532 This has a variety of fixes from 7.1.
9537 <title>Migration to version 7.1.1</title>
9540 A dump/restore is <emphasis>not</emphasis> required for those running
9546 <title>Changes</title>
9550 Fix for numeric MODULO operator (Tom)
9551 pg_dump fixes (Philip)
9552 pg_dump can dump 7.0 databases (Philip)
9553 readline 4.2 fixes (Peter E)
9555 AIX, MSWIN, VAX, N32K fixes (Tom)
9556 Multibytes fixes (Tom)
9557 Unicode fixes (Tatsuo)
9558 Optimizer improvements (Tom)
9559 Fix for whole rows in functions (Tom)
9560 Fix for pg_ctl and option strings with spaces (Peter E)
9561 ODBC fixes (Hiroshi)
9562 EXTRACT can now take string argument (Thomas)
9563 Python fixes (Darcy)
9570 <sect1 id="release-7-1">
9571 <title>Release 7.1</title>
9574 <title>Release date</title>
9575 <simpara>2001-04-13</simpara>
9579 This release focuses on removing limitations that have existed in the
9580 <productname>PostgreSQL</productname> code for many years.
9584 Major changes in this release:
9590 Write-ahead Log (WAL)
9594 To maintain database consistency in case of an operating system crash,
9595 previous releases of <productname>PostgreSQL</productname> have forced
9596 all data modifications to disk before each transaction commit. With
9597 WAL, only one log file must be flushed to disk, greatly improving
9598 performance. If you have been using -F in previous releases to
9599 disable disk flushes, you may want to consider discontinuing its use.
9610 TOAST - Previous releases had a compiled-in row length limit,
9611 typically 8k - 32k. This limit made storage of long text fields
9612 difficult. With TOAST, long rows of any length can be stored with good
9624 We now support outer joins. The UNION/NOT IN
9625 workaround for outer joins is no longer required. We use the SQL92
9637 The previous C function manager did not
9638 handle null values properly, nor did it support 64-bit <acronym>CPU</acronym>'s (Alpha). The new
9639 function manager does. You can continue using your old custom
9640 functions, but you may want to rewrite them in the future to use the new
9641 function manager call interface.
9652 A large number of complex queries that were
9653 unsupported in previous releases now work. Many combinations of views,
9654 aggregates, UNION, LIMIT, cursors, subqueries, and inherited tables
9655 now work properly. Inherited tables are now accessed by default.
9656 Subqueries in FROM are now supported.
9664 <title>Migration to version 7.1</title>
9667 A dump/restore using pg_dump is required for those wishing to migrate
9668 data from any previous release.
9673 <title>Changes</title>
9679 Many multibyte/Unicode/locale fixes (Tatsuo and others)
9680 More reliable ALTER TABLE RENAME (Tom)
9681 Kerberos V fixes (David Wragg)
9682 Fix for INSERT INTO...SELECT where targetlist has subqueries (Tom)
9683 Prompt username/password on standard error (Bruce)
9684 Large objects inv_read/inv_write fixes (Tom)
9685 Fixes for to_char(), to_date(), to_ascii(), and to_timestamp() (Karel,
9687 Prevent query expressions from leaking memory (Tom)
9688 Allow UPDATE of arrays elements (Tom)
9689 Wake up lock waiters during cancel (Hiroshi)
9690 Fix rare cursor crash when using hash join (Tom)
9691 Fix for DROP TABLE/INDEX in rolled-back transaction (Hiroshi)
9692 Fix psql crash from \l+ if MULTIBYTE enabled (Peter E)
9693 Fix truncation of rule names during CREATE VIEW (Ross Reedstrom)
9694 Fix PL/perl (Alex Kapranoff)
9695 Disallow LOCK on views (Mark Hollomon)
9696 Disallow INSERT/UPDATE/DELETE on views (Mark Hollomon)
9697 Disallow DROP RULE, CREATE INDEX, TRUNCATE on views (Mark Hollomon)
9698 Allow PL/pgSQL accept non-ASCII identifiers (Tatsuo)
9699 Allow views to proper handle GROUP BY, aggregates, DISTINCT (Tom)
9700 Fix rare failure with TRUNCATE command (Tom)
9701 Allow UNION/INTERSECT/EXCEPT to be used with ALL, subqueries, views,
9702 DISTINCT, ORDER BY, SELECT...INTO (Tom)
9703 Fix parser failures during aborted transactions (Tom)
9704 Allow temporary relations to properly clean up indexes (Bruce)
9705 Fix VACUUM problem with moving rows in same page (Tom)
9706 Modify pg_dump to better handle user-defined items in template1 (Philip)
9707 Allow LIMIT in VIEW (Tom)
9708 Require cursor FETCH to honor LIMIT (Tom)
9709 Allow PRIMARY/FOREIGN Key definitions on inherited columns (Stephan)
9710 Allow ORDER BY, LIMIT in subqueries (Tom)
9711 Allow UNION in CREATE RULE (Tom)
9712 Make ALTER/DROP TABLE rollback-able (Vadim, Tom)
9713 Store initdb collation in pg_control so collation cannot be changed (Tom)
9714 Fix INSERT...SELECT with rules (Tom)
9715 Fix FOR UPDATE inside views and subselects (Tom)
9716 Fix OVERLAPS operators conform to SQL92 spec regarding NULLs (Tom)
9717 Fix lpad() and rpad() to handle length less than input string (Tom)
9718 Fix use of NOTIFY in some rules (Tom)
9719 Overhaul btree code (Tom)
9720 Fix NOT NULL use in Pl/pgSQL variables (Tom)
9721 Overhaul GIST code (Oleg)
9722 Fix CLUSTER to preserve constraints and column default (Tom)
9723 Improved deadlock detection handling (Tom)
9724 Allow multiple SERIAL columns in a table (Tom)
9725 Prevent occasional index corruption (Vadim)
9729 Add OUTER JOINs (Tom)
9730 Function manager overhaul (Tom)
9731 Allow ALTER TABLE RENAME on indexes (Tom)
9732 Improve CLUSTER (Tom)
9733 Improve ps status display for more platforms (Peter E, Marc)
9734 Improve CREATE FUNCTION failure message (Ross)
9735 JDBC improvements (Peter, Travis Bauer, Christopher Cain, William Webber,
9737 Grand Unified Configuration scheme/GUC. Many options can now be set in
9738 data/postgresql.conf, postmaster/postgres flags, or SET commands (Peter E)
9739 Improved handling of file descriptor cache (Tom)
9740 New warning code about auto-created table alias entries (Bruce)
9741 Overhaul initdb process (Tom, Peter E)
9742 Overhaul of inherited tables; inherited tables now accessed by default;
9743 new ONLY key word prevents it (Chris Bitmead, Tom)
9744 ODBC cleanups/improvements (Nick Gorham, Stephan Szabo, Zoltan Kovacs,
9746 Allow renaming of temp tables (Tom)
9747 Overhaul memory manager contexts (Tom)
9748 pg_dumpall uses CREATE USER or CREATE GROUP rather using COPY (Peter E)
9749 Overhaul pg_dump (Philip Warner)
9750 Allow pg_hba.conf secondary password file to specify only username (Peter E)
9751 Allow TEMPORARY or TEMP key word when creating temporary tables (Bruce)
9752 New memory leak checker (Karel)
9753 New SET SESSION CHARACTERISTICS (Thomas)
9754 Allow nested block comments (Thomas)
9755 Add WITHOUT TIME ZONE type qualifier (Thomas)
9756 New ALTER TABLE ADD CONSTRAINT (Stephan)
9757 Use NUMERIC accumulators for INTEGER aggregates (Tom)
9758 Overhaul aggregate code (Tom)
9759 New VARIANCE and STDDEV() aggregates
9760 Improve dependency ordering of pg_dump (Philip)
9761 New pg_restore command (Philip)
9762 New pg_dump tar output option (Philip)
9763 New pg_dump of large objects (Philip)
9764 New ESCAPE option to LIKE (Thomas)
9765 New case-insensitive LIKE - ILIKE (Thomas)
9766 Allow functional indexes to use binary-compatible type (Tom)
9767 Allow SQL functions to be used in more contexts (Tom)
9768 New pg_config utility (Peter E)
9769 New PL/pgSQL EXECUTE command which allows dynamic SQL and utility statements
9771 New PL/pgSQL GET DIAGNOSTICS statement for SPI value access (Jan)
9772 New quote_identifiers() and quote_literal() functions (Jan)
9773 New ALTER TABLE table OWNER TO user command (Mark Hollomon)
9774 Allow subselects in FROM, i.e. FROM (SELECT ...) [AS] alias (Tom)
9775 Update PyGreSQL to version 3.1 (D'Arcy)
9776 Store tables as files named by OID (Vadim)
9777 New SQL function setval(seq,val,bool) for use in pg_dump (Philip)
9778 Require DROP VIEW to remove views, no DROP TABLE (Mark)
9779 Allow DROP VIEW view1, view2 (Mark)
9780 Allow multiple objects in DROP INDEX, DROP RULE, and DROP TYPE (Tom)
9781 Allow automatic conversion to/from Unicode (Tatsuo, Eiji)
9782 New /contrib/pgcrypto hashing functions (Marko Kreen)
9783 New pg_dumpall --globals-only option (Peter E)
9784 New CHECKPOINT command for WAL which creates new WAL log file (Vadim)
9785 New AT TIME ZONE syntax (Thomas)
9786 Allow location of Unix domain socket to be configurable (David J. MacKenzie)
9787 Allow postmaster to listen on a specific IP address (David J. MacKenzie)
9788 Allow socket path name to be specified in hostname by using leading slash
9789 (David J. MacKenzie)
9790 Allow CREATE DATABASE to specify template database (Tom)
9791 New utility to convert MySQL schema dumps to SQL92 and PostgreSQL (Thomas)
9792 New /contrib/rserv replication toolkit (Vadim)
9793 New file format for COPY BINARY (Tom)
9794 New /contrib/oid2name to map numeric files to table names (B Palmer)
9795 New "idle in transaction" ps status message (Marc)
9796 Update to pgaccess 0.98.7 (Constantin Teodorescu)
9797 pg_ctl now defaults to -w (wait) on shutdown, new -l (log) option
9798 Add rudimentary dependency checking to pg_dump (Philip)
9802 Fix INET/CIDR type ordering and add new functions (Tom)
9803 Make OID behave as an unsigned type (Tom)
9804 Allow BIGINT as synonym for INT8 (Peter E)
9805 New int2 and int8 comparison operators (Tom)
9806 New BIT and BIT VARYING types (Adriaan Joubert, Tom, Peter E)
9807 CHAR() no longer faster than VARCHAR() because of TOAST (Tom)
9808 New GIST seg/cube examples (Gene Selkov)
9809 Improved round(numeric) handling (Tom)
9810 Fix CIDR output formatting (Tom)
9811 New CIDR abbrev() function (Tom)
9815 Write-Ahead Log (WAL) to provide crash recovery with less performance
9817 ANALYZE stage of VACUUM no longer exclusively locks table (Bruce)
9818 Reduced file seeks (Denis Perchine)
9819 Improve BTREE code for duplicate keys (Tom)
9820 Store all large objects in a single table (Denis Perchine, Tom)
9821 Improve memory allocation performance (Karel, Tom)
9825 New function manager call conventions (Tom)
9826 SGI portability fixes (David Kaelbling)
9827 New configure --enable-syslog option (Peter E)
9828 New BSDI README (Bruce)
9829 configure script moved to top level, not /src (Peter E)
9830 Makefile/configuration/compilation overhaul (Peter E)
9831 New configure --with-python option (Peter E)
9832 Solaris cleanups (Peter E)
9833 Overhaul /contrib Makefiles (Karel)
9834 New OpenSSL configuration option (Magnus, Peter E)
9836 QNX fixes (Maurizio)
9837 New heap_open(), heap_openr() API (Tom)
9838 Remove colon and semi-colon operators (Thomas)
9839 New pg_class.relkind value for views (Mark Hollomon)
9840 Rename ichar() to chr() (Karel)
9841 New documentation for btrim(), ascii(), chr(), repeat() (Karel)
9842 Fixes for NT/Cygwin (Pete Forman)
9843 AIX port fixes (Andreas)
9844 New BeOS port (David Reid, Cyril Velter)
9845 Add proofreader's changes to docs (Addison-Wesley, Bruce)
9846 New Alpha spinlock code (Adriaan Joubert, Compaq)
9847 UnixWare port overhaul (Peter E)
9848 New Darwin/MacOS X port (Peter Bierman, Bruce Hartzler)
9849 New FreeBSD Alpha port (Alfred)
9850 Overhaul shared memory segments (Tom)
9851 Add IBM S/390 support (Neale Ferguson)
9852 Moved macmanuf to /contrib (Larry Rosenman)
9853 Syslog improvements (Larry Rosenman)
9854 New template0 database that contains no user additions (Tom)
9855 New /contrib/cube and /contrib/seg GIST sample code (Gene Selkov)
9856 Allow NetBSD's libedit instead of readline (Peter)
9857 Improved assembly language source code format (Bruce)
9858 New contrib/pg_logger
9859 New --template option to createdb
9860 New contrib/pg_control utility (Oliver)
9861 New FreeBSD tools ipc_check, start-scripts/freebsd
9868 <sect1 id="release-7-0-3">
9869 <title>Release 7.0.3</title>
9872 <title>Release date</title>
9873 <simpara>2000-11-11</simpara>
9877 This has a variety of fixes from 7.0.2.
9882 <title>Migration to version 7.0.3</title>
9885 A dump/restore is <emphasis>not</emphasis> required for those running
9891 <title>Changes</title>
9896 Large object fix (Tom)
9897 Fix lean in COPY WITH OIDS leak (Tom)
9898 Fix backwards-index-scan (Tom)
9899 Fix SELECT ... FOR UPDATE so it checks for duplicate keys (Hiroshi)
9900 Add --enable-syslog to configure (Marc)
9901 Fix abort transaction at backend exit in rare cases (Tom)
9902 Fix for psql \l+ when multibyte enabled (Tatsuo)
9903 Allow PL/pgSQL to accept non ascii identifiers (Tatsuo)
9904 Make vacuum always flush buffers (Tom)
9905 Fix to allow cancel while waiting for a lock (Hiroshi)
9906 Fix for memory aloocation problem in user authentication code (Tom)
9907 Remove bogus use of int4out() (Tom)
9908 Fixes for multiple subqueries in COALESCE or BETWEEN (Tom)
9909 Fix for failure of triggers on heap open in certain cases (Jeroen van
9911 Fix for erroneous selectivity of not-equals (Tom)
9912 Fix for erroneous use of strcmp() (Tom)
9913 Fix for bug where storage manager accesses items beyond end of file
9915 Fix to include kernel errno message in all smgr elog messages (Tom)
9916 Fix for '.' not in PATH at build time (SL Baur)
9917 Fix for out-of-file-descriptors error (Tom)
9918 Fix to make pg_dump dump 'iscachable' flag for functions (Tom)
9919 Fix for subselect in targetlist of Append node (Tom)
9920 Fix for mergejoin plans (Tom)
9921 Fix TRUNCATE failure on relations with indexes (Tom)
9922 Avoid database-wide restart on write error (Hiroshi)
9923 Fix nodeMaterial to honor chgParam by recomputing its output (Tom)
9924 Fix VACUUM problem with moving chain of update row versions when source
9925 and destination of a row version lie on the same page (Tom)
9926 Fix user.c CommandCounterIncrement (Tom)
9927 Fix for AM/PM boundary problem in to_char() (Karel Zak)
9928 Fix TIME aggregate handling (Tom)
9929 Fix to_char() to avoid coredump on NULL input (Tom)
9931 Fix for inserting/copying longer multibyte strings into char() data
9933 Fix for crash of backend, on abort (Tom)
9940 <sect1 id="release-7-0-2">
9941 <title>Release 7.0.2</title>
9944 <title>Release date</title>
9945 <simpara>2000-06-05</simpara>
9949 This is a repackaging of 7.0.1 with added documentation.
9954 <title>Migration to version 7.0.2</title>
9957 A dump/restore is <emphasis>not</emphasis> required for those running
9963 <title>Changes</title>
9967 Added documentation to tarball.
9974 <sect1 id="release-7-0-1">
9975 <title>Release 7.0.1</title>
9978 <title>Release date</title>
9979 <simpara>2000-06-01</simpara>
9983 This is a cleanup release for 7.0.
9987 <title>Migration to version 7.0.1</title>
9990 A dump/restore is <emphasis>not</emphasis> required for those running
9996 <title>Changes</title>
10000 Fix many CLUSTER failures (Tom)
10001 Allow ALTER TABLE RENAME works on indexes (Tom)
10002 Fix plpgsql to handle datetime->timestamp and timespan->interval (Bruce)
10003 New configure --with-setproctitle switch to use setproctitle() (Marc, Bruce)
10004 Fix the off by one errors in ResultSet from 6.5.3, and more.
10005 jdbc ResultSet fixes (Joseph Shraibman)
10006 optimizer tunings (Tom)
10007 Fix create user for pgaccess
10008 Fix for UNLISTEN failure
10009 IRIX fixes (David Kaelbling)
10010 QNX fixes (Andreas Kardos)
10011 Reduce COPY IN lock level (Tom)
10012 Change libpqeasy to use PQconnectdb() style parameters (Bruce)
10013 Fix pg_dump to handle OID indexes (Tom)
10014 Fix small memory leak (Tom)
10015 Solaris fix for createdb/dropdb (Tatsuo)
10016 Fix for non-blocking connections (Alfred Perlstein)
10017 Fix improper recovery after RENAME TABLE failures (Tom)
10018 Copy pg_ident.conf.sample into /lib directory in install (Bruce)
10019 Add SJIS UDC (NEC selection IBM kanji) support (Eiji Tokuya)
10020 Fix too long syslog message (Tatsuo)
10021 Fix problem with quoted indexes that are too long (Tom)
10022 JDBC ResultSet.getTimestamp() fix (Gregory Krasnow & Floyd Marinescu)
10023 ecpg changes (Michael)
10029 <sect1 id="release-7-0">
10030 <title>Release 7.0</title>
10033 <title>Release date</title>
10034 <simpara>2000-05-08</simpara>
10038 This release contains improvements in many areas, demonstrating
10039 the continued growth of <productname>PostgreSQL</productname>.
10040 There are more improvements and fixes in 7.0 than in any previous
10041 release. The developers have confidence that this is the best
10042 release yet; we do our best to put out only solid releases, and
10043 this one is no exception.
10047 Major changes in this release:
10057 Foreign keys are now implemented, with the exception of PARTIAL MATCH
10058 foreign keys. Many users have been asking for this feature, and we are
10059 pleased to offer it.
10070 Continuing on work started a year ago, the optimizer has been
10071 improved, allowing better query plan selection and faster performance
10072 with less memory usage.
10079 Updated <application>psql</application>
10083 <application>psql</application>, our interactive terminal monitor, has been
10084 updated with a variety of new features. See the <application>psql</application> manual page for details.
10095 SQL92 join syntax is now supported, though only as
10096 <literal>INNER JOIN</> for this release. <literal>JOIN</>,
10097 <literal>NATURAL JOIN</>, <literal>JOIN</>/<literal>USING</>,
10098 and <literal>JOIN</>/<literal>ON</> are available, as are
10099 column correlation names.
10107 <title>Migration to version 7.0</title>
10110 A dump/restore using <application>pg_dump</application>
10111 is required for those wishing to migrate data from any
10112 previous release of <productname>PostgreSQL</productname>.
10113 For those upgrading from 6.5.*, you may instead use
10114 <application>pg_upgrade</application> to upgrade to this
10115 release; however, a full dump/reload installation is always the
10116 most robust method for upgrades.
10120 Interface and compatibility issues to consider for the new
10127 The date/time types <type>datetime</type> and
10128 <type>timespan</type> have been superseded by the
10129 SQL92-defined types <type>timestamp</type> and
10130 <type>interval</type>. Although there has been some effort to
10131 ease the transition by allowing
10132 <productname>PostgreSQL</productname> to recognize
10133 the deprecated type names and translate them to the new type
10134 names, this mechanism may not be completely transparent to
10135 your existing application.
10141 The optimizer has been substantially improved in the area of
10142 query cost estimation. In some cases, this will result in
10143 decreased query times as the optimizer makes a better choice
10144 for the preferred plan. However, in a small number of cases,
10145 usually involving pathological distributions of data, your
10146 query times may go up. If you are dealing with large amounts
10147 of data, you may want to check your queries to verify
10154 The <acronym>JDBC</acronym> and <acronym>ODBC</acronym>
10155 interfaces have been upgraded and extended.
10161 The string function <function>CHAR_LENGTH</function> is now a
10162 native function. Previous versions translated this into a call
10163 to <function>LENGTH</function>, which could result in
10164 ambiguity with other types implementing
10165 <function>LENGTH</function> such as the geometric types.
10172 <title>Changes</title>
10178 Prevent function calls exceeding maximum number of arguments (Tom)
10179 Improve CASE construct (Tom)
10180 Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
10181 Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
10182 Fix GROUP BY scan bug (Tom)
10183 Improvements in SQL grammar processing (Tom)
10184 Fix for views involved in INSERT ... SELECT ... (Tom)
10185 Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
10186 Fix for subselects in INSERT ... SELECT (Tom)
10187 Prevent INSERT ... SELECT ... ORDER BY (Tom)
10188 Fixes for relations greater than 2GB, including vacuum
10189 Improve propagating system table changes to other backends (Tom)
10190 Improve propagating user table changes to other backends (Tom)
10191 Fix handling of temp tables in complex situations (Bruce, Tom)
10192 Allow table locking at table open, improving concurrent reliability (Tom)
10193 Properly quote sequence names in pg_dump (Ross J. Reedstrom)
10194 Prevent DROP DATABASE while others accessing
10195 Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
10196 Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
10197 Fix pg_upgrade so it works for MVCC (Tom)
10198 Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
10199 Fix for "f1 datetime DEFAULT 'now'" (Tom)
10200 Fix problems with CURRENT_DATE used in DEFAULT (Tom)
10201 Allow comment-only lines, and ;;; lines too. (Tom)
10202 Improve recovery after failed disk writes, disk full (Hiroshi)
10203 Fix cases where table is mentioned in FROM but not joined (Tom)
10204 Allow HAVING clause without aggregate functions (Tom)
10205 Fix for "--" comment and no trailing newline, as seen in perl interface
10206 Improve pg_dump failure error reports (Bruce)
10207 Allow sorts and hashes to exceed 2GB file sizes (Tom)
10208 Fix for pg_dump dumping of inherited rules (Tom)
10209 Fix for NULL handling comparisons (Tom)
10210 Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
10211 Fix for dbname with dash
10212 Prevent DROP INDEX from interfering with other backends (Tom)
10213 Fix file descriptor leak in verify_password()
10214 Fix for "Unable to identify an operator =$" problem
10215 Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
10216 Fix for recursive exit call (Massimo)
10217 Fix for extra-long timezones (Jeroen van Vianen)
10218 Make pg_dump preserve primary key information (Peter E)
10219 Prevent databases with single quotes (Peter E)
10220 Prevent DROP DATABASE inside transaction (Peter E)
10221 ecpg memory leak fixes (Stephen Birch)
10222 Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
10223 Y2K timestamp fix (Massimo)
10224 Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
10225 Fix for views with tables/columns containing spaces (Tom)
10226 Prevent privileges on indexes (Peter E)
10227 Fix for spinlock stuck problem when error is generated (Hiroshi)
10228 Fix ipcclean on Linux
10229 Fix handling of NULL constraint conditions (Tom)
10230 Fix memory leak in odbc driver (Nick Gorham)
10231 Fix for privilege check on UNION tables (Tom)
10232 Fix to allow SELECT 'a' LIKE 'a' (Tom)
10233 Fix for SELECT 1 + NULL (Tom)
10235 Fix log() on numeric type (Tom)
10236 Deprecate ':' and ';' operators
10237 Allow vacuum of temporary tables
10238 Disallow inherited columns with the same name as new columns
10239 Recover or force failure when disk space is exhausted (Hiroshi)
10240 Fix INSERT INTO ... SELECT with AS columns matching result columns
10241 Fix INSERT ... SELECT ... GROUP BY groups by target columns not source columns (Tom)
10242 Fix CREATE TABLE test (a char(5) DEFAULT text '', b int4) with INSERT (Tom)
10243 Fix UNION with LIMIT
10244 Fix CREATE TABLE x AS SELECT 1 UNION SELECT 2
10245 Fix CREATE TABLE test(col char(2) DEFAULT user)
10246 Fix mismatched types in CREATE TABLE ... DEFAULT
10247 Fix SELECT * FROM pg_class where oid in (0,-1)
10248 Fix SELECT COUNT('asdf') FROM pg_class WHERE oid=12
10249 Prevent user who can create databases can modifying pg_database table (Peter E)
10250 Fix btree to give a useful elog when key > 1/2 (page - overhead) (Tom)
10251 Fix INSERT of 0.0 into DECIMAL(4,4) field (Tom)
10255 New CLI interface include file sqlcli.h, based on SQL3/SQL98
10256 Remove all limits on query length, row length limit still exists (Tom)
10257 Update jdbc protocol to 2.0 (Jens Glaser <email>jens@jens.de</email>)
10258 Add TRUNCATE command to quickly truncate relation (Mike Mascari)
10259 Fix to give super user and createdb user proper update catalog rights (Peter E)
10260 Allow ecpg bool variables to have NULL values (Christof)
10261 Issue ecpg error if NULL value for variable with no NULL indicator (Christof)
10262 Allow ^C to cancel COPY command (Massimo)
10263 Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
10264 Function name overloading for dynamically-loaded C functions (Frankpitt)
10265 Add CmdTuples() to libpq++(Vince)
10266 New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
10267 Allow CREATE FUNCTION/WITH clause to be used for all language types
10268 configure --enable-debug adds -g (Peter E)
10269 configure --disable-debug removes -g (Peter E)
10270 Allow more complex default expressions (Tom)
10271 First real FOREIGN KEY constraint trigger functionality (Jan)
10272 Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
10273 Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
10274 Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
10275 Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
10276 Change pgeasy connectdb() parameter ordering (Bruce)
10277 Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
10278 Add Oracle's COMMENT ON command (Mike Mascari <email>mascarim@yahoo.com</email>)
10279 libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
10280 Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
10281 Make USING in COPY optional (Bruce)
10282 Allow subselects in the target list (Tom)
10283 Allow subselects on the left side of comparison operators (Tom)
10284 New parallel regression test (Jan)
10285 Change backend-side COPY to write files with permissions 644 not 666 (Tom)
10286 Force permissions on PGDATA directory to be secure, even if it exists (Tom)
10287 Added psql LASTOID variable to return last inserted oid (Peter E)
10288 Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
10289 Add privilege check for vacuum (Peter E)
10290 New libpq functions to allow asynchronous connections: PQconnectStart(),
10291 PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
10292 PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
10293 New libpq PQsetenv() function (Ewan Mellor)
10294 create/alter user extension (Peter E)
10295 New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
10296 New scripts for create/drop user/db (Peter E)
10297 Major psql overhaul (Peter E)
10298 Add const to libpq interface (Peter E)
10299 New libpq function PQoidValue (Peter E)
10300 Show specific non-aggregate causing problem with GROUP BY (Tom)
10301 Make changes to pg_shadow recreate pg_pwd file (Peter E)
10302 Add aggregate(DISTINCT ...) (Tom)
10303 Allow flag to control COPY input/output of NULLs (Peter E)
10304 Make postgres user have a password by default (Peter E)
10305 Add CREATE/ALTER/DROP GROUP (Peter E)
10306 All administration scripts now support --long options (Peter E, Karel)
10307 Vacuumdb script now supports --all option (Peter E)
10308 ecpg new portable FETCH syntax
10309 Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
10310 and EXEC SQL ENDIF directives
10311 Add pg_ctl script to control backend start-up (Tatsuo)
10312 Add postmaster.opts.default file to store start-up flags (Tatsuo)
10313 Allow --with-mb=SQL_ASCII
10314 Increase maximum number of index keys to 16 (Bruce)
10315 Increase maximum number of function arguments to 16 (Bruce)
10316 Allow configuration of maximum number of index keys and arguments (Bruce)
10317 Allow unprivileged users to change their passwords (Peter E)
10318 Password authentication enabled; required for new users (Peter E)
10319 Disallow dropping a user who owns a database (Peter E)
10320 Change initdb option --with-mb to --enable-multibyte
10321 Add option for initdb to prompts for superuser password (Peter E)
10322 Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
10323 Updated user interfaces on initdb, initlocation, pg_dump, ipcclean (Peter E)
10324 New pg_char_to_encoding() and pg_encoding_to_char() functions (Tatsuo)
10325 libpq non-blocking mode (Alfred Perlstein)
10326 Improve conversion of types in casts that don't specify a length
10327 New plperl internal programming language (Mark Hollomon)
10328 Allow COPY IN to read file that do not end with a newline (Tom)
10329 Indicate when long identifiers are truncated (Tom)
10330 Allow aggregates to use type equivalency (Peter E)
10331 Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
10332 conversion functions (Karel Zak <zakkr@zf.jcu.cz>)
10333 Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
10334 Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
10335 Add NUMERIC and int8 types to ODBC
10336 Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
10337 Add ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
10338 Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
10339 Enable backward sequential scan even after reaching EOF (Hiroshi)
10340 Add btree indexing of boolean values, >= and <= (Don Baccus)
10341 Print current line number when COPY FROM fails (Massimo)
10342 Recognize POSIX time zone e.g. "PST+8" and "GMT-8" (Thomas)
10343 Add DEC as synonym for DECIMAL (Thomas)
10344 Add SESSION_USER as SQL92 key word, same as CURRENT_USER (Thomas)
10345 Implement SQL92 column aliases (aka correlation names) (Thomas)
10346 Implement SQL92 join syntax (Thomas)
10347 Make INTERVAL reserved word allowed as a column identifier (Thomas)
10348 Implement REINDEX command (Hiroshi)
10349 Accept ALL in aggregate function SUM(ALL col) (Tom)
10350 Prevent GROUP BY from using column aliases (Tom)
10351 New psql \encoding option (Tatsuo)
10352 Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
10353 Allow negation of a negative number in all cases
10354 Add ecpg descriptors (Christof, Michael)
10355 Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
10356 Allow casts with length, like foo::char(8)
10357 New libpq functions PQsetClientEncoding(), PQclientEncoding() (Tatsuo)
10358 Add support for SJIS user defined characters (Tatsuo)
10359 Larger views/rules supported
10360 Make libpq's PQconndefaults() thread-safe (Tom)
10361 Disable // as comment to be ANSI conforming, should use -- (Tom)
10362 Allow column aliases on views CREATE VIEW name (collist)
10363 Fixes for views with subqueries (Tom)
10364 Allow UPDATE table SET fld = (SELECT ...) (Tom)
10365 SET command options no longer require quotes
10366 Update pgaccess to 0.98.6
10367 New SET SEED command
10368 New pg_options.sample file
10369 New SET FSYNC command (Massimo)
10370 Allow pg_descriptions when creating tables
10371 Allow pg_descriptions when creating types, columns, and functions
10372 Allow psql \copy to allow delimiters (Peter E)
10373 Allow psql to print nulls as distinct from "" [null] (Peter E)
10377 Many array fixes (Tom)
10378 Allow bare column names to be subscripted as arrays (Tom)
10379 Improve type casting of int and float constants (Tom)
10380 Cleanups for int8 inputs, range checking, and type conversion (Tom)
10381 Fix for SELECT timespan('21:11:26'::time) (Tom)
10382 netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0 (Oleg Sharoiko)
10383 Add btree index on NUMERIC (Jan)
10384 Perl fix for large objects containing NUL characters (Douglas Thomson)
10385 ODBC fix for for large objects (free)
10386 Fix indexing of cidr data type
10387 Fix for Ethernet MAC addresses (macaddr type) comparisons
10388 Fix for date/time types when overflows happened in computations (Tom)
10389 Allow array on int8 (Peter E)
10390 Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
10391 Allow NUMERIC arrays
10392 Fix bugs in NUMERIC ceil() and floor() functions (Tom)
10393 Make char_length()/octet_length including trailing blanks (Tom)
10394 Made abstime/reltime use int4 instead of time_t (Peter E)
10395 New lztext data type for compressed text fields
10396 Revise code to handle coercion of int and float constants (Tom)
10397 Start at new code to implement a BIT and BIT VARYING type (Adriaan Joubert)
10398 NUMERIC now accepts scientific notation (Tom)
10399 NUMERIC to int4 rounds (Tom)
10400 Convert float4/8 to NUMERIC properly (Tom)
10401 Allow type conversion with NUMERIC (Thomas)
10402 Make ISO date style (2000-02-16 09:33) the default (Thomas)
10403 Add NATIONAL CHAR [ VARYING ] (Thomas)
10404 Allow NUMERIC round and trunc to accept negative scales (Tom)
10405 New TIME WITH TIME ZONE type (Thomas)
10406 Add MAX()/MIN() on time type (Thomas)
10407 Add abs(), mod(), fac() for int8 (Thomas)
10408 Rename functions to round(), sqrt(), cbrt(), pow() for float8 (Thomas)
10409 Add transcendental math functions (e.g. sin(), acos()) for float8 (Thomas)
10410 Add exp() and ln() for NUMERIC type
10411 Rename NUMERIC power() to pow() (Thomas)
10412 Improved TRANSLATE() function (Edwin Ramirez, Tom)
10413 Allow X=-Y operators (Tom)
10414 Allow SELECT float8(COUNT(*))/(SELECT COUNT(*) FROM t) FROM t GROUP BY f1; (Tom)
10415 Allow LOCALE to use indexes in regular expression searches (Tom)
10416 Allow creation of functional indexes to use default types
10420 Prevent exponential space consumption with many AND's and OR's (Tom)
10421 Collect attribute selectivity values for system columns (Tom)
10422 Reduce memory usage of aggregates (Tom)
10423 Fix for LIKE optimization to use indexes with multibyte encodings (Tom)
10424 Fix r-tree index optimizer selectivity (Thomas)
10425 Improve optimizer selectivity computations and functions (Tom)
10426 Optimize btree searching for cases where many equal keys exist (Tom)
10427 Enable fast LIKE index processing only if index present (Tom)
10428 Re-use free space on index pages with duplicates (Tom)
10429 Improve hash join processing (Tom)
10430 Prevent descending sort if result is already sorted(Hiroshi)
10431 Allow commuting of index scan query qualifications (Tom)
10432 Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
10433 Allocate large memory requests in fix-sized chunks for performance (Tom)
10434 Fix vacuum's performance by reducing memory allocation requests (Tom)
10435 Implement constant-expression simplification (Bernard Frankpitt, Tom)
10436 Use secondary columns to be used to determine start of index scan (Hiroshi)
10437 Prevent quadruple use of disk space when doing internal sorting (Tom)
10438 Faster sorting by calling fewer functions (Tom)
10439 Create system indexes to match all system caches (Bruce, Hiroshi)
10440 Make system caches use system indexes (Bruce)
10441 Make all system indexes unique (Bruce)
10442 Improve pg_statistics management for VACUUM speed improvement (Tom)
10443 Flush backend cache less frequently (Tom, Hiroshi)
10444 COPY now reuses previous memory allocation, improving performance (Tom)
10445 Improve optimization cost estimation (Tom)
10446 Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
10447 Use DNF instead of CNF where appropriate (Tom, Taral)
10448 Further cleanup for OR-of-AND WHERE-clauses (Tom)
10449 Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
10450 Smarter optimizer computations for random index page access (Tom)
10451 New SET variable to control optimizer costs (Tom)
10452 Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
10453 Reduce optimizer internal housekeeping of join paths for speedup (Tom)
10454 Major subquery speedup (Tom)
10455 Fewer fsync writes when fsync is not disabled (Tom)
10456 Improved LIKE optimizer estimates (Tom)
10457 Prevent fsync in SELECT-only queries (Vadim)
10458 Make index creation use psort code, because it is now faster (Tom)
10459 Allow creation of sort temp tables > 1 Gig
10461 Source Tree Changes
10462 -------------------
10463 Fix for linux PPC compile
10464 New generic expression-tree-walker subroutine (Tom)
10465 Change form() to varargform() to prevent portability problems
10466 Improved range checking for large integers on Alphas
10467 Clean up #include in /include directory (Bruce)
10468 Add scripts for checking includes (Bruce)
10469 Remove un-needed #include's from *.c files (Bruce)
10470 Change #include's to use <> and "" as appropriate (Bruce)
10471 Enable Windows compilation of libpq
10472 Alpha spinlock fix from Uncle George <email>gatgul@voicenet.com</email>
10473 Overhaul of optimizer data structures (Tom)
10474 Fix to cygipc library (Yutaka Tanida)
10475 Allow pgsql to work on newer Cygwin snapshots (Dan)
10476 New catalog version number (Tom)
10478 Rename heap_replace to heap_update
10479 Update for QNX (Dr. Andreas Kardos)
10480 New platform-specific regression handling (Tom)
10481 Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
10482 Included all yacc and lex files into the distribution (Peter E.)
10483 Remove lextest, no longer needed (Peter E)
10484 Fix for libpq and psql on Windows (Magnus)
10485 Internally change datetime and timespan into timestamp and interval (Thomas)
10486 Fix for plpgsql on BSD/OS
10487 Add SQL_ASCII test case to the regression test (Tatsuo)
10488 configure --with-mb now deprecated (Tatsuo)
10490 NetBSD fixes (Johnny C. Lam <email>lamj@stat.cmu.edu</email>)
10491 Fixes for Alpha compiles
10492 New multibyte encodings
10498 <sect1 id="release-6-5-3">
10499 <title>Release 6.5.3</title>
10502 <title>Release date</title>
10503 <simpara>1999-10-13</simpara>
10507 This is basically a cleanup release for 6.5.2. We have added a new
10508 <application>PgAccess</> that was missing in 6.5.2, and installed an NT-specific fix.
10513 <title>Migration to version 6.5.3</title>
10516 A dump/restore is <emphasis>not</emphasis> required for those running
10521 <title>Changes</title>
10525 Updated version of pgaccess 0.98
10527 Fix dumping rules on inherited tables
10534 <sect1 id="release-6-5-2">
10535 <title>Release 6.5.2</title>
10538 <title>Release date</title>
10539 <simpara>1999-09-15</simpara>
10543 This is basically a cleanup release for 6.5.1. We have fixed a variety of
10544 problems reported by 6.5.1 users.
10549 <title>Migration to version 6.5.2</title>
10552 A dump/restore is <emphasis>not</emphasis> required for those running
10558 <title>Changes</title>
10562 subselect+CASE fixes(Tom)
10563 Add SHLIB_LINK setting for solaris_i386 and solaris_sparc ports(Daren Sefcik)
10564 Fixes for CASE in WHERE join clauses(Tom)
10565 Fix BTScan abort(Tom)
10566 Repair the check for redundant UNIQUE and PRIMARY KEY indexes(Thomas)
10567 Improve it so that it checks for multicolumn constraints(Thomas)
10568 Fix for Windows making problem with MB enabled(Hiroki Kataoka)
10569 Allow BSD yacc and bison to compile pl code(Bruce)
10570 Fix SET NAMES working
10572 Fix vacuum's memory consumption(Hiroshi,Tatsuo)
10573 Reduce the total memory consumption of vacuum(Tom)
10574 Fix for timestamp(datetime)
10575 Rule deparsing bugfixes(Tom)
10576 Fix quoting problems in mkMakefile.tcldefs.sh.in and mkMakefile.tkdefs.sh.in(Tom)
10577 This is to re-use space on index pages freed by vacuum(Vadim)
10578 document -x for pg_dump(Bruce)
10579 Fix for unary operators in rule deparser(Tom)
10580 Comment out FileUnlink of excess segments during mdtruncate()(Tom)
10581 IRIX linking fix from Yu Cao >yucao@falcon.kla-tencor.com<
10582 Repair logic error in LIKE: should not return LIKE_ABORT
10583 when reach end of pattern before end of text(Tom)
10584 Repair incorrect cleanup of heap memory allocation during transaction abort(Tom)
10585 Updated version of pgaccess 0.98
10591 <sect1 id="release-6-5-1">
10592 <title>Release 6.5.1</title>
10595 <title>Release date</title>
10596 <simpara>1999-07-15</simpara>
10600 This is basically a cleanup release for 6.5. We have fixed a variety of
10601 problems reported by 6.5 users.
10605 <title>Migration to version 6.5.1</title>
10608 A dump/restore is <emphasis>not</emphasis> required for those running
10614 <title>Changes</title>
10619 Portability fixes for linux_ppc, IRIX, linux_alpha, OpenBSD, alpha
10620 Remove QUERY_LIMIT, use SELECT...LIMIT
10621 Fix for EXPLAIN on inheritance(Tom)
10622 Patch to allow vacuum on multisegment tables(Hiroshi)
10623 R-Tree optimizer selectivity fix(Tom)
10624 ACL file descriptor leak fix(Atsushi Ogawa)
10625 New expresssion subtree code(Tom)
10626 Avoid disk writes for read-only transactions(Vadim)
10627 Fix for removal of temp tables if last transaction was aborted(Bruce)
10628 Fix to prevent too large row from being created(Bruce)
10630 Allow port numbers 32k - 64k(Bruce)
10631 Add ^ precidence(Bruce)
10632 Rename sort files called pg_temp to pg_sorttemp(Bruce)
10633 Fix for microseconds in time values(Tom)
10634 Tutorial source cleanup
10635 New linux_m68k port
10636 Fix for sorting of NULL's in some cases(Tom)
10637 Shared library dependencies fixed (Tom)
10638 Fixed glitches affecting GROUP BY in subselects(Tom)
10639 Fix some compiler warnings (Tomoaki Nishiyama)
10640 Add Win1250 (Czech) support (Pavel Behal)
10646 <sect1 id="release-6-5">
10647 <title>Release 6.5</title>
10650 <title>Release date</title>
10651 <simpara>1999-06-09</simpara>
10655 This release marks a major step in the development team's mastery of the source
10656 code we inherited from Berkeley. You will see we are now easily adding
10657 major features, thanks to the increasing size and experience of our
10658 world-wide development team.
10662 Here is a brief summary of the more notable changes:
10667 Multiversion concurrency control(MVCC)
10671 This removes our old table-level locking, and replaces it with
10672 a locking system that is superior to most commercial database
10673 systems. In a traditional system, each row that is modified
10674 is locked until committed, preventing reads by other users.
10675 MVCC uses the natural multiversion nature of
10676 <productname>PostgreSQL</productname> to allow readers to
10677 continue reading consistent data during writer activity.
10678 Writers continue to use the compact pg_log transaction system.
10679 This is all performed without having to allocate a lock for
10680 every row like traditional database systems. So, basically,
10681 we no longer are restricted by simple table-level locking; we
10682 have something better than row-level locking.
10689 Hot backups from <application>pg_dump</application>
10693 <application>pg_dump</application> takes advantage of the new
10694 MVCC features to give a consistent database dump/backup while
10695 the database stays online and available for queries.
10706 We now have a true numeric data type, with
10707 user-specified precision.
10718 Temporary tables are guaranteed to have unique names
10719 within a database session, and are destroyed on session exit.
10730 We now have CASE, INTERSECT, and EXCEPT statement
10731 support. We have new LIMIT/OFFSET, SET TRANSACTION ISOLATION LEVEL,
10732 SELECT ... FOR UPDATE, and an improved LOCK TABLE command.
10743 We continue to speed up <productname>PostgreSQL</productname>,
10744 thanks to the variety of talents within our team. We have
10745 sped up memory allocation, optimization, table joins, and row
10757 We continue to expand our port list, this time including
10758 <systemitem class="osname">Windows NT</>/<systemitem>ix86</> and <systemitem class="osname">NetBSD</>/<systemitem>arm32</>.
10769 Most interfaces have new versions, and existing functionality
10781 New and updated material is present throughout the
10782 documentation. New <acronym>FAQ</acronym>s have been
10783 contributed for <systemitem class="osname">SGI</> and <systemitem class="osname">AIX</> platforms.
10784 The <citetitle>Tutorial</citetitle> has introductory information
10785 on <acronym>SQL</acronym> from Stefan Simkovics.
10786 For the <citetitle>User's Guide</citetitle>, there are
10787 reference pages covering the postmaster and more utility
10788 programs, and a new appendix
10789 contains details on date/time behavior.
10790 The <citetitle>Administrator's Guide</citetitle> has a new
10791 chapter on troubleshooting from Tom Lane.
10792 And the <citetitle>Programmer's Guide</citetitle> has a
10793 description of query processing, also from Stefan, and details
10794 on obtaining the <productname>PostgreSQL</productname> source
10795 tree via anonymous <productname>CVS</productname> and
10796 <productname>CVSup</productname>.
10804 <title>Migration to version 6.5</title>
10807 A dump/restore using <application>pg_dump</application>
10808 is required for those wishing to migrate data from any
10809 previous release of <productname>PostgreSQL</productname>.
10810 <application>pg_upgrade</application> can <emphasis>not</emphasis>
10811 be used to upgrade to this release because the on-disk structure
10812 of the tables has changed compared to previous releases.
10816 The new Multiversion Concurrency Control (MVCC) features can
10817 give somewhat different behaviors in multiuser
10818 environments. <emphasis>Read and understand the following section
10819 to ensure that your existing applications will give you the
10820 behavior you need.</emphasis>
10824 <title>Multiversion Concurrency Control</title>
10827 Because readers in 6.5 don't lock data, regardless of transaction
10828 isolation level, data read by one transaction can be overwritten by
10829 another. In other words, if a row is returned by
10830 <command>SELECT</command> it doesn't mean that this row really exists
10831 at the time it is returned (i.e. sometime after the statement or
10832 transaction began) nor that the row is protected from being deleted or
10833 updated by concurrent transactions before the current transaction does
10834 a commit or rollback.
10838 To ensure the actual existence of a row and protect it against
10839 concurrent updates one must use <command>SELECT FOR UPDATE</command> or
10840 an appropriate <command>LOCK TABLE</command> statement. This should be
10841 taken into account when porting applications from previous releases of
10842 <productname>PostgreSQL</productname> and other environments.
10846 Keep the above in mind if you are using
10847 <filename>contrib/refint.*</filename> triggers for
10848 referential integrity. Additional techniques are required now. One way is
10849 to use <command>LOCK parent_table IN SHARE ROW EXCLUSIVE MODE</command>
10850 command if a transaction is going to update/delete a primary key and
10851 use <command>LOCK parent_table IN SHARE MODE</command> command if a
10852 transaction is going to update/insert a foreign key.
10856 Note that if you run a transaction in SERIALIZABLE mode then you must
10857 execute the <command>LOCK</command> commands above before execution of any
10858 <acronym>DML</acronym> statement
10859 (<command>SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO</command>) in the
10866 These inconveniences will disappear in the future
10867 when the ability to read dirty
10868 (uncommitted) data (regardless of isolation level) and true referential
10869 integrity will be implemented.
10875 <title>Changes</title>
10881 Fix text<->float8 and text<->float4 conversion functions(Thomas)
10882 Fix for creating tables with mixed-case constraints(Billy)
10883 Change exp()/pow() behavior to generate error on underflow/overflow(Jan)
10884 Fix bug in pg_dump -z
10885 Memory overrun cleanups(Tatsuo)
10886 Fix for lo_import crash(Tatsuo)
10887 Adjust handling of data type names to suppress double quotes(Thomas)
10888 Use type coercion for matching columns and DEFAULT(Thomas)
10889 Fix deadlock so it only checks once after one second of sleep(Bruce)
10890 Fixes for aggregates and PL/pgsql(Hiroshi)
10891 Fix for subquery crash(Vadim)
10892 Fix for libpq function PQfnumber and case-insensitive names(Bahman Rafatjoo)
10893 Fix for large object write-in-middle, no extra block, memory consumption(Tatsuo)
10894 Fix for pg_dump -d or -D and quote special characters in INSERT
10895 Repair serious problems with dynahash(Tom)
10896 Fix INET/CIDR portability problems
10897 Fix problem with selectivity error in ALTER TABLE ADD COLUMN(Bruce)
10898 Fix executor so mergejoin of different column types works(Tom)
10899 Fix for Alpha OR selectivity bug
10900 Fix OR index selectivity problem(Bruce)
10901 Fix so \d shows proper length for char()/varchar()(Ryan)
10902 Fix tutorial code(Clark)
10903 Improve destroyuser checking(Oliver)
10904 Fix for Kerberos(Rodney McDuff)
10905 Fix for dropping database while dirty buffers(Bruce)
10906 Fix so sequence nextval() can be case-sensitive(Bruce)
10908 Drop buffers before destroying database files(Bruce)
10909 Fix case where executor evaluates functions twice(Tatsuo)
10910 Allow sequence nextval actions to be case-sensitive(Bruce)
10911 Fix optimizer indexing not working for negative numbers(Bruce)
10912 Fix for memory leak in executor with fjIsNull
10913 Fix for aggregate memory leaks(Erik Riedel)
10914 Allow user name containing a dash to grant privileges
10915 Cleanup of NULL in inet types
10916 Clean up system table bugs(Tom)
10917 Fix problems of PAGER and \? command(Masaaki Sakaida)
10918 Reduce default multisegment file size limit to 1GB(Peter)
10919 Fix for dumping of CREATE OPERATOR(Tom)
10920 Fix for backward scanning of cursors(Hiroshi Inoue)
10921 Fix for COPY FROM STDIN when using \i(Tom)
10922 Fix for subselect is compared inside an expression(Jan)
10923 Fix handling of error reporting while returning rows(Tom)
10924 Fix problems with reference to array types(Tom,Jan)
10925 Prevent UPDATE SET oid(Jan)
10926 Fix pg_dump so -t option can handle case-sensitive tablenames
10927 Fixes for GROUP BY in special cases(Tom, Jan)
10928 Fix for memory leak in failed queries(Tom)
10929 DEFAULT now supports mixed-case identifiers(Tom)
10930 Fix for multisegment uses of DROP/RENAME table, indexes(Ole Gjerde)
10931 Disable use of pg_dump with both -o and -d options(Bruce)
10932 Allow pg_dump to properly dump group privileges(Bruce)
10933 Fix GROUP BY in INSERT INTO table SELECT * FROM table2(Jan)
10934 Fix for computations in views(Jan)
10935 Fix for aggregates on array indexes(Tom)
10936 Fix for DEFAULT handles single quotes in value requiring too many quotes
10937 Fix security problem with non-super users importing/exporting large objects(Tom)
10938 Rollback of transaction that creates table cleaned up properly(Tom)
10939 Fix to allow long table and column names to generate proper serial names(Tom)
10943 Add "vacuumdb" utility
10944 Speed up libpq by allocating memory better(Tom)
10945 EXPLAIN all indexes used(Tom)
10946 Implement CASE, COALESCE, NULLIF expression(Thomas)
10947 New pg_dump table output format(Constantin)
10948 Add string min()/max() functions(Thomas)
10949 Extend new type coercion techniques to aggregates(Thomas)
10950 New moddatetime contrib(Terry)
10951 Update to pgaccess 0.96(Constantin)
10952 Add routines for single-byte "char" type(Thomas)
10953 Improved substr() function(Thomas)
10954 Improved multibyte handling(Tatsuo)
10955 Multiversion concurrency control/MVCC(Vadim)
10956 New Serialized mode(Vadim)
10957 Fix for tables over 2gigs(Peter)
10958 New SET TRANSACTION ISOLATION LEVEL(Vadim)
10959 New LOCK TABLE IN ... MODE(Vadim)
10960 Update ODBC driver(Byron)
10961 New NUMERIC data type(Jan)
10962 New SELECT FOR UPDATE(Vadim)
10963 Handle "NaN" and "Infinity" for input values(Jan)
10964 Improved date/year handling(Thomas)
10965 Improved handling of backend connections(Magnus)
10966 New options ELOG_TIMESTAMPS and USE_SYSLOG options for log files(Massimo)
10967 New TCL_ARRAYS option(Massimo)
10968 New INTERSECT and EXCEPT(Stefan)
10969 New pg_index.indisprimary for primary key tracking(D'Arcy)
10970 New pg_dump option to allow dropping of tables before creation(Brook)
10971 Speedup of row output routines(Tom)
10972 New READ COMMITTED isolation level(Vadim)
10973 New TEMP tables/indexes(Bruce)
10974 Prevent sorting if result is already sorted(Jan)
10975 New memory allocation optimization(Jan)
10976 Allow psql to do \p\g(Bruce)
10977 Allow multiple rule actions(Jan)
10978 Added LIMIT/OFFSET functionality(Jan)
10979 Improve optimizer when joining a large number of tables(Bruce)
10980 New intro to SQL from S. Simkovics' Master's Thesis (Stefan, Thomas)
10981 New intro to backend processing from S. Simkovics' Master's Thesis (Stefan)
10982 Improved int8 support(Ryan Bradetich, Thomas, Tom)
10983 New routines to convert between int8 and text/varchar types(Thomas)
10984 New bushy plans, where meta-tables are joined(Bruce)
10985 Enable right-hand queries by default(Bruce)
10986 Allow reliable maximum number of backends to be set at configure time
10987 (--with-maxbackends and postmaster switch (-N backends))(Tom)
10988 GEQO default now 10 tables because of optimizer speedups(Tom)
10989 Allow NULL=Var for MS-SQL portability(Michael, Bruce)
10990 Modify contrib check_primary_key() so either "automatic" or "dependent"(Anand)
10991 Allow psql \d on a view show query(Ryan)
10992 Speedup for LIKE(Bruce)
10993 Ecpg fixes/features, see src/interfaces/ecpg/ChangeLog file(Michael)
10994 JDBC fixes/features, see src/interfaces/jdbc/CHANGELOG(Peter)
10995 Make % operator have precedence like /(Bruce)
10996 Add new postgres -O option to allow system table structure changes(Bruce)
10997 Update contrib/pginterface/findoidjoins script(Tom)
10998 Major speedup in vacuum of deleted rows with indexes(Vadim)
10999 Allow non-SQL functions to run different versions based on arguments(Tom)
11000 Add -E option that shows actual queries sent by \dt and friends(Masaaki Sakaida)
11001 Add version number in start-up banners for psql(Masaaki Sakaida)
11002 New contrib/vacuumlo removes large objects not referenced(Peter)
11003 New initialization for table sizes so non-vacuumed tables perform better(Tom)
11004 Improve error messages when a connection is rejected(Tom)
11005 Support for arrays of char() and varchar() fields(Massimo)
11006 Overhaul of hash code to increase reliability and performance(Tom)
11007 Update to PyGreSQL 2.4(D'Arcy)
11008 Changed debug options so -d4 and -d5 produce different node displays(Jan)
11009 New pg_options: pretty_plan, pretty_parse, pretty_rewritten(Jan)
11010 Better optimization statistics for system table access(Tom)
11011 Better handling of non-default block sizes(Massimo)
11012 Improve GEQO optimizer memory consumption(Tom)
11013 UNION now suppports ORDER BY of columns not in target list(Jan)
11014 Major libpq++ improvements(Vince Vielhaber)
11015 pg_dump now uses -z(ACL's) as default(Bruce)
11016 backend cache, memory speedups(Tom)
11017 have pg_dump do everything in one snapshot transaction(Vadim)
11018 fix for large object memory leakage, fix for pg_dumping(Tom)
11019 INET type now respects netmask for comparisons
11020 Make VACUUM ANALYZE only use a readlock(Vadim)
11021 Allow VIEWs on UNIONS(Jan)
11022 pg_dump now can generate consistent snapshots on active databases(Vadim)
11024 Source Tree Changes
11025 -------------------
11026 Improve port matching(Tom)
11027 Portability fixes for SunOS
11028 Add Windows NT backend port and enable dynamic loading(Magnus and Daniel Horak)
11029 New port to Cobalt Qube(Mips) running Linux(Tatsuo)
11030 Port to NetBSD/m68k(Mr. Mutsuki Nakajima)
11031 Port to NetBSD/sun3(Mr. Mutsuki Nakajima)
11032 Port to NetBSD/macppc(Toshimi Aoki)
11033 Fix for tcl/tk configuration(Vince)
11034 Removed CURRENT key word for rule queries(Jan)
11035 NT dynamic loading now works(Daniel Horak)
11036 Add ARM32 support(Andrew McMurry)
11037 Better support for HP-UX 11 and UnixWare
11038 Improve file handling to be more uniform, prevent file descriptor leak(Tom)
11039 New install commands for plpgsql(Jan)
11046 <sect1 id="release-6-4-2">
11047 <title>Release 6.4.2</title>
11050 <title>Release date</title>
11051 <simpara>1998-12-20</simpara>
11055 The 6.4.1 release was improperly packaged. This also has one additional
11061 <title>Migration to version 6.4.2</title>
11064 A dump/restore is <emphasis>not</emphasis> required for those running
11069 <title>Changes</title>
11073 Fix for datetime constant problem on some platforms(Thomas)
11081 <sect1 id="release-6-4-1">
11082 <title>Release 6.4.1</title>
11085 <title>Release date</title>
11086 <simpara>1998-12-18</simpara>
11090 This is basically a cleanup release for 6.4. We have fixed a variety of
11091 problems reported by 6.4 users.
11096 <title>Migration to version 6.4.1</title>
11099 A dump/restore is <emphasis>not</emphasis> required for those running
11104 <title>Changes</title>
11108 Add pg_dump -N flag to force double quotes around identifiers. This is
11109 the default(Thomas)
11110 Fix for NOT in where clause causing crash(Bruce)
11111 EXPLAIN VERBOSE coredump fix(Vadim)
11112 Fix shared-library problems on Linux
11113 Fix test for table existence to allow mixed-case and whitespace in
11114 the table name(Thomas)
11115 Fix a couple of pg_dump bugs
11116 Configure matches template/.similar entries better(Tom)
11117 Change builtin function names from SPI_* to spi_*
11118 OR WHERE clause fix(Vadim)
11119 Fixes for mixed-case table names(Billy)
11120 contrib/linux/postgres.init.csh/sh fix(Thomas)
11121 libpq memory overrun fix
11123 Change exp() behavior to generate error on underflow(Thomas)
11124 pg_dump fixes for memory leak, inheritance constraints, layout change
11125 update pgaccess to 0.93
11126 Fix prototype for 64-bit platforms
11127 Multibyte fixes(Tatsuo)
11129 Fix memory overruns(Tatsuo)
11130 Fix for lo_import() crash(Bruce)
11131 Better search for install program(Tom)
11132 Timezone fixes(Tom)
11134 Use implicit type coercion for matching DEFAULT values(Thomas)
11135 Add routines to help with single-byte (internal) character type(Thomas)
11136 Compilation of libpq for Windows fixes(Magnus)
11137 Upgrade to PyGreSQL 2.2(D'Arcy)
11145 <sect1 id="release-6-4">
11146 <title>Release 6.4</title>
11149 <title>Release date</title>
11150 <simpara>1998-10-30</simpara>
11154 There are <emphasis>many</emphasis> new features and improvements in this release.
11155 Thanks to our developers and maintainers, nearly every aspect of the system
11156 has received some attention since the previous release.
11157 Here is a brief, incomplete summary:
11162 Views and rules are now functional thanks to extensive new code in the
11163 rewrite rules system from Jan Wieck. He also wrote a chapter on it
11164 for the <citetitle>Programmer's Guide</citetitle>.
11169 Jan also contributed a second procedural language, <application>PL/pgSQL</application>, to go with the
11170 original <application>PL/pgTCL</application> procedural language he contributed last release.
11176 We have optional multiple-byte character set support from Tatsuo Ishii
11177 to complement our existing locale support.
11183 Client/server communications has been cleaned up, with better support for
11184 asynchronous messages and interrupts thanks to Tom Lane.
11190 The parser will now perform automatic type coercion to match arguments
11191 to available operators and functions, and to match columns and expressions
11192 with target columns. This uses a generic mechanism which supports
11193 the type extensibility features of <productname>PostgreSQL</productname>.
11194 There is a new chapter in the <citetitle>User's Guide</citetitle>
11195 which covers this topic.
11201 Three new data types have been added.
11202 Two types, <type>inet</type> and <type>cidr</type>, support various forms
11203 of IP network, subnet, and machine addressing. There is now an 8-byte integer
11204 type available on some platforms. See the chapter on data types
11205 in the <citetitle>User's Guide</citetitle> for details.
11206 A fourth type, <type>serial</type>, is now supported by the parser as an
11207 amalgam of the <type>int4</type> type, a sequence, and a unique index.
11213 Several more <acronym>SQL92</acronym>-compatible syntax features have been
11214 added, including <command>INSERT DEFAULT VALUES</command>
11220 The automatic configuration and installation system has received some
11221 attention, and should be more robust for more platforms than it has ever
11230 <title>Migration to version 6.4</title>
11233 A dump/restore using <application>pg_dump</application>
11234 or <application>pg_dumpall</application>
11235 is required for those wishing to migrate data from any
11236 previous release of <productname>PostgreSQL</productname>.
11241 <title>Changes</title>
11247 Fix for a tiny memory leak in PQsetdb/PQfinish(Bryan)
11248 Remove char2-16 data types, use char/varchar(Darren)
11249 Pqfn not handles a NOTICE message(Anders)
11250 Reduced busywaiting overhead for spinlocks with many backends (dg)
11251 Stuck spinlock detection (dg)
11252 Fix up "ISO-style" timespan decoding and encoding(Thomas)
11253 Fix problem with table drop after rollback of transaction(Vadim)
11254 Change error message and remove non-functional update message(Vadim)
11255 Fix for COPY array checking
11256 Fix for SELECT 1 UNION SELECT NULL
11257 Fix for buffer leaks in large object calls(Pascal)
11258 Change owner from oid to int4 type(Bruce)
11259 Fix a bug in the oracle compatibility functions btrim() ltrim() and rtrim()
11260 Fix for shared invalidation cache overflow(Massimo)
11261 Prevent file descriptor leaks in failed COPY's(Bruce)
11262 Fix memory leak in libpgtcl's pg_select(Constantin)
11263 Fix problems with username/passwords over 8 characters(Tom)
11264 Fix problems with handling of asynchronous NOTIFY in backend(Tom)
11265 Fix of many bad system table entries(Tom)
11269 Upgrade ecpg and ecpglib,see src/interfaces/ecpc/ChangeLog(Michael)
11270 Show the index used in an EXPLAIN(Zeugswetter)
11271 EXPLAIN invokes rule system and shows plan(s) for rewritten queries(Jan)
11272 Multibyte awareness of many data types and functions, via configure(Tatsuo)
11273 New configure --with-mb option(Tatsuo)
11274 New initdb --pgencoding option(Tatsuo)
11275 New createdb -E multibyte option(Tatsuo)
11276 Select version(); now returns PostgreSQL version(Jeroen)
11277 libpq now allows asynchronous clients(Tom)
11278 Allow cancel from client of backend query(Tom)
11279 psql now cancels query with Control-C(Tom)
11280 libpq users need not issue dummy queries to get NOTIFY messages(Tom)
11281 NOTIFY now sends sender's PID, so you can tell whether it was your own(Tom)
11282 PGresult struct now includes associated error message, if any(Tom)
11283 Define "tz_hour" and "tz_minute" arguments to date_part()(Thomas)
11284 Add routines to convert between varchar and bpchar(Thomas)
11285 Add routines to allow sizing of varchar and bpchar into target columns(Thomas)
11286 Add bit flags to support timezonehour and minute in data retrieval(Thomas)
11287 Allow more variations on valid floating point numbers (e.g. ".1", "1e6")(Thomas)
11288 Fixes for unary minus parsing with leading spaces(Thomas)
11289 Implement TIMEZONE_HOUR, TIMEZONE_MINUTE per SQL92 specs(Thomas)
11290 Check for and properly ignore FOREIGN KEY column constraints(Thomas)
11291 Define USER as synonym for CURRENT_USER per SQL92 specs(Thomas)
11292 Enable HAVING clause but no fixes elsewhere yet.
11293 Make "char" type a synonym for "char(1)" (actually implemented as bpchar)(Thomas)
11294 Save string type if specified for DEFAULT clause handling(Thomas)
11295 Coerce operations involving different data types(Thomas)
11296 Allow some index use for columns of different types(Thomas)
11297 Add capabilities for automatic type conversion(Thomas)
11298 Cleanups for large objects, so file is truncated on open(Peter)
11299 Readline cleanups(Tom)
11300 Allow psql \f \ to make spaces as delimiter(Bruce)
11301 Pass pg_attribute.atttypmod to the frontend for column field lengths(Tom,Bruce)
11302 Msql compatibility library in /contrib(Aldrin)
11303 Remove the requirement that ORDER/GROUP BY clause identifiers be
11304 included in the target list(David)
11305 Convert columns to match columns in UNION clauses(Thomas)
11306 Remove fork()/exec() and only do fork()(Bruce)
11307 Jdbc cleanups(Peter)
11308 Show backend status on ps command line(only works on some platforms)(Bruce)
11309 Pg_hba.conf now has a sameuser option in the database field
11310 Make lo_unlink take oid param, not int4
11311 New DISABLE_COMPLEX_MACRO for compilers that can't handle our macros(Bruce)
11312 Libpgtcl now handles NOTIFY as a Tcl event, need not send dummy queries(Tom)
11313 libpgtcl cleanups(Tom)
11314 Add -error option to libpgtcl's pg_result command(Tom)
11315 New locale patch, see docs/README/locale(Oleg)
11316 Fix for pg_dump so CONSTRAINT and CHECK syntax is correct(ccb)
11317 New contrib/lo code for large object orphan removal(Peter)
11318 New psql command "SET CLIENT_ENCODING TO 'encoding'" for multibytes
11319 feature, see /doc/README.mb(Tatsuo)
11320 contrib/noupdate code to revoke update permission on a column
11321 libpq can now be compiled on Windows(Magnus)
11322 Add PQsetdbLogin() in libpq
11323 New 8-byte integer type, checked by configure for OS support(Thomas)
11324 Better support for quoted table/column names(Thomas)
11325 Surround table and column names with double-quotes in pg_dump(Thomas)
11326 PQreset() now works with passwords(Tom)
11327 Handle case of GROUP BY target list column number out of range(David)
11328 Allow UNION in subselects
11329 Add auto-size to screen to \d? commands(Bruce)
11330 Use UNION to show all \d? results in one query(Bruce)
11331 Add \d? field search feature(Bruce)
11332 Pg_dump issues fewer \connect requests(Tom)
11333 Make pg_dump -z flag work better, document it in manual page(Tom)
11334 Add HAVING clause with full support for subselects and unions(Stephan)
11335 Full text indexing routines in contrib/fulltextindex(Maarten)
11336 Transaction ids now stored in shared memory(Vadim)
11337 New PGCLIENTENCODING when issuing COPY command(Tatsuo)
11338 Support for SQL92 syntax "SET NAMES"(Tatsuo)
11339 Support for LATIN2-5(Tatsuo)
11340 Add UNICODE regression test case(Tatsuo)
11341 Lock manager cleanup, new locking modes for LLL(Vadim)
11342 Allow index use with OR clauses(Bruce)
11343 Allows "SELECT NULL ORDER BY 1;"
11344 Explain VERBOSE prints the plan, and now pretty-prints the plan to
11345 the postmaster log file(Bruce)
11346 Add indexes display to \d command(Bruce)
11347 Allow GROUP BY on functions(David)
11348 New pg_class.relkind for large objects(Bruce)
11349 New way to send libpq NOTICE messages to a different location(Tom)
11350 New \w write command to psql(Bruce)
11351 New /contrib/findoidjoins scans oid columns to find join relationships(Bruce)
11352 Allow binary-compatible indexes to be considered when checking for valid
11353 Indexes for restriction clauses containing a constant(Thomas)
11354 New ISBN/ISSN code in /contrib/isbn_issn
11355 Allow NOT LIKE, IN, NOT IN, BETWEEN, and NOT BETWEEN constraint(Thomas)
11356 New rewrite system fixes many problems with rules and views(Jan)
11357 * Rules on relations work
11358 * Event qualifications on insert/update/delete work
11359 * New OLD variable to reference CURRENT, CURRENT will be remove in future
11360 * Update rules can reference NEW and OLD in rule qualifications/actions
11361 * Insert/update/delete rules on views work
11362 * Multiple rule actions are now supported, surrounded by parentheses
11363 * Regular users can create views/rules on tables they have RULE permits
11364 * Rules and views inherit the privileges of the creator
11365 * No rules at the column level
11366 * No UPDATE NEW/OLD rules
11367 * New pg_tables, pg_indexes, pg_rules and pg_views system views
11368 * Only a single action on SELECT rules
11369 * Total rewrite overhaul, perhaps for 6.5
11370 * handle subselects
11371 * handle aggregates on views
11372 * handle insert into select from view works
11373 System indexes are now multikey(Bruce)
11374 Oidint2, oidint4, and oidname types are removed(Bruce)
11375 Use system cache for more system table lookups(Bruce)
11376 New backend programming language PL/pgSQL in backend/pl(Jan)
11377 New SERIAL data type, auto-creates sequence/index(Thomas)
11378 Enable assert checking without a recompile(Massimo)
11379 User lock enhancements(Massimo)
11380 New setval() command to set sequence value(Massimo)
11381 Auto-remove unix socket file on start-up if no postmaster running(Massimo)
11382 Conditional trace package(Massimo)
11383 New UNLISTEN command(Massimo)
11384 psql and libpq now compile under Windows using win32.mak(Magnus)
11385 Lo_read no longer stores trailing NULL(Bruce)
11386 Identifiers are now truncated to 31 characters internally(Bruce)
11387 Createuser options now availble on the command line
11388 Code for 64-bit integer supported added, configure tested, int8 type(Thomas)
11389 Prevent file descriptor leaf from failed COPY(Bruce)
11390 New pg_upgrade command(Bruce)
11391 Updated /contrib directories(Massimo)
11392 New CREATE TABLE DEFAULT VALUES statement available(Thomas)
11393 New INSERT INTO TABLE DEFAULT VALUES statement available(Thomas)
11394 New DECLARE and FETCH feature(Thomas)
11395 libpq's internal structures now not exported(Tom)
11396 Allow up to 8 key indexes(Bruce)
11397 Remove ARCHIVE key word, that is no longer used(Thomas)
11398 pg_dump -n flag to supress quotes around indentifiers
11399 disable system columns for views(Jan)
11400 new INET and CIDR types for network addresses(TomH, Paul)
11401 no more double quotes in psql output
11402 pg_dump now dumps views(Terry)
11403 new SET QUERY_LIMIT(Tatsuo,Jan)
11405 Source Tree Changes
11406 -------------------
11407 /contrib cleanup(Jun)
11408 Inline some small functions called for every row(Bruce)
11410 HP-UX cleanups(Tom)
11411 Multibyte regression tests(Soonmyung.)
11412 Remove --disabled options from configure
11413 Define PGDOC to use POSTGRESDIR by default
11414 Make regression optional
11415 Remove extra braces code to pgindent(Bruce)
11416 Add bsdi shared library support(Bruce)
11417 New --without-CXX support configure option(Brook)
11419 Update backend flowchart in tools/backend(Bruce)
11420 Change atttypmod from int16 to int32(Bruce, Tom)
11421 Getrusage() fix for platforms that do not have it(Tom)
11422 Add PQconnectdb, PGUSER, PGPASSWORD to libpq man page
11423 NS32K platform fixes(Phil Nelson, John Buller)
11424 SCO 7/UnixWare 2.x fixes(Billy,others)
11425 Sparc/Solaris 2.5 fixes(Ryan)
11426 Pgbuiltin.3 is obsolete, move to doc files(Thomas)
11427 Even more documention(Thomas)
11428 Nextstep support(Jacek)
11430 pginterface manual page(Bruce)
11431 shared libraries all have version numbers
11432 merged all OS-specific shared library defines into one file
11433 smarter TCL/TK configuration checking(Billy)
11434 smarter perl configuration(Brook)
11435 configure uses supplied install-sh if no install script found(Tom)
11436 new Makefile.shlib for shared library configuration(Tom)
11442 <sect1 id="release-6-3-2">
11443 <title>Release 6.3.2</title>
11446 <title>Release date</title>
11447 <simpara>1998-04-07</simpara>
11451 This is a bug-fix release for 6.3.x.
11452 Refer to the release notes for version 6.3 for a more complete summary of new features.
11460 Repairs automatic configuration support for some platforms, including Linux,
11461 from breakage inadvertently introduced in version 6.3.1.
11467 Correctly handles function calls on the left side of BETWEEN and LIKE clauses.
11474 A dump/restore is NOT required for those running 6.3 or 6.3.1. A
11475 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
11476 This last step should be performed while the postmaster is not running.
11477 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
11480 For upgrades from pre-6.3 installations,
11481 refer to the installation and migration instructions for version 6.3.
11485 <title>Changes</title>
11489 Configure detection improvements for tcl/tk(Brook Milligan, Alvin)
11490 Manual page improvements(Bruce)
11491 BETWEEN and LIKE fix(Thomas)
11492 fix for psql \connect used by pg_dump(Oliver Elphick)
11494 pgaccess, version 0.86
11495 qsort removed, now uses libc version, cleanups(Jeroen)
11496 fix for buffer over-runs detected(Maurice Gittens)
11497 fix for buffer overrun in libpgtcl(Randy Kunkee)
11498 fix for UNION with DISTINCT or ORDER BY(Bruce)
11499 gettimeofday configure check(Doug Winterburn)
11500 Fix "indexes not used" bug(Vadim)
11501 docs additions(Thomas)
11502 Fix for backend memory leak(Bruce)
11503 libreadline cleanup(Erwan MAS)
11504 Remove DISTDIR(Bruce)
11505 Makefile dependency cleanup(Jeroen van Vianen)
11506 ASSERT fixes(Bruce)
11512 <sect1 id="release-6-3-1">
11513 <title>Release 6.3.1</title>
11516 <title>Release date</title>
11517 <simpara>1998-03-23</simpara>
11526 Additional support for multibyte character sets.
11532 Repair byte ordering for mixed-endian clients and servers.
11538 Minor updates to allowed SQL syntax.
11544 Improvements to the configuration autodetection for installation.
11551 A dump/restore is NOT required for those running 6.3. A
11552 <literal>make distclean</>, <literal>make</>, and <literal>make install</> is all that is required.
11553 This last step should be performed while the postmaster is not running.
11554 You should re-link any custom applications that use <productname>PostgreSQL</productname> libraries.
11557 For upgrades from pre-6.3 installations,
11558 refer to the installation and migration instructions for version 6.3.
11562 <title>Changes</title>
11566 ecpg cleanup/fixes, now version 1.1(Michael Meskes)
11567 pg_user cleanup(Bruce)
11568 large object fix for pg_dump and tclsh (alvin)
11569 LIKE fix for multiple adjacent underscores
11570 fix for redefining builtin functions(Thomas)
11572 upgrade to pg_access 0.83
11573 updated CLUSTER manual page
11574 multibyte character set support, see doc/README.mb(Tatsuo)
11575 configure --with-pgport fix
11577 big-endian fix for backend communications(Kataoka)
11578 SUBSTR() and substring() fix(Jan)
11579 several jdbc fixes(Peter)
11580 libpgtcl improvements, see libptcl/README(Randy Kunkee)
11581 Fix for "Datasize = 0" error(Vadim)
11582 Prevent \do from wrapping(Bruce)
11583 Remove duplicate Russian character set entries
11585 Allow optional TABLE key word in LOCK and SELECT INTO(Thomas)
11586 CREATE SEQUENCE options to allow a negative integer(Thomas)
11587 Add "PASSWORD" as an allowed column identifier(Thomas)
11588 Add checks for UNION target fields(Bruce)
11589 Fix Alpha port(Dwayne Bailey)
11590 Fix for text arrays containing quotes(Doug Gibson)
11591 Solaris compile fix(Albert Chin-A-Young)
11592 Better identify tcl and tk libs and includes(Bruce)
11598 <sect1 id="release-6-3">
11599 <title>Release 6.3</title>
11602 <title>Release date</title>
11603 <simpara>1998-03-01</simpara>
11607 There are <emphasis>many</emphasis> new features and improvements in this release.
11608 Here is a brief, incomplete summary:
11613 Many new SQL features, including
11614 full <acronym>SQL92</acronym> subselect capability
11615 (everything is here but target-list subselects).
11621 Support for client-side environment variables to specify time zone and date style.
11627 Socket interface for client/server connection. This is the default now
11628 so you may need to start <application>postmaster</application> with the
11629 <option>-i</option> flag.
11635 Better password authorization mechanisms. Default table privileges have changed.
11641 Old-style <firstterm>time travel</firstterm>
11642 has been removed. Performance has been improved.
11650 Bruce Momjian wrote the following notes to introduce the new release.
11655 There are some general 6.3 issues that I want to mention. These are
11656 only the big items that cannot be described in one sentence. A review
11657 of the detailed changes list is still needed.
11660 First, we now have subselects. Now that we have them, I would like to
11661 mention that without subselects, SQL is a very limited language.
11662 Subselects are a major feature, and you should review your code for
11663 places where subselects provide a better solution for your queries. I
11664 think you will find that there are more uses for subselects than you may
11665 think. Vadim has put us on the big SQL map with subselects, and fully
11666 functional ones too. The only thing you can't do with subselects is to
11667 use them in the target list.
11670 Second, 6.3 uses Unix domain sockets rather than TCP/IP by default. To
11671 enable connections from other machines, you have to use the new
11672 postmaster -i option, and of course edit <filename>pg_hba.conf</filename>. Also, for this
11673 reason, the format of <filename>pg_hba.conf</filename> has changed.
11676 Third, <type>char()</type> fields will now allow faster access than <type>varchar()</type> or
11677 <type>text</type>. Specifically, the <type>text</> and <type>varchar()</type> have a penalty for access to
11678 any columns after the first column of this type. <type>char()</type> used to also
11679 have this access penalty, but it no longer does. This may suggest that
11680 you redesign some of your tables, especially if you have short character
11681 columns that you have defined as <type>varchar()</type> or <type>text</type>. This and other
11682 changes make 6.3 even faster than earlier releases.
11685 We now have passwords definable independent of any Unix file. There are
11686 new SQL USER commands.
11687 See the <citetitle>Administrator's Guide</citetitle> for more
11688 information. There is a new table, pg_shadow, which is used to store
11689 user information and user passwords, and it by default only SELECT-able
11690 by the <systemitem>postgres</systemitem> super-user. pg_user is now a view of pg_shadow, and is
11691 SELECT-able by PUBLIC. You should keep using pg_user in your
11692 application without changes.
11695 User-created tables now no longer have SELECT privilege to PUBLIC by
11696 default. This was done because the ANSI standard requires it. You can
11697 of course GRANT any privileges you want after the table is created.
11698 System tables continue to be SELECT-able by PUBLIC.
11701 We also have real deadlock detection code. No more sixty-second
11702 timeouts. And the new locking code implements a <acronym>FIFO</acronym> better, so there
11703 should be less resource starvation during heavy use.
11706 Many complaints have been made about inadequate documentation in previous
11707 releases. Thomas has put much effort into many new manuals for this
11708 release. Check out the doc/ directory.
11711 For performance reasons, time travel is gone, but can be implemented
11712 using triggers (see <filename>pgsql/contrib/spi/README</filename>). Please check out the new
11713 \d command for types, operators, etc. Also, views have their own
11714 privileges now, not based on the underlying tables, so privileges on
11715 them have to be set separately. Check <filename>/pgsql/interfaces</filename> for some new
11716 ways to talk to <productname>PostgreSQL</productname>.
11719 This is the first release that really required an explanation for
11720 existing users. In many ways, this was necessary because the new
11721 release removes many limitations, and the work-arounds people were using
11722 are no longer needed.
11726 <title>Migration to version 6.3</title>
11729 A dump/restore using <application>pg_dump</application>
11730 or <application>pg_dumpall</application>
11731 is required for those wishing to migrate data from any
11732 previous release of <productname>PostgreSQL</productname>.
11737 <title>Changes</title>
11743 Fix binary cursors broken by MOVE implementation(Vadim)
11744 Fix for tcl library crash(Jan)
11745 Fix for array handling, from Gerhard Hintermayer
11746 Fix acl error, and remove duplicate pqtrace(Bruce)
11747 Fix psql \e for empty file(Bruce)
11748 Fix for textcat on varchar() fields(Bruce)
11749 Fix for DBT Sendproc (Zeugswetter Andres)
11750 Fix vacuum analyze syntax problem(Bruce)
11751 Fix for international identifiers(Tatsuo)
11752 Fix aggregates on inherited tables(Bruce)
11753 Fix substr() for out-of-bounds data
11754 Fix for select 1=1 or 2=2, select 1=1 and 2=2, and select sum(2+2)(Bruce)
11755 Fix notty output to show status result. -q option still turns it off(Bruce)
11756 Fix for count(*), aggs with views and multiple tables and sum(3)(Bruce)
11758 Fix for PQtrace start/stop several times(Bruce)
11759 Fix a variety of locking problems like newer lock waiters getting
11760 lock before older waiters, and having readlock people not share
11761 locks if a writer is waiting for a lock, and waiting writers not
11762 getting priority over waiting readers(Bruce)
11763 Fix crashes in psql when executing queries from external files(James)
11764 Fix problem with multiple order by columns, with the first one having
11765 NULL values(Jeroen)
11766 Use correct hash table support functions for float8 and int4(Thomas)
11767 Re-enable JOIN= option in CREATE OPERATOR statement (Thomas)
11768 Change precedence for boolean operators to match expected behavior(Thomas)
11769 Generate elog(ERROR) on over-large integer(Bruce)
11770 Allow multiple-argument functions in constraint clauses(Thomas)
11771 Check boolean input literals for 'true','false','yes','no','1','0'
11772 and throw elog(ERROR) if unrecognized(Thomas)
11773 Major large objects fix
11774 Fix for GROUP BY showing duplicates(Vadim)
11775 Fix for index scans in MergeJion(Vadim)
11779 Subselects with EXISTS, IN, ALL, ANY key words (Vadim, Bruce, Thomas)
11780 New User Manual(Thomas, others)
11781 Speedup by inlining some frequently-called functions
11782 Real deadlock detection, no more timeouts(Bruce)
11783 Add SQL92 "constants" CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP,
11784 CURRENT_USER(Thomas)
11785 Modify constraint syntax to be SQL92-compliant(Thomas)
11786 Implement SQL92 PRIMARY KEY and UNIQUE clauses using indexes(Thomas)
11787 Recognize SQL92 syntax for FOREIGN KEY. Throw elog notice(Thomas)
11788 Allow NOT NULL UNIQUE constraint clause (each allowed separately before)(Thomas)
11789 Allow PostgreSQL-style casting ("::") of non-constants(Thomas)
11790 Add support for SQL3 TRUE and FALSE boolean constants(Thomas)
11791 Support SQL92 syntax for IS TRUE/IS FALSE/IS NOT TRUE/IS NOT FALSE(Thomas)
11792 Allow shorter strings for boolean literals (e.g. "t", "tr", "tru")(Thomas)
11793 Allow SQL92 delimited identifiers(Thomas)
11794 Implement SQL92 binary and hexadecimal string decoding (b'10' and x'1F')(Thomas)
11795 Support SQL92 syntax for type coercion of literal strings
11796 (e.g. "DATETIME 'now'")(Thomas)
11797 Add conversions for int2, int4, and OID types to and from text(Thomas)
11798 Use shared lock when building indexes(Vadim)
11799 Free memory allocated for an user query inside transaction block after
11800 this query is done, was turned off in <= 6.2.1(Vadim)
11801 New SQL statement CREATE PROCEDURAL LANGUAGE(Jan)
11802 New <productname>PostgreSQL</productname> Procedural Language (PL) backend interface(Jan)
11803 Rename pg_dump -H option to -h(Bruce)
11804 Add Java support for passwords, European dates(Peter)
11805 Use indexes for LIKE and ~, !~ operations(Bruce)
11806 Add hash functions for datetime and timespan(Thomas)
11807 Time Travel removed(Vadim, Bruce)
11808 Add paging for \d and \z, and fix \i(Bruce)
11809 Add Unix domain socket support to backend and to frontend library(Goran)
11810 Implement CREATE DATABASE/WITH LOCATION and initlocation utility(Thomas)
11811 Allow more SQL92 and/or <productname>PostgreSQL</productname> reserved words as column identifiers(Thomas)
11812 Augment support for SQL92 SET TIME ZONE...(Thomas)
11813 SET/SHOW/RESET TIME ZONE uses TZ backend environment variable(Thomas)
11814 Implement SET keyword = DEFAULT and SET TIME ZONE DEFAULT(Thomas)
11815 Enable SET TIME ZONE using TZ environment variable(Thomas)
11816 Add PGDATESTYLE environment variable to frontend and backend initialization(Thomas)
11817 Add PGTZ, PGCOSTHEAP, PGCOSTINDEX, PGRPLANS, PGGEQO
11818 frontend library initialization environment variables(Thomas)
11819 Regression tests time zone automatically set with "setenv PGTZ PST8PDT"(Thomas)
11820 Add pg_description table for info on tables, columns, operators, types, and
11822 Increase 16 char limit on system table/index names to 32 characters(Bruce)
11823 Rename system indexes(Bruce)
11824 Add 'GERMAN' option to SET DATESTYLE(Thomas)
11825 Define an "ISO-style" timespan output format with "hh:mm:ss" fields(Thomas)
11826 Allow fractional values for delta times (e.g. '2.5 days')(Thomas)
11827 Validate numeric input more carefully for delta times(Thomas)
11828 Implement day of year as possible input to date_part()(Thomas)
11829 Define timespan_finite() and text_timespan() functions(Thomas)
11830 Remove archive stuff(Bruce)
11831 Allow for a pg_password authentication database that is separate from
11832 the system password file(Todd)
11833 Dump ACLs, GRANT, REVOKE privileges(Matt)
11834 Define text, varchar, and bpchar string length functions(Thomas)
11835 Fix Query handling for inheritance, and cost computations(Bruce)
11836 Implement CREATE TABLE/AS SELECT (alternative to SELECT/INTO)(Thomas)
11837 Allow NOT, IS NULL, IS NOT NULL in constraints(Thomas)
11838 Implement UNIONs for SELECT(Bruce)
11839 Add UNION, GROUP, DISTINCT to INSERT(Bruce)
11840 varchar() stores only necessary bytes on disk(Bruce)
11841 Fix for BLOBs(Peter)
11842 Mega-Patch for JDBC...see README_6.3 for list of changes(Peter)
11843 Remove unused "option" from PQconnectdb()
11844 New LOCK command and lock manual page describing deadlocks(Bruce)
11845 Add new psql \da, \dd, \df, \do, \dS, and \dT commands(Bruce)
11846 Enhance psql \z to show sequences(Bruce)
11847 Show NOT NULL and DEFAULT in psql \d table(Bruce)
11848 New psql .psqlrc file start-up(Andrew)
11849 Modify sample start-up script in contrib/linux to show syslog(Thomas)
11850 New types for IP and MAC addresses in contrib/ip_and_mac(TomH)
11851 Unix system time conversions with date/time types in contrib/unixdate(Thomas)
11852 Update of contrib stuff(Massimo)
11853 Add Unix socket support to DBD::Pg(Goran)
11854 New python interface (PyGreSQL 2.0)(D'Arcy)
11855 New frontend/backend protocol has a version number, network byte order(Phil)
11856 Security features in pg_hba.conf enhanced and documented, many cleanups(Phil)
11857 CHAR() now faster access than VARCHAR() or TEXT
11858 ecpg embedded SQL preprocessor
11859 Reduce system column overhead(Vadmin)
11860 Remove pg_time table(Vadim)
11861 Add pg_type attribute to identify types that need length (bpchar, varchar)
11862 Add report of offending line when COPY command fails
11863 Allow VIEW privileges to be set separately from the underlying tables.
11864 For security, use GRANT/REVOKE on views as appropriate(Jan)
11865 Tables now have no default GRANT SELECT TO PUBLIC. You must
11866 explicitly grant such privileges.
11867 Clean up tutorial examples(Darren)
11869 Source Tree Changes
11870 -------------------
11871 Add new html development tools, and flow chart in /tools/backend
11872 Fix for SCO compiles
11873 Stratus computer port Robert Gillies
11874 Added support for shlib for BSD44_derived & i386_solaris
11875 Make configure more automated(Brook)
11876 Add script to check regression test results
11877 Break parser functions into smaller files, group together(Bruce)
11878 Rename heap_create to heap_create_and_catalog, rename heap_creatr
11879 to heap_create()(Bruce)
11880 Sparc/Linux patch for locking(TomS)
11881 Remove PORTNAME and reorganize port-specific stuff(Marc)
11882 Add optimizer README file(Bruce)
11883 Remove some recursion in optimizer and clean up some code there(Bruce)
11884 Fix for NetBSD locking(Henry)
11885 Fix for libptcl make(Tatsuo)
11887 Change IS TRUE, IS FALSE, ... to expressions using "=" rather than
11888 function calls to istrue() or isfalse() to allow optimization(Thomas)
11889 Various fixes NetBSD/Sparc related(TomH)
11890 Alpha linux locking(Travis,Ryan)
11891 Change elog(WARN) to elog(ERROR)(Bruce)
11892 FAQ for FreeBSD(Marc)
11893 Bring in the PostODBC source tree as part of our standard distribution(Marc)
11894 A minor patch for HP/UX 10 vs 9(Stan)
11895 New pg_attribute.atttypmod for type-specific info like varchar length(Bruce)
11896 UnixWare patches(Billy)
11897 New i386 'lock' for spinlock asm(Billy)
11898 Support for multiplexed backends is removed
11899 Start an OpenBSD port
11901 Start a Cygnus port
11902 Add string functions to regression suite(Thomas)
11903 Expand a few function names formerly truncated to 16 characters(Thomas)
11904 Remove un-needed malloc() calls and replace with palloc()(Bruce)
11910 <sect1 id="release-6-2-1">
11911 <title>Release 6.2.1</title>
11914 <title>Release date</title>
11915 <simpara>1997-10-17</simpara>
11919 6.2.1 is a bug-fix and usability release on 6.2.
11927 Allow strings to span lines, per <acronym>SQL92</acronym>.
11933 Include example trigger function for inserting user names on table updates.
11940 This is a minor bug-fix release on 6.2.
11941 For upgrades from pre-6.2 systems, a full dump/reload is required.
11942 Refer to the 6.2 release notes for instructions.
11946 <title>Migration from version 6.2 to version 6.2.1</title>
11949 This is a minor bug-fix release. A dump/reload is not required from version 6.2,
11950 but is required from any release prior to 6.2.
11953 In upgrading from version 6.2, if you choose to dump/reload you will find that
11954 avg(money) is now calculated correctly. All other bug fixes take effect
11955 upon updating the executables.
11958 Another way to avoid dump/reload is to use the following SQL command
11959 from <command>psql</command> to update the existing system table:
11962 update pg_aggregate set aggfinalfn = 'cash_div_flt8'
11963 where aggname = 'avg' and aggbasetype = 790;
11967 This will need to be done to every existing database, including template1.
11972 <title>Changes</title>
11976 Allow TIME and TYPE column names(Thomas)
11977 Allow larger range of true/false as boolean values(Thomas)
11978 Support output of "now" and "current"(Thomas)
11979 Handle DEFAULT with INSERT of NULL properly(Vadim)
11980 Fix for relation reference counts problem in buffer manager(Vadim)
11981 Allow strings to span lines, like ANSI(Thomas)
11982 Fix for backward cursor with ORDER BY(Vadim)
11983 Fix avg(cash) computation(Thomas)
11984 Fix for specifying a column twice in ORDER/GROUP BY(Vadim)
11985 Documented new libpq function to return affected rows, PQcmdTuples(Bruce)
11986 Trigger function for inserting user names for INSERT/UPDATE(Brook Milligan)
11992 <sect1 id="release-6-2">
11993 <title>Release 6.2</title>
11996 <title>Release date</title>
11997 <simpara>1997-10-02</simpara>
12001 A dump/restore is required for those wishing to migrate data from
12002 previous releases of <productname>PostgreSQL</productname>.
12006 <title>Migration from version 6.1 to version 6.2</title>
12009 This migration requires a complete dump of the 6.1 database and a
12010 restore of the database in 6.2.
12013 Note that the <command>pg_dump</command> and <command>pg_dumpall</command> utility from 6.2 should be used
12014 to dump the 6.1 database.
12019 <title>Migration from version 1.<replaceable>x</> to version 6.2</title>
12022 Those migrating from earlier 1.* releases should first upgrade to 1.09
12023 because the COPY output format was improved from the 1.02 release.
12028 <title>Changes</title>
12034 Fix problems with pg_dump for inheritance, sequences, archive tables(Bruce)
12035 Fix compile errors on overflow due to shifts, unsigned, and bad prototypes
12036 from Solaris(Diab Jerius)
12037 Fix bugs in geometric line arithmetic (bad intersection calculations)(Thomas)
12038 Check for geometric intersections at endpoints to avoid rounding ugliness(Thomas)
12039 Catch non-functional delete attempts(Vadim)
12040 Change time function names to be more consistent(Michael Reifenberg)
12041 Check for zero divides(Michael Reifenberg)
12042 Fix very old bug which made rows changed/inserted by a command
12043 visible to the command itself (so we had multiple update of
12044 updated rows, etc.)(Vadim)
12045 Fix for SELECT null, 'fail' FROM pg_am (Patrick)
12046 SELECT NULL as EMPTY_FIELD now allowed(Patrick)
12047 Remove un-needed signal stuff from contrib/pginterface
12048 Fix OR (where x != 1 or x isnull didn't return rows with x NULL) (Vadim)
12049 Fix time_cmp function (Vadim)
12050 Fix handling of functions with non-attribute first argument in
12051 WHERE clauses (Vadim)
12052 Fix GROUP BY when order of entries is different from order
12053 in target list (Vadim)
12054 Fix pg_dump for aggregates without sfunc1 (Vadim)
12058 Default genetic optimizer GEQO parameter is now 8(Bruce)
12059 Allow use parameters in target list having aggregates in functions(Vadim)
12060 Added JDBC driver as an interface(Adrian & Peter)
12061 pg_password utility
12062 Return number of rows inserted/affected by INSERT/UPDATE/DELETE etc.(Vadim)
12063 Triggers implemented with CREATE TRIGGER (SQL3)(Vadim)
12064 SPI (Server Programming Interface) allows execution of queries inside
12065 C-functions (Vadim)
12066 NOT NULL implemented (SQL92)(Robson Paniago de Miranda)
12067 Include reserved words for string handling, outer joins, and unions(Thomas)
12068 Implement extended comments ("/* ... */") using exclusive states(Thomas)
12069 Add "//" single-line comments(Bruce)
12070 Remove some restrictions on characters in operator names(Thomas)
12071 DEFAULT and CONSTRAINT for tables implemented (SQL92)(Vadim & Thomas)
12072 Add text concatenation operator and function (SQL92)(Thomas)
12073 Support WITH TIME ZONE syntax (SQL92)(Thomas)
12074 Support INTERVAL unit TO unit syntax (SQL92)(Thomas)
12075 Define types DOUBLE PRECISION, INTERVAL, CHARACTER,
12076 and CHARACTER VARYING (SQL92)(Thomas)
12077 Define type FLOAT(p) and rudimentary DECIMAL(p,s), NUMERIC(p,s) (SQL92)(Thomas)
12078 Define EXTRACT(), POSITION(), SUBSTRING(), and TRIM() (SQL92)(Thomas)
12079 Define CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP (SQL92)(Thomas)
12080 Add syntax and warnings for UNION, HAVING, INNER and OUTER JOIN (SQL92)(Thomas)
12081 Add more reserved words, mostly for SQL92 compliance(Thomas)
12082 Allow hh:mm:ss time entry for timespan/reltime types(Thomas)
12083 Add center() routines for lseg, path, polygon(Thomas)
12084 Add distance() routines for circle-polygon, polygon-polygon(Thomas)
12085 Check explicitly for points and polygons contained within polygons
12086 using an axis-crossing algorithm(Thomas)
12087 Add routine to convert circle-box(Thomas)
12088 Merge conflicting operators for different geometric data types(Thomas)
12089 Replace distance operator "<===>" with "<->"(Thomas)
12090 Replace "above" operator "!^" with ">^" and "below" operator "!|" with "<^"(Thomas)
12091 Add routines for text trimming on both ends, substring, and string position(Thomas)
12092 Added conversion routines circle(box) and poly(circle)(Thomas)
12093 Allow internal sorts to be stored in memory rather than in files(Bruce & Vadim)
12094 Allow functions and operators on internally-identical types to succeed(Bruce)
12095 Speed up backend start-up after profiling analysis(Bruce)
12096 Inline frequently called functions for performance(Bruce)
12097 Reduce open() calls(Bruce)
12098 psql: Add PAGER for \h and \?,\C fix
12099 Fix for psql pager when no tty(Bruce)
12100 New entab utility(Bruce)
12101 General trigger functions for referential integrity (Vadim)
12102 General trigger functions for time travel (Vadim)
12103 General trigger functions for AUTOINCREMENT/IDENTITY feature (Vadim)
12104 MOVE implementation (Vadim)
12106 Source Tree Changes
12107 -------------------
12108 HP-UX 10 patches (Vladimir Turin)
12109 Added SCO support, (Daniel Harris)
12110 MkLinux patches (Tatsuo Ishii)
12111 Change geometric box terminology from "length" to "width"(Thomas)
12112 Deprecate temporary unstored slope fields in geometric code(Thomas)
12113 Remove restart instructions from INSTALL(Bruce)
12114 Look in /usr/ucb first for install(Bruce)
12115 Fix c++ copy example code(Thomas)
12116 Add -o to psql manual page(Bruce)
12117 Prevent relname unallocated string length from being copied into database(Bruce)
12118 Cleanup for NAMEDATALEN use(Bruce)
12119 Fix pg_proc names over 15 chars in output(Bruce)
12120 Add strNcpy() function(Bruce)
12121 remove some (void) casts that are unnecessary(Bruce)
12122 new interfaces directory(Marc)
12123 Replace fopen() calls with calls to fd.c functions(Bruce)
12124 Make functions static where possible(Bruce)
12125 enclose unused functions in #ifdef NOT_USED(Bruce)
12126 Remove call to difftime() in timestamp support to fix SunOS(Bruce & Thomas)
12127 Changes for Digital Unix
12128 Portability fix for pg_dumpall(Bruce)
12129 Rename pg_attribute.attnvals to attdispersion(Bruce)
12130 "intro/unix" manual page now "pgintro"(Bruce)
12131 "built-in" manual page now "pgbuiltin"(Bruce)
12132 "drop" manual page now "drop_table"(Bruce)
12133 Add "create_trigger", "drop_trigger" manual pages(Thomas)
12134 Add constraints regression test(Vadim & Thomas)
12135 Add comments syntax regression test(Thomas)
12136 Add PGINDENT and support program(Bruce)
12137 Massive commit to run PGINDENT on all *.c and *.h files(Bruce)
12138 Files moved to /src/tools directory(Bruce)
12139 SPI and Trigger programming guides (Vadim & D'Arcy)
12145 <sect1 id="release-6-1-1">
12146 <title>Release 6.1.1</title>
12149 <title>Release date</title>
12150 <simpara>1997-07-22</simpara>
12154 <title>Migration from version 6.1 to version 6.1.1</title>
12157 This is a minor bug-fix release. A dump/reload is not required from version 6.1,
12158 but is required from any release prior to 6.1.
12159 Refer to the release notes for 6.1 for more details.
12164 <title>Changes</title>
12168 fix for SET with options (Thomas)
12169 allow pg_dump/pg_dumpall to preserve ownership of all tables/objects(Bruce)
12170 new psql \connect option allows changing usernames without changing databases
12171 fix for initdb --debug option(Yoshihiko Ichikawa))
12172 lextest cleanup(Bruce)
12174 fix date/time month boundary arithmetic(Thomas)
12175 fix timezone daylight handling for some ports(Thomas, Bruce, Tatsuo)
12176 timestamp overhauled to use standard functions(Thomas)
12177 other code cleanup in date/time routines(Thomas)
12178 psql's \d now case-insensitive(Bruce)
12179 psql's backslash commands can now have trailing semicolon(Bruce)
12180 fix memory leak in psql when using \g(Bruce)
12181 major fix for endian handling of communication to server(Thomas, Tatsuo)
12182 Fix for Solaris assembler and include files(Yoshihiko Ichikawa)
12183 allow underscores in usernames(Bruce)
12184 pg_dumpall now returns proper status, portability fix(Bruce)
12190 <sect1 id="release-6-1">
12191 <title>Release 6.1</title>
12194 <title>Release date</title>
12195 <simpara>1997-06-08</simpara>
12199 The regression tests have been adapted and extensively modified for the
12200 6.1 release of <productname>PostgreSQL</productname>.
12204 Three new data types (<type>datetime</type>, <type>timespan</type>, and <type>circle</type>) have been added to
12205 the native set of <productname>PostgreSQL</productname> types. Points, boxes, paths, and polygons
12206 have had their output formats made consistent across the data types.
12207 The polygon output in misc.out has only been spot-checked for correctness
12208 relative to the original regression output.
12212 <productname>PostgreSQL</productname> 6.1 introduces a new, alternate
12213 optimizer which uses <firstterm>genetic</firstterm>
12214 algorithms. These algorithms introduce a random behavior in the ordering
12215 of query results when the query contains multiple qualifiers or multiple
12216 tables (giving the optimizer a choice on order of evaluation). Several
12217 regression tests have been modified to explicitly order the results, and
12218 hence are insensitive to optimizer choices. A few regression tests are
12219 for data types which are inherently unordered (e.g. points and time
12220 intervals) and tests involving those types are explicitly bracketed with
12221 <command>set geqo to 'off'</command> and <command>reset geqo</command>.
12225 The interpretation of array specifiers (the curly braces around atomic
12226 values) appears to have changed sometime after the original regression
12227 tests were generated. The current <filename>./expected/*.out</filename> files reflect this
12228 new interpretation, which may not be correct!
12232 The float8 regression test fails on at least some platforms. This is due
12233 to differences in implementations of <function>pow()</function> and <function>exp()</function> and the signaling
12234 mechanisms used for overflow and underflow conditions.
12238 The <quote>random</> results in the random test should cause the
12239 <quote>random</quote> test to be <quote>failed</quote>, since the
12240 regression tests are evaluated using a simple diff. However,
12241 <quote>random</> does not seem to produce random results on my test
12242 machine (Linux/<application>gcc</>/i686).
12246 <title>Migration to version 6.1</title>
12249 This migration requires a complete dump of the 6.0 database and a
12250 restore of the database in 6.1.
12253 Those migrating from earlier 1.* releases should first upgrade to 1.09
12254 because the COPY output format was improved from the 1.02 release.
12259 <title>Changes</title>
12265 packet length checking in library routines
12266 lock manager priority patch
12267 check for under/over flow of float8(Bruce)
12268 multitable join fix(Vadim)
12269 SIGPIPE crash fix(Darren)
12270 large object fixes(Sven)
12271 allow btree indexes to handle NULLs(Vadim)
12272 timezone fixes(D'Arcy)
12273 select SUM(x) can return NULL on no rows(Thomas)
12274 internal optimizer, executor bug fixes(Vadim)
12275 fix problem where inner loop in < or <= has no rows(Vadim)
12276 prevent re-commuting join index clauses(Vadim)
12277 fix join clauses for multiple tables(Vadim)
12278 fix hash, hashjoin for arrays(Vadim)
12279 fix btree for abstime type(Vadim)
12280 large object fixes(Raymond)
12281 fix buffer leak in hash indexes (Vadim)
12282 fix rtree for use in inner scan (Vadim)
12283 fix gist for use in inner scan, cleanups (Vadim, Andrea)
12284 avoid unnecessary local buffers allocation (Vadim, Massimo)
12285 fix local buffers leak in transaction aborts (Vadim)
12286 fix file manager memmory leaks, cleanups (Vadim, Massimo)
12287 fix storage manager memmory leaks (Vadim)
12288 fix btree duplicates handling (Vadim)
12289 fix deleted rows reincarnation caused by vacuum (Vadim)
12290 fix SELECT varchar()/char() INTO TABLE made zero-length fields(Bruce)
12291 many psql, pg_dump, and libpq memory leaks fixed using Purify (Igor)
12295 attribute optimization statistics(Bruce)
12296 much faster new btree bulk load code(Paul)
12297 BTREE UNIQUE added to bulk load code(Vadim)
12298 new lock debug code(Massimo)
12299 massive changes to libpg++(Leo)
12300 new GEQO optimizer speeds table multitable optimization(Martin)
12301 new WARN message for non-unique insert into unique key(Marc)
12302 update x=-3, no spaces, now valid(Bruce)
12303 remove case-sensitive identifier handling(Bruce,Thomas,Dan)
12304 debug backend now pretty-prints tree(Darren)
12305 new Oracle character functions(Edmund)
12306 new plaintext password functions(Dan)
12307 no such class or insufficient privilege changed to distinct messages(Dan)
12308 new ANSI timestamp function(Dan)
12309 new ANSI Time and Date types (Thomas)
12310 move large chunks of data in backend(Martin)
12311 multicolumn btree indexes(Vadim)
12312 new SET var TO value command(Martin)
12313 update transaction status on reads(Dan)
12314 new locale settings for character types(Oleg)
12315 new SEQUENCE serial number generator(Vadim)
12316 GROUP BY function now possible(Vadim)
12317 re-organize regression test(Thomas,Marc)
12318 new optimizer operation weights(Vadim)
12319 new psql \z grant/permit option(Marc)
12320 new MONEY data type(D'Arcy,Thomas)
12321 tcp socket communication speed improved(Vadim)
12322 new VACUUM option for attribute statistics, and for certain columns (Vadim)
12323 many geometric type improvements(Thomas,Keith)
12324 additional regression tests(Thomas)
12325 new datestyle variable(Thomas,Vadim,Martin)
12326 more comparison operators for sorting types(Thomas)
12327 new conversion functions(Thomas)
12328 new more compact btree format(Vadim)
12329 allow pg_dumpall to preserve database ownership(Bruce)
12330 new SET GEQO=# and R_PLANS variable(Vadim)
12331 old (!GEQO) optimizer can use right-sided plans (Vadim)
12332 typechecking improvement in SQL parser(Bruce)
12333 new SET, SHOW, RESET commands(Thomas,Vadim)
12334 new \connect database USER option
12335 new destroydb -i option (Igor)
12336 new \dt and \di psql commands (Darren)
12337 SELECT "\n" now escapes newline (A. Duursma)
12338 new geometry conversion functions from old format (Thomas)
12340 Source tree changes
12341 -------------------
12342 new configuration script(Marc)
12343 readline configuration option added(Marc)
12344 OS-specific configuration options removed(Marc)
12345 new OS-specific template files(Marc)
12346 no more need to edit Makefile.global(Marc)
12347 re-arrange include files(Marc)
12348 nextstep patches (Gregor Hoffleit)
12349 removed Windows-specific code(Bruce)
12350 removed postmaster -e option, now only postgres -e option (Bruce)
12351 merge duplicate library code in front/backends(Martin)
12352 now works with eBones, international Kerberos(Jun)
12353 more shared library support
12354 c++ include file cleanup(Bruce)
12355 warn about buggy flex(Bruce)
12356 DG/UX, Ultrix, IRIX, AIX portability fixes
12362 <sect1 id="release-6-0">
12363 <title>Release 6.0</title>
12366 <title>Release date</title>
12367 <simpara>1997-01-29</simpara>
12371 A dump/restore is required for those wishing to migrate data from
12372 previous releases of <productname>PostgreSQL</productname>.
12376 <title>Migration from version 1.09 to version 6.0</title>
12379 This migration requires a complete dump of the 1.09 database and a
12380 restore of the database in 6.0.
12385 <title>Migration from pre-1.09 to version 6.0</title>
12388 Those migrating from earlier 1.* releases should first upgrade to 1.09
12389 because the COPY output format was improved from the 1.02 release.
12394 <title>Changes</title>
12400 ALTER TABLE bug - running postgress process needs to re-read table definition
12401 Allow vacuum to be run on one table or entire database(Bruce)
12403 Fix array over-runs of memory writes(Kurt)
12404 Fix elusive btree range/non-range bug(Dan)
12405 Fix for hash indexes on some types like time and date
12406 Fix for pg_log size explosion
12407 Fix permissions on lo_export()(Bruce)
12408 Fix unitialized reads of memory(Kurt)
12409 Fixed ALTER TABLE ... char(3) bug(Bruce)
12410 Fixed a few small memory leaks
12411 Fixed EXPLAIN handling of options and changed full_path option name
12412 Fixed output of group acl privileges
12413 Memory leaks (hunt and destroy with tools like Purify(Kurt)
12414 Minor improvements to rules system
12416 New asserts for run-checking
12417 Overhauled parser/analyze code to properly report errors and increase speed
12418 Pg_dump -d now handles NULL's properly(Bruce)
12419 Prevent SELECT NULL from crashing server (Bruce)
12420 Properly report errors when INSERT ... SELECT columns did not match
12421 Properly report errors when insert column names were not correct
12422 psql \g filename now works(Bruce)
12423 psql fixed problem with multiple statements on one line with multiple outputs
12424 Removed duplicate system OIDs
12425 SELECT * INTO TABLE . GROUP/ORDER BY gives unlink error if table exists(Bruce)
12426 Several fixes for queries that crashed the backend
12427 Starting quote in insert string errors(Bruce)
12428 Submitting an empty query now returns empty status, not just " " query(Bruce)
12432 Add EXPLAIN manual page(Bruce)
12433 Add UNIQUE index capability(Dan)
12434 Add hostname/user level access control rather than just hostname and user
12435 Add synonym of != for <>(Bruce)
12436 Allow "select oid,* from table"
12437 Allow BY,ORDER BY to specify columns by number, or by non-alias table.column(Bruce)
12438 Allow COPY from the frontend(Bryan)
12439 Allow GROUP BY to use alias column name(Bruce)
12440 Allow actual compression, not just reuse on the same page(Vadim)
12441 Allow installation-configuration option to auto-add all local users(Bryan)
12442 Allow libpq to distinguish between text value '' and null(Bruce)
12443 Allow non-postgres users with createdb privs to destroydb's
12444 Allow restriction on who can create C functions(Bryan)
12445 Allow restriction on who can do backend COPY(Bryan)
12446 Can shrink tables, pg_time and pg_log(Vadim & Erich)
12447 Change debug level 2 to print queries only, changed debug heading layout(Bruce)
12448 Change default decimal constant representation from float4 to float8(Bruce)
12449 European date format now set when postmaster is started
12450 Execute lowercase function names if not found with exact case
12451 Fixes for aggregate/GROUP processing, allow 'select sum(func(x),sum(x+y) from z'
12452 Gist now included in the distrubution(Marc)
12453 Idend authentication of local users(Bryan)
12454 Implement BETWEEN qualifier(Bruce)
12455 Implement IN qualifier(Bruce)
12456 libpq has PQgetisnull()(Bruce)
12457 libpq++ improvements
12458 New options to initdb(Bryan)
12459 Pg_dump allow dump of OIDs(Bruce)
12460 Pg_dump create indexes after tables are loaded for speed(Bruce)
12461 Pg_dumpall dumps all databases, and the user table
12462 Pginterface additions for NULL values(Bruce)
12463 Prevent postmaster from being run as root
12464 psql \h and \? is now readable(Bruce)
12465 psql allow backslashed, semicolons anywhere on the line(Bruce)
12466 psql changed command prompt for lines in query or in quotes(Bruce)
12467 psql char(3) now displays as (bp)char in \d output(Bruce)
12468 psql return code now more accurate(Bryan?)
12469 psql updated help syntax(Bruce)
12470 Re-visit and fix vacuum(Vadim)
12471 Reduce size of regression diffs, remove timezone name difference(Bruce)
12472 Remove compile-time parameters to enable binary distributions(Bryan)
12473 Reverse meaning of HBA masks(Bryan)
12474 Secure Authentication of local users(Bryan)
12475 Speed up vacuum(Vadim)
12476 Vacuum now had VERBOSE option(Bruce)
12478 Source tree changes
12479 -------------------
12480 All functions now have prototypes that are compared against the calls
12481 Allow asserts to be disabled easly from Makefile.global(Bruce)
12482 Change oid constants used in code to #define names
12483 Decoupled sparc and solaris defines(Kurt)
12484 Gcc -Wall compiles cleanly with warnings only from unfixable constructs
12485 Major include file reorganization/reduction(Marc)
12486 Make now stops on compile failure(Bryan)
12487 Makefile restructuring(Bryan, Marc)
12488 Merge bsdi_2_1 to bsdi(Bruce)
12489 Monitor program removed
12490 Name change from Postgres95 to PostgreSQL
12491 New config.h file(Marc, Bryan)
12492 PG_VERSION now set to 6.0 and used by postmaster
12493 Portability additions, including Ultrix, DG/UX, AIX, and Solaris
12494 Reduced the number of #define's, centeralized #define's
12495 Remove duplicate OIDS in system tables(Dan)
12496 Remove duplicate system catalog info or report mismatches(Dan)
12497 Removed many os-specific #define's
12498 Restructured object file generation/location(Bryan, Marc)
12499 Restructured port-specific file locations(Bryan, Marc)
12500 Unused/uninialized variables corrected
12506 <sect1 id="release-1-09">
12507 <title>Release 1.09</title>
12510 <title>Release date</title>
12511 <simpara>1996-11-04</simpara>
12515 Sorry, we didn't keep track of changes from 1.02 to 1.09. Some of
12516 the changes listed in 6.0 were actually included in the 1.02.1 to 1.09
12521 <sect1 id="release-1-02">
12522 <title>Release 1.02</title>
12525 <title>Release date</title>
12526 <simpara>1996-08-01</simpara>
12530 <title>Migration from version 1.02 to version 1.02.1</title>
12533 Here is a new migration file for 1.02.1. It includes the 'copy' change
12534 and a script to convert old <acronym>ASCII</acronym> files.
12538 The following notes are for the benefit of users who want to migrate
12539 databases from <productname>Postgres95</> 1.01 and 1.02 to <productname>Postgres95</> 1.02.1.
12542 If you are starting afresh with <productname>Postgres95</> 1.02.1 and do not need
12543 to migrate old databases, you do not need to read any further.
12548 In order to upgrade older <productname>Postgres95</> version 1.01 or 1.02 databases to
12549 version 1.02.1, the following steps are required:
12554 Start up a new 1.02.1 postmaster
12559 Add the new built-in functions and operators of 1.02.1 to 1.01 or 1.02
12560 databases. This is done by running the new 1.02.1 server against
12561 your own 1.01 or 1.02 database and applying the queries attached at
12562 the end of the file. This can be done easily through <command>psql</>. If your
12563 1.01 or 1.02 database is named <literal>testdb</literal> and you have cut the commands
12564 from the end of this file and saved them in <filename>addfunc.sql</filename>:
12566 % psql testdb -f addfunc.sql
12569 Those upgrading 1.02 databases will get a warning when executing the
12570 last two statements in the file because they are already present in 1.02. This is
12571 not a cause for concern.
12578 <title>Dump/Reload Procedure</title>
12581 If you are trying to reload a pg_dump or text-mode, <literal>copy tablename to
12582 stdout</literal> generated with a previous version, you will need to run the
12583 attached <command>sed</command> script on the ASCII file before loading it into the
12584 database. The old format used '.' as end-of-data, while '\.' is now the
12585 end-of-data marker. Also, empty strings are now loaded in as '' rather
12586 than NULL. See the copy manual page for full details.
12589 sed 's/^\.$/\\./g' <in_file >out_file
12593 If you are loading an older binary copy or non-<systemitem>stdout</> copy, there is no
12594 end-of-data character, and hence no conversion necessary.
12597 -- following lines added by agc to reflect the case-insensitive
12598 -- regexp searching for varchar (in 1.02), and bpchar (in 1.02.1)
12599 create operator ~* (leftarg = bpchar, rightarg = text, procedure = texticregexeq);
12600 create operator !~* (leftarg = bpchar, rightarg = text, procedure = texticregexne);
12601 create operator ~* (leftarg = varchar, rightarg = text, procedure = texticregexeq);
12602 create operator !~* (leftarg = varchar, rightarg = text, procedure = texticregexne);
12608 <title>Changes</title>
12612 Source code maintenance and development
12613 * worldwide team of volunteers
12614 * the source tree now in CVS at ftp.ki.net
12617 * psql (and underlying libpq library) now has many more options for
12618 formatting output, including HTML
12619 * pg_dump now output the schema and/or the data, with many fixes to
12620 enhance completeness.
12621 * psql used in place of monitor in administration shell scripts.
12622 monitor to be deprecated in next release.
12623 * date/time functions enhanced
12624 * NULL insert/update/comparison fixed/enhanced
12625 * TCL/TK lib and shell fixed to work with both tck7.4/tk4.0 and tcl7.5/tk4.1
12627 Bug Fixes (almost too numerous to mention)
12629 * storage management
12630 * check for NULL pointer before dereferencing
12634 * added SolarisX86 port
12635 * added BSD/OS 2.1 port
12640 Contributors (appologies to any missed)
12641 * Kurt J. Lidl <lidl@va.pubnix.com>
12642 (missed in first run, but no less important)
12643 * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
12644 * Jason Wright <jason@shiloh.vnet.net>
12645 * Cees de Groot <C.deGroot@inter.NL.net>
12646 * ernst.molitor@uni-bonn.de
12647 * michael.siebenborn@ae3.Hypo.DE (Michael Siebenborn (6929))
12648 * Brian E. Gallew <geek+@cmu.edu>
12649 * Vadim B. Mikheev <vadim@sable.krasnoyarsk.su>
12650 * Adam Sussman <myddryn@vidya.com>
12651 * Chris Dunlop <chris@onthe.net.au>
12652 * Marc G. Fournier <scrappy@ki.net>
12653 * Dan McGuirk <mcguirk@indirect.com>
12654 * Dr_George_D_Detlefsen <drgeorge@ilt.com>
12655 * Erich Stamberger <eberger@gewi.kfunigraz.ac.at>
12656 * Massimo Dal Zotto <dz@cs.unitn.it>
12657 * Randy Kunkee <kunkee@Starbase.NeoSoft.COM>
12658 * Rick Weldon <rick@wisetech.com>
12659 * Thomas van Reimersdahl <reimersd@dali.techinfo.rwth-aachen.de>
12660 * david bennett <dave@bensoft.com>
12661 * ernst.molitor@uni-bonn.de
12662 * Julian Assange <proff@suburbia.net>
12663 * Bruce Momjian <pgman@candle.pha.pa.us>
12664 * Paul "Shag" Walmsley <ccshag@cclabs.missouri.edu>
12665 * "Alistair G. Crooks" <azcb0@sde.uts.amdahl.com>
12670 <sect1 id="release-1-01">
12671 <title>Release 1.01</title>
12674 <title>Release date</title>
12675 <simpara>1996-02-23</simpara>
12680 <title>Migration from version 1.0 to version 1.01</title>
12683 The following notes are for the benefit of users who want to migrate
12684 databases from <productname>Postgres95</> 1.0 to <productname>Postgres95</> 1.01.
12687 If you are starting afresh with <productname>Postgres95</> 1.01 and do not need
12688 to migrate old databases, you do not need to read any further.
12691 In order to <productname>Postgres95</> version 1.01 with databases created with
12692 <productname>Postgres95</> version 1.0, the following steps are required:
12697 Set the definition of <symbol>NAMEDATALEN</symbol> in <filename>src/Makefile.global</filename> to 16
12698 and <symbol>OIDNAMELEN</symbol> to 20.
12703 Decide whether you want to use Host based authentication.
12708 If you do, you must create a file name <literal>pg_hba</literal> in your top-level data
12709 directory (typically the value of your <envar>$PGDATA</envar>). <filename>src/libpq/pg_hba</filename>
12710 shows an example syntax.
12715 If you do not want host-based authentication, you can comment out
12720 in <filename>src/Makefile.global</filename>
12723 Note that host-based authentication is turned on by default, and if
12724 you do not take steps A or B above, the out-of-the-box 1.01 will
12725 not allow you to connect to 1.0 databases.
12733 Compile and install 1.01, but DO NOT do the <command>initdb</command> step.
12738 Before doing anything else, terminate your 1.0 postmaster, and
12739 backup your existing <envar>$PGDATA</envar> directory.
12744 Set your <envar>PGDATA</envar> environment variable to your 1.0 databases, but set up
12745 path up so that 1.01 binaries are being used.
12750 Modify the file <filename><envar>$PGDATA</envar>/PG_VERSION</filename> from 5.0 to 5.1
12755 Start up a new 1.01 postmaster
12760 Add the new built-in functions and operators of 1.01 to 1.0
12761 databases. This is done by running the new 1.01 server against
12762 your own 1.0 database and applying the queries attached and saving
12763 in the file 1.0_to_1.01.sql. This can be done easily through <command>psql</command>.
12764 If your 1.0 database is name <literal>testdb</literal>:
12767 % psql testdb -f 1.0_to_1.01.sql
12770 and then execute the following commands (cut and paste from here):
12773 -- add builtin functions that are new to 1.01
12775 create function int4eqoid (int4, oid) returns bool as 'foo'
12776 language 'internal';
12777 create function oideqint4 (oid, int4) returns bool as 'foo'
12778 language 'internal';
12779 create function char2icregexeq (char2, text) returns bool as 'foo'
12780 language 'internal';
12781 create function char2icregexne (char2, text) returns bool as 'foo'
12782 language 'internal';
12783 create function char4icregexeq (char4, text) returns bool as 'foo'
12784 language 'internal';
12785 create function char4icregexne (char4, text) returns bool as 'foo'
12786 language 'internal';
12787 create function char8icregexeq (char8, text) returns bool as 'foo'
12788 language 'internal';
12789 create function char8icregexne (char8, text) returns bool as 'foo'
12790 language 'internal';
12791 create function char16icregexeq (char16, text) returns bool as 'foo'
12792 language 'internal';
12793 create function char16icregexne (char16, text) returns bool as 'foo'
12794 language 'internal';
12795 create function texticregexeq (text, text) returns bool as 'foo'
12796 language 'internal';
12797 create function texticregexne (text, text) returns bool as 'foo'
12798 language 'internal';
12800 -- add builtin functions that are new to 1.01
12802 create operator = (leftarg = int4, rightarg = oid, procedure = int4eqoid);
12803 create operator = (leftarg = oid, rightarg = int4, procedure = oideqint4);
12804 create operator ~* (leftarg = char2, rightarg = text, procedure = char2icregexeq);
12805 create operator !~* (leftarg = char2, rightarg = text, procedure = char2icregexne);
12806 create operator ~* (leftarg = char4, rightarg = text, procedure = char4icregexeq);
12807 create operator !~* (leftarg = char4, rightarg = text, procedure = char4icregexne);
12808 create operator ~* (leftarg = char8, rightarg = text, procedure = char8icregexeq);
12809 create operator !~* (leftarg = char8, rightarg = text, procedure = char8icregexne);
12810 create operator ~* (leftarg = char16, rightarg = text, procedure = char16icregexeq);
12811 create operator !~* (leftarg = char16, rightarg = text, procedure = char16icregexne);
12812 create operator ~* (leftarg = text, rightarg = text, procedure = texticregexeq);
12813 create operator !~* (leftarg = text, rightarg = text, procedure = texticregexne);
12821 <title>Changes</title>
12826 * 1.01 is backwards compatible with 1.0 database provided the user
12827 follow the steps outlined in the MIGRATION_from_1.0_to_1.01 file.
12828 If those steps are not taken, 1.01 is not compatible with 1.0 database.
12831 * added PQdisplayTuples() to libpq and changed monitor and psql to use it
12832 * added NeXT port (requires SysVIPC implementation)
12833 * added CAST .. AS ... syntax
12834 * added ASC and DESC key words
12835 * added 'internal' as a possible language for CREATE FUNCTION
12836 internal functions are C functions which have been statically linked
12837 into the postgres backend.
12838 * a new type "name" has been added for system identifiers (table names,
12839 attribute names, etc.) This replaces the old char16 type. The
12840 of name is set by the NAMEDATALEN #define in src/Makefile.global
12841 * a readable reference manual that describes the query language.
12842 * added host-based access control. A configuration file ($PGDATA/pg_hba)
12843 is used to hold the configuration data. If host-based access control
12844 is not desired, comment out HBA=1 in src/Makefile.global.
12845 * changed regex handling to be uniform use of Henry Spencer's regex code
12846 regardless of platform. The regex code is included in the distribution
12847 * added functions and operators for case-insensitive regular expressions.
12848 The operators are ~* and !~*.
12849 * pg_dump uses COPY instead of SELECT loop for better performance
12852 * fixed an optimizer bug that was causing core dumps when
12853 functions calls were used in comparisons in the WHERE clause
12854 * changed all uses of getuid to geteuid so that effective uids are used
12855 * psql now returns non-zero status on errors when using -c
12856 * applied public patches 1-14
12862 <sect1 id="release-1-0">
12863 <title>Release 1.0</title>
12866 <title>Release date</title>
12867 <simpara>1995-09-05</simpara>
12871 <title>Changes</title>
12876 * The copyright of <productname>Postgres</productname> 1.0 has been loosened to be freely modifiable
12877 and modifiable for any purpose. Please read the COPYRIGHT file.
12878 Thanks to Professor Michael Stonebraker for making this possible.
12881 * date formats have to be MM-DD-YYYY (or DD-MM-YYYY if you're using
12882 EUROPEAN STYLE). This follows SQL-92 specs.
12883 * "delimiters" is now a key word
12886 * sql LIKE syntax has been added
12887 * copy command now takes an optional USING DELIMITER specification.
12888 delimiters can be any single-character string.
12889 * IRIX 5.3 port has been added.
12890 Thanks to Paul Walmsley and others.
12891 * updated pg_dump to work with new libpq
12892 * \d has been added psql
12893 Thanks to Keith Parks
12894 * regexp performance for architectures that use POSIX regex has been
12895 improved due to caching of precompiled patterns.
12896 Thanks to Alistair Crooks
12897 * a new version of libpq++
12898 Thanks to William Wanders
12901 * arbitrary userids can be specified in the createuser script
12902 * \c to connect to other databases in psql now works.
12903 * bad pg_proc entry for float4inc() is fixed
12904 * users with usecreatedb field set can now create databases without
12905 having to be usesuper
12906 * remove access control entries when the entry no longer has any
12908 * fixed non-portable datetimes implementation
12909 * added kerberos flags to the src/backend/Makefile
12910 * libpq now works with kerberos
12911 * typographic errors in the user manual have been corrected.
12912 * btrees with multiple index never worked, now we tell you they don't
12913 work when you try to use them
12919 <sect1 id="release-0-03">
12920 <title><productname>Postgres95</productname> Release 0.03</title>
12923 <title>Release date</title>
12924 <simpara>1995-07-21</simpara>
12928 <title>Changes</title>
12931 Incompatible changes:
12932 * BETA-0.3 IS INCOMPATIBLE WITH DATABASES CREATED WITH PREVIOUS VERSIONS
12933 (due to system catalog changes and indexing structure changes).
12934 * double-quote (") is deprecated as a quoting character for string literals;
12935 you need to convert them to single quotes ('). <!-- " -->
12936 * name of aggregates (eg. int4sum) are renamed in accordance with the
12937 SQL standard (eg. sum).
12938 * CHANGE ACL syntax is replaced by GRANT/REVOKE syntax.
12939 * float literals (eg. 3.14) are now of type float4 (instead of float8 in
12940 previous releases); you might have to do typecasting if you depend on it
12941 being of type float8. If you neglect to do the typecasting and you assign
12942 a float literal to a field of type float8, you may get incorrect values
12944 * LIBPQ has been totally revamped so that frontend applications
12945 can connect to multiple backends
12946 * the usesysid field in pg_user has been changed from int2 to int4 to
12947 allow wider range of Unix user ids.
12948 * the netbsd/freebsd/bsd o/s ports have been consolidated into a
12949 single BSD44_derived port. (thanks to Alistair Crooks)
12951 SQL standard-compliance (the following details changes that makes postgres95
12952 more compliant to the SQL-92 standard):
12953 * the following SQL types are now built-in: smallint, int(eger), float, real,
12954 char(N), varchar(N), date and time.
12956 The following are aliases to existing postgres types:
12957 smallint -> int2
12958 integer, int -> int4
12959 float, real -> float4
12960 char(N) and varchar(N) are implemented as truncated text types. In
12961 addition, char(N) does blank-padding.
12962 * single-quote (') is used for quoting string literals; '' (in addition to
12963 \') is supported as means of inserting a single quote in a string
12964 * SQL standard aggregate names (MAX, MIN, AVG, SUM, COUNT) are used
12965 (Also, aggregates can now be overloaded, i.e. you can define your
12966 own MAX aggregate to take in a user-defined type.)
12967 * CHANGE ACL removed. GRANT/REVOKE syntax added.
12968 - Privileges can be given to a group using the "GROUP" key word.
12970 GRANT SELECT ON foobar TO GROUP my_group;
12971 The key word 'PUBLIC' is also supported to mean all users.
12973 Privileges can only be granted or revoked to one user or group
12976 "WITH GRANT OPTION" is not supported. Only class owners can change
12978 - The default access control is to to grant users readonly access.
12979 You must explicitly grant insert/update access to users. To change
12980 this, modify the line in
12981 src/backend/utils/acl.h
12982 that defines ACL_WORLD_DEFAULT
12985 * the bug where aggregates of empty tables were not run has been fixed. Now,
12986 aggregates run on empty tables will return the initial conditions of the
12987 aggregates. Thus, COUNT of an empty table will now properly return 0.
12988 MAX/MIN of an empty table will return a row of value NULL.
12989 * allow the use of \; inside the monitor
12990 * the LISTEN/NOTIFY asynchronous notification mechanism now work
12991 * NOTIFY in rule action bodies now work
12992 * hash indexes work, and access methods in general should perform better.
12993 creation of large btree indexes should be much faster. (thanks to Paul
12996 Other changes and enhancements:
12997 * addition of an EXPLAIN statement used for explaining the query execution
12998 plan (eg. "EXPLAIN SELECT * FROM EMP" prints out the execution plan for
13000 * WARN and NOTICE messages no longer have timestamps on them. To turn on
13001 timestamps of error messages, uncomment the line in
13002 src/backend/utils/elog.h:
13003 /* define ELOG_TIMESTAMPS */
13004 * On an access control violation, the message
13005 "Either no such class or insufficient privilege"
13006 will be given. This is the same message that is returned when
13007 a class is not found. This dissuades non-privileged users from
13008 guessing the existence of privileged classes.
13009 * some additional system catalog changes have been made that are not
13010 visible to the user.
13013 * The -oid option has been added to the "pg_result" tcl command.
13014 pg_result -oid returns oid of the last row inserted. If the
13015 last command was not an INSERT, then pg_result -oid returns "".
13016 * the large object interface is available as pg_lo* tcl commands:
13017 pg_lo_open, pg_lo_close, pg_lo_creat, etc.
13019 Portability enhancements and New Ports:
13020 * flex/lex problems have been cleared up. Now, you should be able to use
13021 flex instead of lex on any platforms. We no longer make assumptions of
13022 what lexer you use based on the platform you use.
13023 * The Linux-ELF port is now supported. Various configuration have been
13024 tested: The following configuration is known to work:
13025 kernel 1.2.10, gcc 2.6.3, libc 4.7.2, flex 2.5.2, bison 1.24
13026 with everything in ELF format,
13029 * ipcclean added to the distribution
13030 ipcclean usually does not need to be run, but if your backend crashes
13031 and leaves shared memory segments hanging around, ipcclean will
13032 clean them up for you.
13035 * the user manual has been revised and libpq documentation added.
13041 <sect1 id="release-0-02">
13042 <title><productname>Postgres95</productname> Release 0.02</title>
13045 <title>Release date</title>
13046 <simpara>1995-05-25</simpara>
13050 <title>Changes</title>
13054 Incompatible changes:
13055 * The SQL statement for creating a database is 'CREATE DATABASE' instead
13056 of 'CREATEDB'. Similarly, dropping a database is 'DROP DATABASE' instead
13057 of 'DESTROYDB'. However, the names of the executables 'createdb' and
13058 'destroydb' remain the same.
13061 * pgperl - a Perl (4.036) interface to Postgres95
13062 * pg_dump - a utility for dumping out a postgres database into a
13063 script file containing query commands. The script files are in a ASCII
13064 format and can be used to reconstruct the database, even on other
13065 machines and other architectures. (Also good for converting
13066 a Postgres 4.2 database to Postgres95 database.)
13068 The following ports have been incorporated into postgres95-beta-0.02:
13069 * the NetBSD port by Alistair Crooks
13070 * the AIX port by Mike Tung
13071 * the Windows NT port by Jon Forrest (more stuff but not done yet)
13072 * the Linux ELF port by Brian Gallew
13074 The following bugs have been fixed in postgres95-beta-0.02:
13075 * new lines not escaped in COPY OUT and problem with COPY OUT when first
13077 * cannot type return to use the default user id in createuser
13078 * SELECT DISTINCT on big tables crashes
13079 * Linux installation problems
13080 * monitor doesn't allow use of 'localhost' as PGHOST
13081 * psql core dumps when doing \c or \l
13082 * the "pgtclsh" target missing from src/bin/pgtclsh/Makefile
13083 * libpgtcl has a hard-wired default port number
13084 * SELECT DISTINCT INTO TABLE hangs
13085 * CREATE TYPE doesn't accept 'variable' as the internallength
13086 * wrong result using more than 1 aggregate in a SELECT
13092 <sect1 id="release-0-01">
13093 <title><productname>Postgres95</productname> Release 0.01</title>
13096 <title>Release date</title>
13097 <simpara>1995-05-01</simpara>
13106 <sect1 id="timing-results">
13107 <title>Timing Results</title>
13110 These timing results are from running the regression test with the commands
13113 % cd src/test/regress
13115 % time make runtest
13119 Timing under Linux 2.0.27 seems to have a roughly 5% variation from run
13120 to run, presumably due to the scheduling vagaries of multitasking systems.
13124 <title>Version 6.5</title>
13127 As has been the case for previous releases, timing between
13128 releases is not directly comparable since new regression tests
13129 have been added. In general, 6.5 is faster than previous
13134 Timing with <function>fsync()</function> disabled:
13138 02:00 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
13139 04:38 Sparc Ultra 1 143MHz, 64MB, Solaris 2.6
13144 Timing with <function>fsync()</function> enabled:
13148 04:21 Dual Pentium Pro 180, 224MB, UW-SCSI, Linux 2.0.36, gcc 2.7.2.3 -O2 -m486
13151 For the <systemitem class="osname">Linux</systemitem> system above, using <acronym>UW-SCSI</acronym> disks rather than (older) <acronym>IDE</acronym>
13152 disks leads to a 50% improvement in speed on the regression test.
13157 <title>Version 6.4beta</title>
13160 The times for this release are not directly comparable to those for previous releases
13161 since some additional regression tests have been included.
13162 In general, however, 6.4 should be slightly faster than the previous release (thanks, Bruce!).
13167 02:26 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
13173 <title>Version 6.3</title>
13176 The times for this release are not directly comparable to those for previous releases
13177 since some additional regression tests have been included and some obsolete tests involving
13178 time travel have been removed.
13179 In general, however, 6.3 is substantially faster than previous releases (thanks, Bruce!).
13184 02:30 Dual Pentium Pro 180, 96MB, UW-SCSI, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
13185 04:12 Dual Pentium Pro 180, 96MB, EIDE, Linux 2.0.30, gcc 2.7.2.1 -O2 -m486
13191 <title>Version 6.1</title>
13196 06:12 Pentium Pro 180, 32MB, EIDE, Linux 2.0.30, gcc 2.7.2 -O2 -m486
13197 12:06 P-100, 48MB, Linux 2.0.29, gcc
13198 39:58 Sparc IPC 32MB, Solaris 2.5, gcc 2.7.2.1 -O -g
13206 <!-- Keep this comment at the end of the file
13211 sgml-minimize-attributes:nil
13212 sgml-always-quote-attributes:t
13215 sgml-parent-document:nil
13216 sgml-default-dtd-file:"./reference.ced"
13217 sgml-exposed-tags:nil
13218 sgml-local-catalogs:("/usr/lib/sgml/catalog")
13219 sgml-local-ecat-files:nil