Tom Lane [Mon, 18 Jul 2005 15:55:01 +0000 (15:55 +0000)]
MemSet() must not cast its pointer argument to int32* until after it has
checked that the pointer is actually word-aligned. Casting a non-aligned
pointer to int32* is technically illegal per the C spec, and some recent
versions of gcc actually generate bad code for the memset() when given
such a pointer. Per report from Andrew Morrow.
Tom Lane [Sat, 16 Jul 2005 19:48:16 +0000 (19:48 +0000)]
Back-patch into 7.2 branch the 7.3 changes that made contrib/seg
error messages reasonably independent of the bison version used to
build segparse.c. Needed to get this branch passing on buildfarm.
Tom Lane [Sat, 16 Jul 2005 19:27:20 +0000 (19:27 +0000)]
Back-patch into 7.2 branch the 7.3 changes that made contrib/cube
error messages reasonably independent of the bison version used to
build cubeparse.c. Needed to get this branch passing on buildfarm.
Tom Lane [Sat, 16 Jul 2005 19:02:01 +0000 (19:02 +0000)]
Mark the geometry regression test as an ignorable failure in the pre-7.4
branches. Per discussion, this seems saner than trying to maintain
last-significant-digit regression test outputs for all supported platforms.
Tom Lane [Mon, 20 Jun 2005 20:45:12 +0000 (20:45 +0000)]
plpgsql's exec_assign_value() freed the old value of a variable before
copying/converting the new value, which meant that it failed badly on
"var := var" if var is of pass-by-reference type. Fix this and a similar
hazard in exec_move_row(); not sure that the latter can manifest before
8.0, but patch it all the way back anyway. Per report from Dave Chapeskie.
Tom Lane [Tue, 14 Jun 2005 14:21:43 +0000 (14:21 +0000)]
The random selection in function linear() could deliver a value equal to max
if geqo_rand() returns exactly 1.0, resulting in failure due to indexing
off the end of the pool array. Also, since this is using inexact float math,
it seems wise to guard against roundoff error producing values slightly
outside the expected range. Per report from bug@zedware.org.
Tom Lane [Tue, 31 May 2005 19:11:28 +0000 (19:11 +0000)]
Add test to WAL replay to verify that xl_prev points back to the previous
WAL record; this is necessary to be sure we recognize stale WAL records
when a WAL page was only partially written during a system crash.
Tom Lane [Sat, 7 May 2005 21:34:20 +0000 (21:34 +0000)]
Repair very-low-probability race condition between relation extension
and VACUUM: in the interval between adding a new page to the relation
and formatting it, it was possible for VACUUM to come along and decide
it should format the page too. Though not harmful in itself, this would
cause data loss if a third transaction were able to insert tuples into
the vacuumed page before the original extender got control back.
Tom Lane [Sat, 7 May 2005 21:23:49 +0000 (21:23 +0000)]
Adjust time qual checking code so that we always check TransactionIdIsInProgress
before we check commit/abort status. Formerly this was done in some paths
but not all, with the result that a transaction might be considered
committed for some purposes before it became committed for others.
Per example found by Jan Wieck.
Neil Conway [Sat, 30 Apr 2005 09:08:14 +0000 (09:08 +0000)]
GCC 4.0 includes a new warning option, -Wformat-literal, that emits
a warning when a variable is used as a format string for printf()
and similar functions (if the variable is derived from untrusted
data, it could include unexpected formatting sequences). This
emits too many warnings to be enabled by default, but it does
flag a few dubious constructs in the Postgres tree. This patch
fixes up the obvious variants: functions that are passed a variable
format string but no additional arguments.
This patch fixes a bug in pg_dump (triggers with formatting sequences
in their names are not dumped correctly) and some related pg_dump
code that looks dubious; cleanups for more harmless instances have
been applied to more recent branches. This patch also fixes an
additional format string bug that is present in 7.2 but not in later
releases: pg_dump would also fail to correctly dump indexes with
formatting sequences in their names.
Neil Conway [Sat, 30 Apr 2005 08:01:58 +0000 (08:01 +0000)]
This patch fixes a bug in the error message emitted by pg_restore on an
incorrect -F argument: write_msg() expects its first parameter to be a
"module name", not the format string.
Tom Lane [Sat, 23 Apr 2005 22:54:23 +0000 (22:54 +0000)]
Repair two TIME WITH TIME ZONE bugs found by Dennis Vshivkov. Comparison
of timetz values misbehaved in --enable-integer-datetime cases, and
EXTRACT(EPOCH) subtracted the zone instead of adding it in all cases.
Backpatch to all supported releases (except --enable-integer-datetime code
does not exist in 7.2).
Neil Conway [Sun, 13 Mar 2005 23:46:27 +0000 (23:46 +0000)]
Some builds (depends on crypto engine support?) of OpenSSL
0.9.7x have EVP_DigestFinal function which which clears all of
EVP_MD_CTX. This makes pgcrypto crash in functions which
re-use one digest context several times: hmac() and crypt()
with md5 algorithm.
Following patch fixes it by carring the digest info around
EVP_DigestFinal and re-initializing cipher.
Tom Lane [Sun, 23 Jan 2005 02:26:05 +0000 (02:26 +0000)]
The result of a FULL or RIGHT join can't be assumed to be sorted by the
left input's sorting, because null rows may be inserted at various points.
Per report from Ferenc Lutischá¸n.
Tom Lane [Fri, 22 Oct 2004 00:24:39 +0000 (00:24 +0000)]
Prevent pg_ctl from being run as root. Since it uses configuration files
owned by postgres, doing "pg_ctl start" as root could allow a privilege
escalation attack, as pointed out by iDEFENSE. Of course the postmaster would
fail, but we ought to fail a little sooner to protect sysadmins unfamiliar
with Postgres. The chosen fix is to disable root use of pg_ctl in all cases,
just to be confident there are no other holes.
Tom Lane [Wed, 13 Oct 2004 22:22:41 +0000 (22:22 +0000)]
Repair possible failure to update hint bits back to disk, per
http://archives.postgresql.org/pgsql-hackers/2004-10/msg00464.php.
I plan a more permanent fix in HEAD, but for the back branches it seems
best to just touch the places that actually have a problem.
Tom Lane [Fri, 17 Sep 2004 18:29:40 +0000 (18:29 +0000)]
Hashed LEFT JOIN would miss outer tuples with no inner match if the join
was large enough to be batched and the tuples fell into a batch where
there were no inner tuples at all. Thanks to Xiaoyu Wang for finding a
test case that exposed this long-standing bug.
Tom Lane [Wed, 11 Aug 2004 04:09:14 +0000 (04:09 +0000)]
Fix failure to guarantee that a checkpoint will write out pg_clog updates
for transaction commits that occurred just before the checkpoint. This is
an EXTREMELY serious bug --- kudos to Satoshi Okada for creating a
reproducible test case to prove its existence.
Tom Lane [Sat, 20 Mar 2004 18:12:32 +0000 (18:12 +0000)]
Repair multiple memory leaks in getTables(), including one that could
easily exhaust memory on databases with more than a few hundred triggers.
I don't expect any more releases of these old versions, but let's put the
fix in CVS just so it's archived.
Tom Lane [Tue, 29 Jul 2003 22:18:53 +0000 (22:18 +0000)]
Fix longstanding error in _bt_search(): should moveright at top of loop not
bottom. Otherwise we fail to moveright when the root page was split while
we were "in flight" to it. This is not a significant problem when the root
is above the leaf level, but if the root was also a leaf (ie, a single-page
index just got split) we may return the wrong leaf page to the caller,
resulting in failure to find a key that is in fact present. Bug has existed
at least since 7.1, probably forever.
Tom Lane [Mon, 31 Mar 2003 20:33:09 +0000 (20:33 +0000)]
TestConfiguration returns int, not bool. This mistake is relatively
harmless on signed-char machines but would lead to core dump in the
deadlock detection code if char is unsigned. Amazingly, this bug has
been here since 7.1 and yet wasn't reported till now. Thanks to Robert
Bruccoleri for providing the opportunity to track it down.
Tom Lane [Thu, 13 Mar 2003 23:44:07 +0000 (23:44 +0000)]
Async_NotifyHandler must save and restore ImmediateInterruptOK. Fixes
known problem with failure to respond to 'pg_ctl stop -m fast', and
probable problems if SIGINT or SIGTERM arrives while processing a
SIGUSR2 interrupt that arrived while waiting for a new client query.
Tom Lane [Tue, 21 Jan 2003 19:41:26 +0000 (19:41 +0000)]
Back-patch fixes for integer overflows in circle_poly(), path_encode(),
and path_add() --- from Neil Conway. Also, repair recently-detected
errors in lseg_eq(), lseg_ne(), lseg_center().
Tom Lane [Tue, 21 Jan 2003 19:38:21 +0000 (19:38 +0000)]
Back-patch fix for VACUUM being confused by SELECT FOR UPDATE of tuple
that was previously outdated by a transaction that later aborted.
Also, prevent VACUUM from being called inside function.
Tom Lane [Mon, 30 Sep 2002 20:18:59 +0000 (20:18 +0000)]
Back-patch fix for 'can't wait without a PROC structure' failures:
remove separate ShutdownBufferPoolAccess exit callback, and do the
work in ProcKill instead, before we delete MyProc.
Tom Lane [Fri, 20 Sep 2002 21:37:07 +0000 (21:37 +0000)]
Back-patch fix for failure to dump views containing FULL JOIN USING.
The bug is not present in CVS tip due to cleanup of JOIN handling,
but 7.2.* is broken.
Tom Lane [Sat, 15 Jun 2002 18:38:10 +0000 (18:38 +0000)]
Back-patch 7.3 fix to fully parenthesize UNION/EXCEPT/INTERSECT queries
in ruleutils output. The previous partial parenthesization was a hack
to get around grammar restrictions that have since been fixed; and as
Sam O'Connor pointed out, there were cases where it didn't work.
Bruce Momjian [Fri, 7 Jun 2002 21:53:09 +0000 (21:53 +0000)]
Please apply attached patch to contrib/intarray (7.2, 7.3).
Fixed bug with '=' operator for gist__int_ops and
define '=' operator for gist__intbig_ops opclass.
Now '=' operator is consistent with standard 'array' type.
Thanks Achilleus Mantzios for bug report and suggestion.
Tom Lane [Wed, 22 May 2002 17:29:45 +0000 (17:29 +0000)]
Make RelationForgetRelation error out if the relcache entry has nonzero
reference count. This avoids leaving dangling pointers around, as in
recent bug report against sequences (bug# 671).
Tom Lane [Tue, 14 May 2002 18:16:54 +0000 (18:16 +0000)]
Remove unnecessary pfree's in geometric operators. At least one of these
is actively dangerous, per bug report from Ewald Geschwinde 14-May-02,
and several of the rest look suspicious to me. Since there is no longer
any significant value in retail pfree's in these functions, just get
rid of all of them for safety's sake.
A backport patch.
Fix PQescapeBytea/PQunescapeBytea so that they handle bytes > 0x7f.
This is necessary for mulibyte character sequences.
See "[HACKERS] PQescapeBytea is not multibyte aware" thread posted around
2002/04/05 for more details.
Tom Lane [Tue, 2 Apr 2002 05:12:00 +0000 (05:12 +0000)]
Fix CLOG truncation code to not do the Wrong Thing when there are already
wrapped-around databases. The unvacuumed databases might be fine, or
they might not, but things will definitely not be fine if we remove the
wrong CLOG segments. Per trouble report from Gary Wolfe, 1-Apr-2002.
Bruce Momjian [Tue, 19 Mar 2002 14:16:32 +0000 (14:16 +0000)]
> > Users of contrib/tsearch needs after upgrading of module (compiling, installing)
> > to perform sql command:
> > update pg_amop set amopreqcheck = true where amopclaid =
> > (select oid from pg_opclass where opcname = 'gist_txtidx_ops');
>
> Oleg, sorry, I don't understand where this should appear. In the README
> file, and if so, where? Is this something only for people upgrading
> from 7.2?
Sorry Bruce, I was unclear. I have attached patch to Readme.tsearch
Also, It'd be worth to mention in Changes to point users of tsearch
about importang upgrade notices.