2
2
Chapter 0. Release Notes
3
3
4
4
Table of Contents
5
+ Release 7.0
5
6
Release 6.5.3
6
7
Release 6.5.2
7
8
Release 6.5.1
@@ -26,6 +27,292 @@ Chapter 0. Release Notes
26
27
Postgres95 Beta 0.01
27
28
Timing Results
28
29
30
+ Release 7.0
31
+ -----------
32
+
33
+ This release shows the continued growth of PostgreSQL. There are more
34
+ updated items in 7.0 than in any previous release. Don't be concerned
35
+ this is a dot-zero release. PostgreSQL does its best to put
36
+ out only solid releases, and this one is no exception.
37
+
38
+ Major changes in this release:
39
+
40
+ Foreign Keys: Foreign keys are now implemented, with the exception of
41
+ PARTIAL MATCH foreign keys. Many users have been asking for this
42
+ feature, and we are pleased to finally offer it.
43
+
44
+ Optimizer Overhaul: Continuing on work started a year ago, the
45
+ optimizer has been overhauled in many significant ways, allowing better
46
+ query execution processing with faster performance and less memory
47
+ usage.
48
+
49
+ Updated psql: psql, our interactive terminal monitor, has been updated,
50
+ with a variety of new features. See the psql manual page for the details.
51
+
52
+ Upcoming Features: In 7.1, we plan to have outer joins, storage for very long
53
+ rows, and a write-ahead logging system.
54
+
55
+ Bug Fixes
56
+ ---------
57
+ Prevent function calls with more than maximum number of arguments (Tom)
58
+ Many fixes for CASE (Tom)
59
+ Many array fixes (Tom)
60
+ Fix SELECT coalesce(f1,0) FROM int4_tbl GROUP BY f1 (Tom)
61
+ Fix SELECT sentence.words[0] FROM sentence GROUP BY sentence.words[0] (Tom)
62
+ Allow utility statements in plpgsql (Tom)
63
+ Fix GROUP BY scan bug (Tom)
64
+ Optimize btree searching for cases where many equal keys exist (Tom)
65
+ Allow bare column names to be subscripted as arrays (Tom)
66
+ Improvements in SQL grammar processing(Tom)
67
+ Fix for views involved in INSERT ... SELECT ... (Tom)
68
+ Fix for SELECT a/2, a/2 FROM test_missing_target GROUP BY a/2 (Tom)
69
+ Fix for subselects in INSERT ... SELECT (Tom)
70
+ Prevent INSERT ... SELECT ... ORDER BY (Tom)
71
+ Improve type casting of int and float constants (Tom)
72
+ Cleanups for int8 inputs, range checking, and type conversion (Tom)
73
+ Fix for SELECT timespan('21:11:26'::time) (Tom)
74
+ Fixes for relations greater than 2GB, including vacuum
75
+ Improve communication of system table changes to other running backends (Tom)
76
+ Improve communication of user table modifications to other running backends (Tom)
77
+ Fix handling of temp tables in complex situations (Bruce, Tom)
78
+ Disallow DROP TABLE/DROP INDEX inside a transaction block
79
+ Prevent exponential space consumption with many AND's and OR's (Tom)
80
+ Collect attribute selectivity values for system columns (Tom)
81
+ Allow table locking when tables opened, improving concurrent reliability (Tom)
82
+ Fix for netmask('x.x.x.x/0') is 255.255.255.255 instead of 0.0.0.0
83
+ (Oleg Sharoiko)
84
+ Properly quote sequence names in pg_dump (Ross J. Reedstrom)
85
+ Prevent DESTROY DATABASE while others accessing
86
+ Prevent any rows from being returned by GROUP BY if no rows processed (Tom)
87
+ Reduce memory usage of aggregates (Tom)
88
+ Fix SELECT COUNT(1) FROM table WHERE ...' if no rows matching WHERE (Tom)
89
+ Fix pg_upgrade so it works for MVCC(Tom)
90
+ Add nbtree operator class for NUMERIC(Jan)
91
+ Fix for SELECT ... WHERE x IN (SELECT ... HAVING SUM(x) > 1) (Tom)
92
+ Make TABLE optional keyword in LOCK TABLE (Bruce)
93
+ Fix for "f1 datetime default 'now'" (Tom)
94
+ Allow comment-only lines, and ;;; lines too. (Tom)
95
+ Improve recovery after failed disk writes, disk full (Hiroshi)
96
+ Fix cases where table is mentioned in FROM but not joined (Tom)
97
+ Allow HAVING clause without aggregate functions (Tom)
98
+ Fix for "--" comment and no trailing newline, as seen in Perl
99
+ Improve pg_dump failure error reports (Bruce)
100
+ Perl fix for large objects containing NUL characters (Douglas Thomson)
101
+ Allow sorts and hashes to exceed 2GB file sizes (Tom)
102
+ ODBC fix for for large objects (free)
103
+ Fix for pg_dump dumping of inherited rules (Tom)
104
+ Fix for NULL handling comparisons (Tom)
105
+ Fix inconsistent state caused by failed CREATE/DROP commands (Hiroshi)
106
+ Fix for dbname with dash
107
+ Fix problems with CURRENT_DATE used in DEFAULT (Tom)
108
+ Prevent DROP INDEX from interfering with other backends (Tom)
109
+ Fix file descriptor leak in verify_password()
110
+ Fix for "Unable to identify an operator =$" problem
111
+ Fix ODBC so no segfault if CommLog and Debug enabled (Dirk Niggemann)
112
+ Fix for recursive exit call (Massimo)
113
+ Fix indexing of cidr
114
+ Fix for extra-long timezones (Jeroen van Vianen)
115
+ Make pg_dump preserve primary key information (Peter E)
116
+ Prevent databases with single quotes (Peter E)
117
+ Prevent DROP DATABASE inside transaction (Peter E)
118
+ ecpg memory leak fixes (Stephen Birch)
119
+ Fix for Ethernet MAC addresses (macaddr type) comparisons
120
+ Fix for SELECT null::text, SELECT int4fac(null) and SELECT 2 + (null) (Tom)
121
+ Fix for LIKE optimization to use indexes with multi-byte encodings (Tom)
122
+ Y2K timestamp fix (Massimo)
123
+ Fix for date/time types when overflows happened in computations (Tom)
124
+ Fix for VACUUM 'HEAP_MOVED_IN was not expected' errors (Tom)
125
+ Fix for views with tables/columns containing spaces (Tom)
126
+ Allow array on int8 (Peter E)
127
+ Prevent permissions on indexes (Peter E)
128
+ Fix for rounding/overflow of NUMERIC type, like NUMERIC(4,4) (Tom)
129
+ Fix for spinlock stuck problem when error is generated (Hiroshi)
130
+ Allow NUMERIC arrays
131
+ Fix ipcclean on Linux
132
+ Fix handling of NULL constraint conditions (Tom)
133
+ Fix bugs in NUMERIC ceil() and floor() functions (Tom)
134
+ Make char_length()/octet_length including trailing blanks (Tom)
135
+ Made abstime/reltime use int4 instead of time_t (Peter E)
136
+ Fix memory leak in odbc driver (Nick Gorham)
137
+ Fix r-tree index optimizer selectivity (Thomas)
138
+
139
+ Enhancements
140
+ ------------
141
+ New CLI interface include file sqlcli.h, based on SQL3/SQL98
142
+ Remove all limits on query length, row length limit still exists (Tom)
143
+ Improve optimizer selectivity computations and functions (Tom)
144
+ Enable fast LIKE index processing only if index present (Tom)
145
+ Revise parse_coerce() to handle coercion of int and float constants (Tom)
146
+ Re-use free space on index pages with duplicates (Tom)
147
+ Improve hash join processing (Tom)
148
+ Prevent descending sort if result is already sorted(Hiroshi)
149
+ Allow commuting of index scan query qualifications (Tom)
150
+ Prefer index scans in cases where ORDER BY/GROUP BY is required (Tom)
151
+ Allocate large memory requests in fix-sized chunks for performance (Tom)
152
+ Fix vacuum's performance by reducing memory allocation requests (Tom)
153
+ Update jdbc protocol to 2.0 (Jens Glaser
[email protected] )
154
+ Add TRUNCATE command to quickly truncate relation (Mike Mascari)
155
+ Implement constant-expression simplification (Bernard Frankpitt, Tom)
156
+ Fix to give super user and createdb user proper update catalog rights (Peter E)
157
+ Allow more than first column to be used to determine start of index scan
158
+ (Hiroshi)
159
+ Allow ecpg bool variables to have NULL values (Christof)
160
+ Issue ecpg error if NULL value is returned to variable with no NULL
161
+ indicator (Christof)
162
+ Allow ^C to cancel COPY command (Massimo)
163
+ Add SET FSYNC and SHOW PG_OPTIONS commands(Massimo)
164
+ Improve CREATE FUNCTION to allow type conversion specification
165
+ (Bernie Frankpitt)
166
+ Add CmdTuples() to libpq++(Vince)
167
+ New CREATE CONSTRAINT TRIGGER and SET CONSTRAINTS commands(Jan)
168
+ Allow CREATE FUNCTION WITH clause to be used for all language types
169
+ configure --enable-debug adds -g (Peter E)
170
+ configure --disable-debug removes -g (Peter E)
171
+ Allow more complex default expressions (Tom)
172
+ First real FOREIGN KEY constraint trigger functionality (Jan)
173
+ Add FOREIGN KEY ... MATCH FULL ... ON DELETE CASCADE (Jan)
174
+ Add FOREIGN KEY ... MATCH <unspecified> referential actions (Don Baccus)
175
+ Allow WHERE restriction on ctid (physical heap location) (Hiroshi)
176
+ Move pginterface from contrib to interface directory, rename to pgeasy (Bruce)
177
+ Add DEC and SESSION_USER as reserved words
178
+ Prevent quadruple use of disk space when doing internal sorting (Tom)
179
+ Require SELECT DISTINCT target list to have all ORDER BY columns (Tom)
180
+ Add Oracle's COMMENT ON command (Mike Mascari <mascarim@yahoo.
181
+ libpq's PQsetNoticeProcessor function now returns previous hook(Peter E)
182
+ Prevent PQsetNoticeProcessor from being set to NULL (Peter E)
183
+ Make USING in COPY optional (Bruce)
184
+ Faster sorting by calling fewer functions (Tom)
185
+ Create system indexes to match all system caches(Bruce, Hiroshi)
186
+ Make system caches use system indexes(Bruce)
187
+ Make all system indexes unique(Bruce)
188
+ Allow subselects in the target list (Tom)
189
+ Allow subselects on the left side of comparison operators (Tom)
190
+ New parallel regression test (Jan)
191
+ Change backend-side COPY to write files with permissions 644 not 666 (Tom)
192
+ Force permissions on PGDATA directory to be secure, even if it exists (Tom)
193
+ Added psql LastOid variable to return last inserted oid (Peter E)
194
+ Improve pg_statistics management for VACUUM speed improvement (Tom)
195
+ Allow concurrent vacuum and remove pg_vlock vacuum lock file (Tom)
196
+ Add permissions check so only Postgres superuser or table owner can
197
+ vacuum (Peter E)
198
+ New C-routines to implement a BIT and BIT VARYING type in /contrib
199
+ (Adriaan Joubert)
200
+ New libpq functions to allow asynchronous connections: PQconnectStart(),
201
+ PQconnectPoll(), PQresetStart(), PQresetPoll(), PQsetenvStart(),
202
+ PQsetenvPoll(), PQsetenvAbort (Ewan Mellor)
203
+ New libpq PQsetenv() function (Ewan Mellor)
204
+ create/alter user extension (Peter E)
205
+ New postmaster.pid and postmaster.opts under $PGDATA (Tatsuo)
206
+ New scripts for create/drop user/db (Peter E)
207
+ Major psql overhaul(Peter E)
208
+ Add const to libpq interface(Peter E)
209
+ New libpq function PQoidValue (Peter E)
210
+ Show specific non-aggregate causing problem with GROUP BY (Tom)
211
+ Force changes to pg_shadow recreate pg_pwd file (Peter E)
212
+ Add aggregate(DISTINCT ...) (Tom)
213
+ Allow flag to control COPY input/output of NULLs (Peter E)
214
+ Make postgres user have a password by default (Peter E)
215
+ Add CREATE/ALTER/DROP GROUP (Peter E)
216
+ All administration scripts now support --long options (Peter E, Karel)
217
+ Vacuumdb script now supports --alldb option (Peter E)
218
+ ecpg new portable FETCH syntax
219
+ Add ecpg EXEC SQL IFDEF, EXEC SQL IFNDEF, EXEC SQL ELSE, EXEC SQL ELIF
220
+ and EXEC SQL ENDIF directives
221
+ Add pg_ctl script to control backend startup (Tatsuo)
222
+ Add postmaster.opts.default file to store startup flags (Tatsuo)
223
+ Allow --with-mb=SQL_ASCII
224
+ Increase maximum number of index keys to 16 (Bruce)
225
+ Increase maximum number of function arguments to 16 (Bruce)
226
+ Allow user configuration of maximum number of index keys and arguments
227
+ (Bruce)
228
+ Flush backend cache less frequently (Tom, Hiroshi)
229
+ Allow unprivileged users to change their passwords (Peter E)
230
+ With password authentication enabled, new users without passwords can't
231
+ connect (Peter E)
232
+ Disallow dropping a user who owns a database (Peter E)
233
+ Add initdb --enable-multibyte option (Peter E)
234
+ Add option for initdb to prompts for superuser password (Peter E)
235
+ COPY now reuses previous memory allocation, improving performance (Tom)
236
+ Allow complex type casts like col::numeric(9,2) and col::int2::float8 (Tom)
237
+ Updated user interfaces on initdb, initlocation, pg_dump, ipcclean
238
+ (Peter E)
239
+ NUMERIC now accepts scientific notation (Tom)
240
+ NUMERIC to int4 rounds (Tom)
241
+ Convert float4/8 to NUMERIC properly (Tom)
242
+ New pg_char_to_encoding() and pg_encoding_to_char() functions
243
+ Libpq non-blocking mode (Alfred Perlstein)
244
+ Improve conversion of types in casts that don't specify a length
245
+ New plperl internal programming language (Mark Hollomon)
246
+ Allow COPY IN to read file that do not end with a newline (Tom)
247
+ Improve optimization cost estimation (Tom)
248
+ Indicate when long identifiers are truncated (Tom)
249
+ Improve optimizer estimate of range queries x > lowbound AND x < highbound (Tom)
250
+ Allow aggregates to use type equivalency (Peter E)
251
+ Add Oracle's to_char(), to_date(), to_datetime(), to_timestamp(), to_number()
252
+ conversion functions (Karel Zak <
[email protected] >)
253
+ Add SELECT DISTINCT ON (expr [, expr ...]) targetlist ... (Tom)
254
+ Check to be sure ORDER BY is compatible with the DISTINCT operation (Tom)
255
+ Use DNF instead of CNF where appropriate (Tom, Taral)
256
+ Add NUMERIC and int8 types to ODBC
257
+ Improve EXPLAIN results for Append, Group, Agg, Unique (Tom)
258
+ Added ALTER TABLE ... ADD FOREIGN KEY (Stephan Szabo)
259
+ Further cleanup for OR-of-AND WHERE-clauses (Tom)
260
+ Make use of index in OR clauses (x = 1 AND y = 2) OR (x = 2 AND y = 4) (Tom)
261
+ Allow SELECT .. FOR UPDATE in PL/pgSQL (Hiroshi)
262
+ Enable backward sequential scan even after reaching EOF (Hiroshi)
263
+ Add btree indexing of boolean values, >= and <= (Don Baccus)
264
+ Print current line number when COPY FROM fails (Massimo)
265
+ Recognize special case of POSIX time zone: "GMT+8" and "GMT-8" (Thomas)
266
+ Add "DEC" as synonym for "DECIMAL (Thomas)
267
+ Add "SESSION_USER" as SQL92 keyword, same as CURRENT_USER (Thomas)
268
+ Implement column aliases (aka correlation names) and more join syntax
269
+ (Thomas)
270
+ Allow queries like SELECT a FROM t1 tx (a) (Thomas)
271
+ Allow queries like SELECT * FROM t1 NATURAL JOIN t2 (Thomas)
272
+ Smarter optimizer computations for random index page access (Tom)
273
+ New SET variable to control optimizer costs (Tom)
274
+ Optimizer queries based on LIMIT, OFFSET, and EXISTS qualifications (Tom)
275
+ Reduce optimizer internal housekeeping of join paths for speedup (Tom)
276
+ Make "INTERVAL" reserved word allowed as a column identifier (Thomas)
277
+ Allow type conversion with NUMERIC (Thomas)
278
+ Make ISO date style (2000-02-16 09:33) the default (Thomas)
279
+ Implement REINDEX command (Hiroshi)
280
+ Accept ALL in aggregate function SUM(ALL col) (Tom)
281
+ Prevent GROUP BY from using column aliases (Tom)
282
+ New psql \encoding option (Tatsuo)
283
+ Allow PQrequestCancel() to terminate when in waiting-for-lock state (Hiroshi)
284
+ Allow negation of a negative number in all cases
285
+ Add ecpg descriptors
286
+ Allow CREATE VIEW v AS SELECT f1::char(8) FROM tbl
287
+
288
+ Source Tree Changes
289
+ -------------------
290
+ Fix for linux PPC compile
291
+ New generic expression-tree-walker subroutine (Tom)
292
+ Change form() to varargform() to prevent portability problems.
293
+ Improved range checking for large integers on Alpha's
294
+ Clean up #include in /include directory (Bruce)
295
+ Add scripts for checking includes (Bruce)
296
+ Remove un-needed #include's from *.c files (Bruce)
297
+ Change #include's to use <> and "" as appropriate (Bruce)
298
+ Enable WIN32 compilation of libpq
299
+ Alpha spinlock fix from Uncle George <
[email protected] >
300
+ Overhaul of optimizer data structures (Tom)
301
+ Fix to cygipc library (Yutaka Tanida)
302
+ Allow pgsql to work on newer Cygwin snapshots(Dan)
303
+ New catalog version number (Tom)
304
+ Add Linux ARM.
305
+ Rename heap_replace to heap_update
306
+ Update for QNX (Kardos, Dr. Andrea)
307
+ New platform-specific regression handling (Tom)
308
+ Rename oid8 -> oidvector and int28 -> int2vector (Bruce)
309
+ Included all yacc and lex files into the distribution (Peter E.)
310
+ Remove lextest, no longer needed (Peter E)
311
+ Fix for libpq and psql on Win32 (Magnus)
312
+ Internally change datetime and timespan into timestamp and interval (Thomas)
313
+ Fix for plpgsql on BSDI
314
+
315
+
29
316
Release 6.5.3
30
317
31
318
This is basically a cleanup release for 6.5.2. We have added a new pgaccess
0 commit comments