aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAge
* Update release notes for last-minute fix.REL7_4_18Tom Lane2007-09-16
|
* Fix aboriginal mistake in lazy VACUUM's code for truncating awayTom Lane2007-09-16
| | | | | | | | | | | | | no-longer-needed pages at the end of a table. We thought we could throw away pages containing HEAPTUPLE_DEAD tuples; but this is not so, because such tuples very likely have index entries pointing at them, and we wouldn't have removed the index entries. The problem only emerges in a somewhat unlikely race condition: the dead tuples have to have been inserted by a transaction that later aborted, and this has to have happened between VACUUM's initial scan of the page and then rechecking it for empty in count_nondeletable_pages. But that timespan will include an index-cleaning pass, so it's not all that hard to hit. This seems to explain a couple of previously unsolved bug reports.
* update configure for 7.4.18Marc G. Fournier2007-09-14
|
* Fix markup that doesn't work in back branches.Tom Lane2007-09-14
|
* Minor editorialization on release notes.Tom Lane2007-09-14
|
* Translation updatesPeter Eisentraut2007-09-13
|
* Fix the database-wide version of CLUSTER to silently skip temp tables ofAlvaro Herrera2007-09-12
| | | | | | | remote sessions, instead of erroring out in the middle of the operation. This is a backpatch of a previous fix applied to CLUSTER to HEAD and 8.2, all the way back that it is relevant to.
* Stamp releases 8.2.5, 8.1.10, 8.0.14, 7.4.18, 7.3.20.Bruce Momjian2007-09-11
| | | | Update FAQs for 8.2.5.
* StampBruce Momjian2007-09-11
|
* Fix aboriginal bug in _tarAddFile(): when complaining that the amount of dataTom Lane2007-08-29
| | | | | | read from the temp file didn't match the file length reported by ftello(), the wrong variable's value was printed, and so the message made no sense. Clean up a couple other coding infelicities while at it.
* Fix brain fade in DefineIndex(): it was continuing to access the table'sTom Lane2007-08-25
| | | | | | | | | | | | | | | relcache entry after having heap_close'd it. This could lead to misbehavior if a relcache flush wiped out the cache entry meanwhile. In 8.2 there is a very real risk of CREATE INDEX CONCURRENTLY using the wrong relid for locking and waiting purposes. I think the bug is only cosmetic in 8.0 and 8.1, because their transgression is limited to using RelationGetRelationName(rel) in an ereport message immediately after heap_close, and there's no way (except with special debugging options) for a cache flush to occur in that interval. Not quite sure that it's cosmetic in 7.4, but seems best to patch anyway. Found by trying to run the regression tests with CLOBBER_CACHE_ALWAYS enabled. Maybe we should try to do that on a regular basis --- it's awfully slow, but perhaps some fast buildfarm machine could do it once in awhile.
* Fix combo_decrypt() to throw an error for zero-length input when using aTom Lane2007-08-23
| | | | | | | | padded encryption scheme. Formerly it would try to access res[(unsigned) -1], which resulted in core dumps on 64-bit machines, and was certainly trouble waiting to happen on 32-bit machines (though in at least the known case it was harmless because that byte would be overwritten after return). Per report from Ken Colson; fix by Marko Kreen.
* Fix potential access-off-the-end-of-memory in varbit_out(): it fetched theTom Lane2007-08-21
| | | | | | byte after the last full byte of the bit array, regardless of whether that byte was part of the valid data or not. Found by buildfarm testing. Thanks to Stefan Kaltenbrunner for nailing down the cause.
* Fix a gradual memory leak in ExecReScanAgg(). Because the aggregationNeil Conway2007-08-08
| | | | | | | | | | | | hash table is allocated in a child context of the agg node's memory context, MemoryContextReset() will reset but *not* delete the child context. Since ExecReScanAgg() proceeds to build a new hash table from scratch (in a new sub-context), this results in leaking the header for the previous memory context. Therefore, use MemoryContextResetAndDeleteChildren() instead. Credit: My colleague Sailesh Krishnamurthy at Truviso for isolating the cause of the leak.
* Fix pg_restore to guard against unexpected EOF while reading an archive file.Tom Lane2007-08-06
| | | | Per report and partial patch from Chad Wagner.
* Fix a memory leak in tuplestore_end(). Unlikely to be significant duringNeil Conway2007-08-02
| | | | normal operation, but tuplestore_end() ought to do what it claims to do.
* Fix a bug in the original implementation of redundant-join-clause removal:Tom Lane2007-07-31
| | | | | | clauses in which one side or the other references both sides of the join cannot be removed as redundant, because that expression won't have been constrained below the join. Per report from Sergey Burladyan.
* Fix security definer functions with polymorphic arguments. This case hasTom Lane2007-07-31
| | | | | never worked because fmgr_security_definer() neglected to pass the fn_expr information through. Per report from Viatcheslav Kalinin.
* The proper guaranteed buffer size for errors isMagnus Hagander2007-07-23
| | | | | | | INITIAL_EXPBUFFER_SIZE, not PQERRORMSG_LENGTH. Backport only - the proper fix in HEAD is to use PQExpBuffers everywhere.
* Fix elog.c to avoid infinite recursion (leading to backend crash) whenTom Lane2007-07-21
| | | | | | | | | | log_min_error_statement is active and there is some problem in logging the current query string; for example, that it's too long to include in the log message without running out of memory. This problem has existed since the log_min_error_statement feature was introduced. No doubt the reason it wasn't detected long ago is that 8.2 is the first release that defaults log_min_error_statement to less than PANIC level. Per report from Bill Moran.
* Make replace(), split_part(), and string_to_array() behave somewhat sanelyTom Lane2007-07-19
| | | | | | | | | when handed an invalidly-encoded pattern. The previous coding could get into an infinite loop if pg_mb2wchar_with_len() returned a zero-length string after we'd tested for nonempty pattern; which is exactly what it will do if the string consists only of an incomplete multibyte character. This led to either an out-of-memory error or a backend crash depending on platform. Per report from Wiktor Wodecki.
* Fix outfuncs.c to dump A_Const nodes representing NULLs correctly. This hasTom Lane2007-07-17
| | | | | | been broken since forever, but was not noticed because people seldom look at raw parse trees. AFAIK, no impact on users except that debug_print_parse might fail; but patch it all the way back anyway. Per report from Jeff Ross.
* Restrict non-superusers to password authenticated connectionsJoe Conway2007-07-09
| | | | | | | to prevent possible escalation of privilege. Provide new SECURITY DEFINER functions with old behavior, but initially REVOKE ALL from public for these functions. Per list discussion and design proposed by Tom Lane.
* Fix failure to restart Postgres when Linux kernel returns EIDRM for shmctl().Tom Lane2007-07-02
| | | | | | | | | | | | | This is a Linux kernel bug that apparently exists in every extant kernel version: sometimes shmctl() will fail with EIDRM when EINVAL is correct. We were assuming that EIDRM indicates a possible conflict with pre-existing backends, and refusing to start the postmaster when this happens. Fortunately, there does not seem to be any case where Linux can legitimately return EIDRM (it doesn't track shmem segments in a way that would allow that), so we can get away with just assuming that EIDRM means EINVAL on this platform. Per reports from Michael Fuhr and Jon Lapham --- it's a bit surprising we have not seen more reports, actually.
* Fix a passel of ancient bugs in to_char(), including two distinct bufferTom Lane2007-06-29
| | | | | | | | | | | overruns (neither of which seem likely to be exploitable as security holes, fortunately, since the provoker can't control the data written). One of these is due to choosing to stomp on the output of a called function, which is bad news in any case; make it treat the called functions' results as read-only. Avoid some unnecessary palloc/pfree traffic too; it's not really helpful to free small temporary objects, and again this is presuming more than it ought to about the nature of the results of called functions. Per report from Patrick Welche and additional code-reading by Imad.
* transformColumnDefinition failed to complain aboutTom Lane2007-06-20
| | | | | | create table foo (bar int default null default 3); due to not thinking about the special-case handling of DEFAULT NULL. Problem noticed while investigating bug #3396.
* CREATE DOMAIN ... DEFAULT NULL failed because gram.y special-cases DEFAULTTom Lane2007-06-20
| | | | | NULL and DefineDomain didn't. Bug goes all the way back to original coding of domains. Per bug #3396 from Sergey Burladyan.
* Fix erroneous error reporting for overlength input in text_date(),Tom Lane2007-06-02
| | | | text_time(), and text_timetz(). 7.4-vintage bug found by Greg Stark.
* Fix aboriginal bug in BufFileDumpBuffer that would cause it to write theTom Lane2007-06-01
| | | | | | | | wrong data when dumping a bufferload that crosses a component-file boundary. This probably has not been seen in the wild because (a) component files are normally 1GB apiece and (b) non-block-aligned buffer usage is relatively rare. But it's fairly easy to reproduce a problem if one reduces RELSEG_SIZE in a test build. Kudos to Kurt Harriman for spotting the bug.
* Fix spurious German index entryPeter Eisentraut2007-05-21
|
* Remove redundant logging of send failures when SSL is in use. While pqcomm.cTom Lane2007-05-18
| | | | | | had been taught not to do that ages ago, the SSL code was helpfully bleating anyway. Resolves some recent reports such as bug #3266; however the underlying cause of the related bug #2829 is still unclear.
* Document that CLUSTER breaks MVCC visibility rules.Magnus Hagander2007-05-13
| | | | | | (Not needed in cvs head, because CLUSTER itself is fixed there) Heikki Linnakangas
* Fix a thinko in my patch of a couple months ago for bug #3116: it did theTom Lane2007-05-01
| | | | | | | | | | wrong thing when inlining polymorphic SQL functions, because it was using the function's declared return type where it should have used the actual result type of the current call. In 8.1 and 8.2 this causes obvious failures even if you don't have assertions turned on; in 8.0 and 7.4 it would only be a problem if the inlined expression were used as an input to a function that did run-time type determination on its inputs. Add a regression test, since this is evidently an under-tested area.
* Fix dynahash.c to suppress hash bucket splits while a hash_seq_search() scanTom Lane2007-04-26
| | | | | | | | | | | | | | | | | | | | | | | is in progress on the same hashtable. This seems the least invasive way to fix the recently-recognized problem that a split could cause the scan to visit entries twice or (with much lower probability) miss them entirely. The only field-reported problem caused by this is the "failed to re-find shared lock object" PANIC in COMMIT PREPARED reported by Michel Dorochevsky, which was caused by multiply visited entries. However, it seems certain that mdsync() is vulnerable to missing required fsync's due to missed entries, and I am fearful that RelationCacheInitializePhase2() might be at risk as well. Because of that and the generalized hazard presented by this bug, back-patch all the supported branches. Along the way, fix pg_prepared_statement() and pg_cursor() to not assume that the hashtables they are examining will stay static between calls. This is risky regardless of the newly noted dynahash problem, because hash_seq_search() has never promised to cope with deletion of table entries other than the just-returned one. There may be no bug here because the only supported way to call these functions is via ExecMakeTableFunctionResult() which will cycle them to completion before doing anything very interesting, but it seems best to get rid of the assumption. This affects 8.2 and HEAD only, since those functions weren't there earlier.
* Fix newly-introduced documentation typo.Neil Conway2007-04-23
|
* Update configure in for new releaseREL7_4_17PostgreSQL Daemon2007-04-20
| | | | Security: hold for release
* Fix markup.Tom Lane2007-04-20
| | | | Security: CVE-2007-2138
* Fix markup.Tom Lane2007-04-20
| | | | Security: CVE-2007-2138
* Support explicit placement of the temporary-table schema within search_path.Tom Lane2007-04-20
| | | | | | | | | | | | | This is needed to allow a security-definer function to set a truly secure value of search_path. Without it, a malicious user can use temporary objects to execute code with the privileges of the security-definer function. Even pushing the temp schema to the back of the search path is not quite good enough, because a function or operator at the back of the path might still capture control from one nearer the front due to having a more exact datatype match. Hence, disable searching the temp schema altogether for functions and operators. Security: CVE-2007-2138
* Repair PANIC condition in hash indexes when a previous index extension attemptTom Lane2007-04-19
| | | | | | | | | | | failed (due to lock conflicts or out-of-space). We might have already extended the index's filesystem EOF before failing, causing the EOF to be beyond what the metapage says is the last used page. Hence the invariant maintained by the code needs to be "EOF is at or beyond last used page", not "EOF is exactly the last used page". Problem was created by my patch of 2006-11-19 that attempted to repair bug #2737. Since that was back-patched to 7.4, this needs to be as well. Per report and test case from Vlastimil Krejcir.
* Release wording updates for releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19.Bruce Momjian2007-04-19
|
* Update FAQ to mention most recent release for releasesBruce Momjian2007-04-19
| | | | 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19.
* Stamp releases 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19.Bruce Momjian2007-04-19
|
* Release note updates for 8.2.4, 8.1.9, 8.0.13, 7.4.17, 7.3.19.Bruce Momjian2007-04-19
|
* Translation updatesPeter Eisentraut2007-04-18
|
* Don't write timing output in quiet mode.Magnus Hagander2007-04-16
| | | | Merlin Moncure
* Fix caching of unsuccessful initialization of parser or configuration.Teodor Sigaev2007-04-02
| | | | Per report from Listmail <lists@peufeu.com>
* Fix pg_wchar_table's maxmblen field of EUC_CN, EUC_TW, MULE_INTERNALTatsuo Ishii2007-03-26
| | | | and GB18030. patches from ITAGAKI Takahiro.
* Fix a longstanding bug in VACUUM FULL's handling of update chains. The codeTom Lane2007-03-14
| | | | | | | | | | | | | | | | | | | | | | | did not expect that a DEAD tuple could follow a RECENTLY_DEAD tuple in an update chain, but because the OldestXmin rule for determining deadness is a simplification of reality, it is possible for this situation to occur (implying that the RECENTLY_DEAD tuple is in fact dead to all observers, but this patch does not attempt to exploit that). The code would follow a chain forward all the way, but then stop before a DEAD tuple when backing up, meaning that not all of the chain got moved. This could lead to copying the chain multiple times (resulting in duplicate copies of the live tuple at its end), or leaving dangling index entries behind (which, aside from generating warnings from later vacuums, creates a risk of wrong query results or bogus duplicate-key errors once the heap slot the index entry points to is repopulated). The fix is to recheck HeapTupleSatisfiesVacuum while following a chain forward, and to stop if a DEAD tuple is reached. Each contiguous group of RECENTLY_DEAD tuples will therefore be copied as a separate chain. The patch also adds a couple of extra sanity checks to verify correct behavior. Per report and test case from Pavan Deolasee.
* Fix oversight in original coding of inline_function(): sinceTom Lane2007-03-06
| | | | | | | | | | | | | | check_sql_fn_retval allows binary-compatibility cases, the expression extracted from an inline-able SQL function might have a type that is only binary-compatible with the declared function result type. To avoid possibly changing the semantics of the expression, we should insert a RelabelType node in such cases. This has only been shown to have bad consequences in recent 8.1 and up releases, but I suspect there may be failure cases in the older branches too, so patch it all the way back. Per bug #3116 from Greg Mullane. Along the way, fix an omission in eval_const_expressions_mutator: it failed to copy the relabelformat field when processing a RelabelType. No known observable failures from this, but it definitely isn't intended behavior.