]> granicus.if.org Git - postgresql/log
postgresql
16 years agoUpdate back-branch release notes.
Tom Lane [Thu, 12 Mar 2009 22:36:46 +0000 (22:36 +0000)]
Update back-branch release notes.

16 years agoFix core dump due to null-pointer dereference in to_char() when datetime
Tom Lane [Thu, 12 Mar 2009 00:54:04 +0000 (00:54 +0000)]
Fix core dump due to null-pointer dereference in to_char() when datetime
format codes are misapplied to a numeric argument.  (The code still produces
a pretty bogus error message in such cases, but I'll settle for stopping the
crash for now.)  Per bug #4700 from Sergey Burladyan.

Problem exists in all supported branches, so patch all the way back.
In HEAD, also clean up some ugly coding in the nearby cache management
code.

16 years agoAdd MUST (Mauritius Island Summer Time) to the list of known abbreviations.
Heikki Linnakangas [Thu, 5 Mar 2009 14:29:26 +0000 (14:29 +0000)]
Add MUST (Mauritius Island Summer Time) to the list of known abbreviations.
Mauritius began using DST in the summer 2008-2009; the Olson library has been
updated already.

Xavier Bugaud

16 years agoPut back our old workaround for machines that declare cbrt() in math.h but
Tom Lane [Wed, 4 Mar 2009 22:08:53 +0000 (22:08 +0000)]
Put back our old workaround for machines that declare cbrt() in math.h but
fail to provide the function itself.  Not sure how we escaped testing anything
later than 7.3 on such cases, but they still exist, as per André Volpato's
report about AIX 5.3.

16 years agoOoops ... fix some confusion between gettext() and _() in my previous patch.
Tom Lane [Tue, 3 Mar 2009 00:17:44 +0000 (00:17 +0000)]
Ooops ... fix some confusion between gettext() and _() in my previous patch.
This has moved around in past releases, so just copying-and-pasting from HEAD
didn't work as intended.

16 years agoWhen we are in error recursion trouble, arrange to suppress translation and
Tom Lane [Mon, 2 Mar 2009 21:19:23 +0000 (21:19 +0000)]
When we are in error recursion trouble, arrange to suppress translation and
encoding conversion of any elog/ereport message being sent to the frontend.
This generalizes a patch that I put in last October, which suppressed
translation of only specific messages known to be associated with recursive
can't-translate-the-message behavior.  As shown in bug #4680, we need a more
general answer in order to have some hope of coping with broken encoding
conversion setups.  This approach seems a good deal less klugy anyway.

Patch in all supported branches.

16 years agoFix buffer allocations in encoding conversion routines so that they won't
Tom Lane [Sat, 28 Feb 2009 18:50:25 +0000 (18:50 +0000)]
Fix buffer allocations in encoding conversion routines so that they won't
fail on zero-length inputs.  This isn't an issue in normal use because the
conversion infrastructure skips calling the converters for empty strings.
However a problem was created by yesterday's patch to check whether the
right conversion function is supplied in CREATE CONVERSION.  The most
future-proof fix seems to be to make the converters safe for this corner case.

16 years agoIn CREATE CONVERSION, test that the given function is a valid conversion
Heikki Linnakangas [Fri, 27 Feb 2009 16:35:53 +0000 (16:35 +0000)]
In CREATE CONVERSION, test that the given function is a valid conversion
function for the specified source and destination encodings. We do that by
calling the function with an empty string. If it can't perform the requested
conversion, it will throw an error.

Backport to 7.4 - 8.3. Per bug report #4680 by Denis Afonin.

16 years agotag 7.4.24 REL7_4_24
Marc G. Fournier [Fri, 30 Jan 2009 03:54:33 +0000 (03:54 +0000)]
tag 7.4.24

16 years agoUpdate back-branch release notes.
Tom Lane [Fri, 30 Jan 2009 00:38:26 +0000 (00:38 +0000)]
Update back-branch release notes.

16 years agoTranslation updates
Peter Eisentraut [Thu, 29 Jan 2009 22:02:17 +0000 (22:02 +0000)]
Translation updates

16 years agoReplace argument-checking Asserts with regular test-and-elog checks in all
Tom Lane [Thu, 29 Jan 2009 19:25:15 +0000 (19:25 +0000)]
Replace argument-checking Asserts with regular test-and-elog checks in all
encoding conversion functions.  These are not can't-happen cases because
it's possible to create a conversion with the wrong conversion function
for the specified encoding pair.  That would lead to an Assert crash in
an Assert-enabled build, or incorrect conversion otherwise, neither of
which is desirable.  This would be a DOS issue if production databases
were customarily built with asserts enabled, but fortunately that's not so.
Per an observation by Heikki.

Back-patch to all supported branches.

16 years agoGo over all OpenSSL return values and make sure we compare them
Magnus Hagander [Wed, 28 Jan 2009 15:06:48 +0000 (15:06 +0000)]
Go over all OpenSSL return values and make sure we compare them
to the documented API value. The previous code got it right as
it's implemented, but accepted too much/too little compared to
the API documentation.

Per comment from Zdenek Kotala.

16 years agoFix uninitialized variables in get_covers
Teodor Sigaev [Fri, 16 Jan 2009 12:10:34 +0000 (12:10 +0000)]
Fix uninitialized variables in get_covers

16 years agoFix URL generation in headline. Only tag lexeme will be replaced by space.
Teodor Sigaev [Thu, 15 Jan 2009 18:30:10 +0000 (18:30 +0000)]
Fix URL generation in headline. Only tag lexeme will be replaced by space.
Per http://archives.postgresql.org/pgsql-bugs/2008-12/msg00013.php

16 years agoFix generation of too long headline with ShortWords.
Teodor Sigaev [Thu, 15 Jan 2009 18:29:47 +0000 (18:29 +0000)]
Fix generation of too long headline with ShortWords.
Per http://archives.postgresql.org/pgsql-hackers/2008-09/msg01088.php

16 years agoBackpatch to 7.4 the part of 1.84 (from the 8.0 timeline) that wasn't already
Alvaro Herrera [Tue, 13 Jan 2009 15:28:42 +0000 (15:28 +0000)]
Backpatch to 7.4 the part of 1.84 (from the 8.0 timeline) that wasn't already
patched, viz. str_numth().  The rest of that patch was already applied as part
of 1.69.2.1.  Per report and patch from Andreas 'ads' Scherbaum.

The involved revisions were:

revision 1.84
date: 2005-01-12 22:40:13 -0300;  author: tgl;  state: Exp;  lines: +9 -7;
branches:  1.84.4;
Remove unportable assumption that it's okay to use the target buffer
of an sprintf() as a source string.  Demonstrably does not work with
recent gcc and/or glibc on some platforms.

and

revision 1.69.2.1
date: 2005-03-25 20:42:21 -0400;  author: tgl;  state: Exp;  lines: +24 -8;
Prevent to_char(interval) from dumping core on month-related formats
when a zero-month interval is given.  Per discussion with Karel.

16 years agoRemove references to pgsql-ports and pgsql-patches mailing lists from
Tom Lane [Tue, 6 Jan 2009 17:28:15 +0000 (17:28 +0000)]
Remove references to pgsql-ports and pgsql-patches mailing lists from
various documentation, since those lists are now dead/deprecated.
Point to pgsql-bugs and/or pgsql-hackers as appropriate.

16 years agoFix logic in lazy vacuum to decide if it's worth trying to truncate the heap.
Heikki Linnakangas [Tue, 6 Jan 2009 14:56:13 +0000 (14:56 +0000)]
Fix logic in lazy vacuum to decide if it's worth trying to truncate the heap.
If the table was smaller than REL_TRUNCATE_FRACTION (= 16) pages, we always
tried to acquire AccessExclusiveLock on it even if there was no empty pages
at the end.

Report by Simon Riggs. Back-patch all the way to 7.4.

16 years agotag 7.4.23 REL7_4_23
Marc G. Fournier [Fri, 31 Oct 2008 03:15:21 +0000 (03:15 +0000)]
tag 7.4.23

16 years agoUpdate back-branch release notes.
Tom Lane [Thu, 30 Oct 2008 22:23:39 +0000 (22:23 +0000)]
Update back-branch release notes.

16 years agoTranslation updates
Peter Eisentraut [Thu, 30 Oct 2008 19:19:35 +0000 (19:19 +0000)]
Translation updates

16 years agoInstall a more robust solution for the problem of infinite error-processing
Tom Lane [Mon, 27 Oct 2008 19:37:56 +0000 (19:37 +0000)]
Install a more robust solution for the problem of infinite error-processing
recursion when we are unable to convert a localized error message to the
client's encoding.  We've been over this ground before, but as reported by
Ibrar Ahmed, it still didn't work in the case of conversion failures for
the conversion-failure message itself :-(.  Fix by installing a "circuit
breaker" that disables attempts to localize this message once we get into
recursion trouble.

Patch all supported branches, because it is in fact broken in all of them;
though I had to add some missing translations to the older branches in
order to expose the failure in the particular test case I was using.

16 years agoFix small bug in headline generation.
Teodor Sigaev [Fri, 17 Oct 2008 17:44:15 +0000 (17:44 +0000)]
Fix small bug in headline generation.
Patch from Sushant Sinha <sushant354@gmail.com>
http://archives.postgresql.org/pgsql-hackers/2008-07/msg00785.php

16 years agoFix SPI_getvalue and SPI_getbinval to range-check the given attribute number
Tom Lane [Thu, 16 Oct 2008 13:23:57 +0000 (13:23 +0000)]
Fix SPI_getvalue and SPI_getbinval to range-check the given attribute number
according to the TupleDesc's natts, not the number of physical columns in the
tuple.  The previous coding would do the wrong thing in cases where natts is
different from the tuple's column count: either incorrectly report error when
it should just treat the column as null, or actually crash due to indexing off
the end of the TupleDesc's attribute array.  (The second case is probably not
possible in modern PG versions, due to more careful handling of inheritance
cases than we once had.  But it's still a clear lack of robustness here.)

The incorrect error indication is ignored by all callers within the core PG
distribution, so this bug has no symptoms visible within the core code, but
it might well be an issue for add-on packages.  So patch all the way back.

16 years agoOptional argument should be optional.
Michael Meskes [Fri, 10 Oct 2008 12:19:03 +0000 (12:19 +0000)]
Optional argument should be optional.

16 years agoFix improper display of fractional seconds in interval values
Tom Lane [Thu, 2 Oct 2008 13:48:12 +0000 (13:48 +0000)]
Fix improper display of fractional seconds in interval values
when using --enable-integer-datetimes and a non-ISO datestyle.

Ron Mayer

16 years agotag for 7.4.22 REL7_4_22
Marc G. Fournier [Fri, 19 Sep 2008 03:30:27 +0000 (03:30 +0000)]
tag for 7.4.22

16 years agoUpdate back-branch release notes.
Tom Lane [Fri, 19 Sep 2008 02:46:08 +0000 (02:46 +0000)]
Update back-branch release notes.

16 years agoFix pg_dump docs to acknowledge that you can use -Z with plain text output. Pointed...
Tom Lane [Tue, 26 Aug 2008 00:03:52 +0000 (00:03 +0000)]
Fix pg_dump docs to acknowledge that you can use -Z with plain text output.  Pointed out by Daniel Migowski.

16 years agoFix pg_dump/pg_restore's ExecuteSqlCommand() to behave suitably if PQexec
Tom Lane [Sat, 16 Aug 2008 02:25:38 +0000 (02:25 +0000)]
Fix pg_dump/pg_restore's ExecuteSqlCommand() to behave suitably if PQexec
returns NULL instead of a PGresult.  The former coding would fail, which
is OK, but it neglected to give you the PQerrorMessage that might tell
you why.  In the oldest branches, there was another problem: it'd sometimes
report PQerrorMessage from the wrong connection.

16 years agoDo not allow Unique nodes to be scanned backwards. The code claimed that it
Tom Lane [Tue, 5 Aug 2008 21:29:01 +0000 (21:29 +0000)]
Do not allow Unique nodes to be scanned backwards.  The code claimed that it
would work, but in fact it didn't return the same rows when moving backwards
as when moving forwards.  This would have no visible effect in a DISTINCT
query (at least assuming the column datatypes use a strong definition of
equality), but it gave entirely wrong answers for DISTINCT ON queries.

16 years agoFix performance bug in write_syslog(): the code to preferentially break the
Tom Lane [Tue, 8 Jul 2008 22:18:18 +0000 (22:18 +0000)]
Fix performance bug in write_syslog(): the code to preferentially break the
log message at newlines cost O(N^2) for very long messages with few or no
newlines.  For messages in the megabyte range this became the dominant cost.
Per gripe from Achilleas Mantzios.

Patch all the way back, since this is a safe change with no portability
risks.  I am also thinking of increasing PG_SYSLOG_LIMIT, but that should
be done separately.

16 years agoFix estimate_num_groups() to assume that GROUP BY expressions yielding boolean
Tom Lane [Mon, 7 Jul 2008 20:25:40 +0000 (20:25 +0000)]
Fix estimate_num_groups() to assume that GROUP BY expressions yielding boolean
results always contribute two groups, regardless of the expression contents.
This is very substantially more accurate than the regular heuristic for
certain boolean tests like "col IS NULL".  Per gripe from Sam Mason.

Back-patch to all supported releases, since the behavior of
estimate_num_groups() hasn't changed all that much since 7.4.

16 years agoCreate a script to handle stamping release version numbers into files,
Tom Lane [Tue, 10 Jun 2008 18:09:26 +0000 (18:09 +0000)]
Create a script to handle stamping release version numbers into files,
replacing the tedious and error-prone manual process we've been using.

16 years agoFix datetime input functions to correctly detect integer overflow when
Tom Lane [Mon, 9 Jun 2008 19:34:40 +0000 (19:34 +0000)]
Fix datetime input functions to correctly detect integer overflow when
running on a 64-bit platform ... strtol() will happily return 64-bit
output in that case.  Per bug #4231 from Geoff Tolley.

16 years agotag 7.4.21 REL7_4_21
Tom Lane [Mon, 9 Jun 2008 00:16:58 +0000 (00:16 +0000)]
tag 7.4.21

16 years agoStamp 7.4.21 (except for configure.in/configure)
Tom Lane [Sun, 8 Jun 2008 22:15:45 +0000 (22:15 +0000)]
Stamp 7.4.21 (except for configure.in/configure)

16 years agoUpdate release notes for 8.3.3 et al.
Tom Lane [Sat, 7 Jun 2008 22:11:40 +0000 (22:11 +0000)]
Update release notes for 8.3.3 et al.

16 years agoFix pg_get_ruledef() so that negative numeric constants are parenthesized.
Tom Lane [Fri, 6 Jun 2008 18:00:09 +0000 (18:00 +0000)]
Fix pg_get_ruledef() so that negative numeric constants are parenthesized.
This is needed because :: casting binds more tightly than minus, so for
example -1::integer is not the same as (-1)::integer, and there are cases
where the difference is important.  In particular this caused a failure
in SELECT DISTINCT ... ORDER BY ... where expressions that should have
matched were seen as different by the parser; but I suspect that there
could be other cases where failure to parenthesize leads to subtler
semantic differences in reloaded rules.  Per report from Alexandr Popov.

16 years agoRemove link that pre-8.2 doc tools don't support. REL7_4_20
Tom Lane [Fri, 6 Jun 2008 05:34:03 +0000 (05:34 +0000)]
Remove link that pre-8.2 doc tools don't support.

16 years agotag 7.4.20
Tom Lane [Fri, 6 Jun 2008 04:37:07 +0000 (04:37 +0000)]
tag 7.4.20

16 years agoStamp 7.4.20 (except for configure.in/configure)
Tom Lane [Thu, 5 Jun 2008 23:56:42 +0000 (23:56 +0000)]
Stamp 7.4.20 (except for configure.in/configure)

16 years agoTranslation updates.
Tom Lane [Thu, 5 Jun 2008 23:38:03 +0000 (23:38 +0000)]
Translation updates.

16 years agoDraft release notes for upcoming back-branch updates.
Tom Lane [Wed, 4 Jun 2008 03:17:01 +0000 (03:17 +0000)]
Draft release notes for upcoming back-branch updates.

16 years agoImprove GRANT documentation to point out that UPDATE and DELETE typically
Tom Lane [Wed, 28 May 2008 00:46:12 +0000 (00:46 +0000)]
Improve GRANT documentation to point out that UPDATE and DELETE typically
require SELECT privilege as well, since you normally need to read existing
column values within such commands.  This behavior is according to spec,
but we'd never documented it before.  Per gripe from Volkan Yazici.

16 years agoBack-patch the 8.3 fix that prohibits TRUNCATE, CLUSTER, and REINDEX when the
Tom Lane [Tue, 27 May 2008 21:14:00 +0000 (21:14 +0000)]
Back-patch the 8.3 fix that prohibits TRUNCATE, CLUSTER, and REINDEX when the
current transaction has any open references to the target relation or index
(implying it has an active query using the relation).  Also back-patch the
8.2 fix that prohibits TRUNCATE and CLUSTER when there are pending
AFTER-trigger events.  Per suggestion from Heikki.

16 years agoAdjust timestamp regression tests to prevent two low-probability failure
Tom Lane [Sun, 25 May 2008 21:51:38 +0000 (21:51 +0000)]
Adjust timestamp regression tests to prevent two low-probability failure
cases.  Recent buildfarm experience shows that it is sometimes possible
to execute several SQL commands in less time than the granularity of
Windows' not-very-high-resolution gettimeofday(), leading to a failure
because the tests expect the value of now() to change and it doesn't.
Also, it was recognized some time ago that the same area of the tests
could fail if local midnight passes between the insertion and the checking
of the values for 'yesterday', 'tomorrow', etc.  Clean all this up per
ideas from myself and Greg Stark.

There remains a window for failure if the transaction block is entered
exactly at local midnight (so that 'now' and 'today' have the same value),
but that seems low-probability enough to live with.

Since the point of this change is mostly to eliminate buildfarm noise,
back-patch to all versions we are still actively testing.

16 years agoDon't try to close negative file descriptors, since this can cause
Magnus Hagander [Tue, 13 May 2008 20:53:54 +0000 (20:53 +0000)]
Don't try to close negative file descriptors, since this can cause
crashes on certain platforms. In particular, the MSVC runtime is known
to do this.

Fixes bug #4162, reported and diagnosed by Javier Pimas

16 years agoFix an ancient oversight in change_varattnos_of_a_node: it neglected to update
Tom Lane [Fri, 9 May 2008 22:38:05 +0000 (22:38 +0000)]
Fix an ancient oversight in change_varattnos_of_a_node: it neglected to update
varoattno along with varattno.  This resulted in having Vars that were not
seen as equal(), causing inheritance of the "same" constraint from different
parent relations to fail.  An example is

create table pp1 (f1 int check (f1>0));
create table cc1 (f2 text, f3 int) inherits (pp1);
create table cc2(f4 float) inherits(pp1,cc1);

Backpatch as far as 7.4.  (The test case still fails in 7.4, for reasons
that I don't feel like investigating at the moment.)

This is a backpatch commit only.  The fix will be applied in HEAD as part
of the upcoming pg_constraint patch.

16 years agoReplace developer FAQ with a reference to the wiki, which is where
Magnus Hagander [Tue, 22 Apr 2008 09:26:34 +0000 (09:26 +0000)]
Replace developer FAQ with a reference to the wiki, which is where
it now lives (per discussion). Leave the other FAQs alone for now.

16 years agoAdd link to major version release notes at the top of the minor
Magnus Hagander [Mon, 21 Apr 2008 09:44:54 +0000 (09:44 +0000)]
Add link to major version release notes at the top of the minor
version ones, to make it clear to users just browsing the notes
that there are a lot more changes available from whatever version
they are at than what's in the minor version release notes.

16 years agoFix several datatype input functions that were allowing unused bytes in their
Tom Lane [Fri, 11 Apr 2008 22:53:33 +0000 (22:53 +0000)]
Fix several datatype input functions that were allowing unused bytes in their
results to contain uninitialized, unpredictable values.  While this was okay
as far as the datatypes themselves were concerned, it's a problem for the
parser because occurrences of the "same" literal might not be recognized as
equal by datumIsEqual (and hence not by equal()).  It seems sufficient to fix
this in the input functions since the only critical use of equal() is in the
parser's comparisons of ORDER BY and DISTINCT expressions.
Per a trouble report from Marc Cousin.

Patch all the way back.  Interestingly, array_in did not have the bug before
8.2, which may explain why the issue went unnoticed for so long.

16 years agoFixed bug in PGTYPEStimestamp_sub that used pointers instead of the values to substract.
Michael Meskes [Thu, 10 Apr 2008 10:46:56 +0000 (10:46 +0000)]
Fixed bug in PGTYPEStimestamp_sub that used pointers instead of the values to substract.

17 years agoDefend against JOINs having more than 32K columns altogether. We cannot
Tom Lane [Sat, 5 Apr 2008 01:59:01 +0000 (01:59 +0000)]
Defend against JOINs having more than 32K columns altogether.  We cannot
currently support this because we must be able to build Vars referencing
join columns, and varattno is only 16 bits wide.  Perhaps this should be
improved in future, but considering that it never came up before, I'm not
sure the problem is worth much effort.  Per bug #4070 from Marcello
Ceschia.

The problem seems largely academic in 8.0 and 7.4, because they have
(different) O(N^2) performance issues with such wide joins, but
back-patch all the way anyway.

17 years agoAdjust DatumGetBool macro so that it isn't fooled by garbage in the Datum
Tom Lane [Tue, 25 Mar 2008 19:31:53 +0000 (19:31 +0000)]
Adjust DatumGetBool macro so that it isn't fooled by garbage in the Datum
to the left of the actual bool value.  While in most cases there won't be
any, our support for old-style user-defined functions violates the C spec
to the extent of calling functions that might return char or short through
a function pointer declared to return "char *", which we then coerce to
Datum.  It is not surprising that the result might contain garbage
high-order bits ... what is surprising is that we didn't see such cases
long ago.  Per report from Magnus.

This is a back-patch of a change that was made in HEAD almost exactly
a year ago.  I had refrained from back-patching at the time, but now
we find that this is *necessary* for contrib to work with gcc 4.3.

17 years agoAdd the missing cyrillic "Yo" characters ('e' and 'E' with two dots) to the
Heikki Linnakangas [Thu, 20 Mar 2008 10:52:57 +0000 (10:52 +0000)]
Add the missing cyrillic "Yo" characters ('e' and 'E' with two dots) to the
ISO_8859-5 <-> MULE_INTERNAL conversion tables.

This was discovered when trying to convert a string containing those characters
from ISO_8859-5 to Windows-1251, because we use MULE_INTERNAL/KOI8R as an
intermediate encoding between those two.

While the missing "Yo" was just an omission in the conversion tables, there are
a few other characters like the "Numero" sign ("No" as a single character) that
exists in all the other cyrillic encodings (win1251, ISO_8859-5 and cp866), but
not in KOI8R. Added comments about that.

Patch by Sergey Burladyan. Back-patch to 7.4.

17 years agoFix regexp substring matching (substring(string from pattern)) for the corner
Tom Lane [Wed, 19 Mar 2008 02:41:15 +0000 (02:41 +0000)]
Fix regexp substring matching (substring(string from pattern)) for the corner
case where there is a match to the pattern overall but the user has specified
a parenthesized subexpression and that subexpression hasn't got a match.
An example is substring('foo' from 'foo(bar)?').  This should return NULL,
since (bar) isn't matched, but it was mistakenly returning the whole-pattern
match instead (ie, 'foo').  Per bug #4044 from Rui Martins.

This has been broken since the beginning; patch in all supported versions.
The old behavior was sufficiently inconsistent that it's impossible to believe
anyone is depending on it.

17 years agoFix LISTEN/NOTIFY race condition reported by Laurent Birtz, by postponing
Tom Lane [Wed, 12 Mar 2008 20:12:48 +0000 (20:12 +0000)]
Fix LISTEN/NOTIFY race condition reported by Laurent Birtz, by postponing
pg_listener modifications commanded by LISTEN and UNLISTEN until the end
of the current transaction.  This allows us to hold the ExclusiveLock on
pg_listener until after commit, with no greater risk of deadlock than there
was before.  Aside from fixing the race condition, this gets rid of a
truly ugly kludge that was there before, namely having to ignore
HeapTupleBeingUpdated failures during NOTIFY.  There is a small potential
incompatibility, which is that if a transaction issues LISTEN or UNLISTEN
and then looks into pg_listener before committing, it won't see any resulting
row insertion or deletion, where before it would have.  It seems unlikely
that anyone would be depending on that, though.

17 years agoAdd support for dlopen on recent NetBSD/MIPS, per Rémi Zara.
Alvaro Herrera [Wed, 5 Mar 2008 21:20:51 +0000 (21:20 +0000)]
Add support for dlopen on recent NetBSD/MIPS, per Rémi Zara.

17 years agoIf RelationBuildDesc() fails to open a critical system index, PANIC with
Tom Lane [Wed, 27 Feb 2008 17:45:02 +0000 (17:45 +0000)]
If RelationBuildDesc() fails to open a critical system index, PANIC with
a relevant error message instead of just dumping core.  Odd that nobody
reported this before Darren Reed.

17 years agoUse our own getopt() and getopt_long() on Solaris, because that platform's
Tom Lane [Sun, 24 Feb 2008 05:22:44 +0000 (05:22 +0000)]
Use our own getopt() and getopt_long() on Solaris, because that platform's
versions don't handle long options the way we want.  Per Zdenek Kotala.

17 years agoAvoid trying to print a NULL char pointer in --describe-config. On some
Tom Lane [Sat, 23 Feb 2008 19:24:09 +0000 (19:24 +0000)]
Avoid trying to print a NULL char pointer in --describe-config.  On some
platforms this works, but on some it crashes.  Zdenek Kotala

17 years agoRepair VACUUM FULL bug introduced by HOT patch: the original way of
Tom Lane [Mon, 11 Feb 2008 19:15:00 +0000 (19:15 +0000)]
Repair VACUUM FULL bug introduced by HOT patch: the original way of
calculating a page's initial free space was fine, and should not have been
"improved" by letting PageGetHeapFreeSpace do it.  VACUUM FULL is going to
reclaim LP_DEAD line pointers later, so there is no need for a guard
against the page being too full of line pointers, and having one risks
rejecting pages that are perfectly good move destinations.

This also exposed a second bug, which is that the empty_end_pages logic
assumed that any page with no live tuples would get entered into the
fraged_pages list automatically (by virtue of having more free space than
the threshold in the do_frag calculation).  This assumption certainly
seems risky when a low fillfactor has been chosen, and even without
tunable fillfactor I think it could conceivably fail on a page with many
unused line pointers.  So fix the code to force do_frag true when notup
is true, and patch this part of the fix all the way back.

Per report from Tomas Szepe.

17 years agoFix an ancient oversight in libpq's handling of V3-protocol COPY OUT mode:
Tom Lane [Mon, 14 Jan 2008 18:46:49 +0000 (18:46 +0000)]
Fix an ancient oversight in libpq's handling of V3-protocol COPY OUT mode:
we need to be able to swallow NOTICE messages, and potentially also
ParameterStatus messages (although the latter would be a bit weird),
without exiting COPY OUT state.  Fix it, and adjust the protocol documentation
to emphasize the need for this.  Per off-list report from Alexander Galler.

17 years agoA long time ago, Peter pointed out that ruleutils.c didn't dump simple
Tom Lane [Sun, 6 Jan 2008 01:03:46 +0000 (01:03 +0000)]
A long time ago, Peter pointed out that ruleutils.c didn't dump simple
constant ORDER/GROUP BY entries properly:
http://archives.postgresql.org/pgsql-hackers/2001-04/msg00457.php
The original solution to that was in fact no good, as demonstrated by
today's report from Martin Pitt:
http://archives.postgresql.org/pgsql-bugs/2008-01/msg00027.php
We can't use the column-number-reference format for a constant that is
a resjunk targetlist entry, a case that was unfortunately not thought of
in the original discussion.  What we can do instead (which did not work
at the time, but does work in 7.3 and up) is to emit the constant with
explicit ::typename decoration, even if it otherwise wouldn't need it.
This is sufficient to keep the parser from thinking it's a column number
reference, and indeed is probably what the user must have done to get
such a thing into the querytree in the first place.

17 years agoStamp release 7.4.19. REL7_4_19
Tom Lane [Thu, 3 Jan 2008 21:42:17 +0000 (21:42 +0000)]
Stamp release 7.4.19.

Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067, CVE-2007-6600, CVE-2007-6601

17 years agoUpdate release notes for security releases.
Tom Lane [Thu, 3 Jan 2008 21:36:15 +0000 (21:36 +0000)]
Update release notes for security releases.

Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067, CVE-2007-6600, CVE-2007-6601

17 years agoThe original patch to disallow non-passworded connections to non-superusers
Tom Lane [Thu, 3 Jan 2008 21:28:55 +0000 (21:28 +0000)]
The original patch to disallow non-passworded connections to non-superusers
failed to cover all the ways in which a connection can be initiated in dblink.
Plug the remaining holes.  Also, disallow transient connections in functions
for which that feature makes no sense (because they are only sensible as
part of a sequence of operations on the same connection).  Joe Conway

Security: CVE-2007-6601

17 years agoMake standard maintenance operations (including VACUUM, ANALYZE, REINDEX,
Tom Lane [Thu, 3 Jan 2008 21:25:34 +0000 (21:25 +0000)]
Make standard maintenance operations (including VACUUM, ANALYZE, REINDEX,
and CLUSTER) execute as the table owner rather than the calling user, using
the same privilege-switching mechanism already used for SECURITY DEFINER
functions.  The purpose of this change is to ensure that user-defined
functions used in index definitions cannot acquire the privileges of a
superuser account that is performing routine maintenance.  While a function
used in an index is supposed to be IMMUTABLE and thus not able to do anything
very interesting, there are several easy ways around that restriction; and
even if we could plug them all, there would remain a risk of reading sensitive
information and broadcasting it through a covert channel such as CPU usage.

To prevent bypassing this security measure, execution of SET SESSION
AUTHORIZATION and SET ROLE is now forbidden within a SECURITY DEFINER context.

Thanks to Itagaki Takahiro for reporting this vulnerability.

Security: CVE-2007-6600

17 years agoFix assorted security-grade bugs in the regex engine. All of these problems
Tom Lane [Thu, 3 Jan 2008 20:49:15 +0000 (20:49 +0000)]
Fix assorted security-grade bugs in the regex engine.  All of these problems
are shared with Tcl, since it's their code to begin with, and the patches
have been copied from Tcl 8.5.0.  Problems:

CVE-2007-4769: Inadequate check on the range of backref numbers allows
crash due to out-of-bounds read.
CVE-2007-4772: Infinite loop in regex optimizer for pattern '($|^)*'.
CVE-2007-6067: Very slow optimizer cleanup for regex with a large NFA
representation, as well as crash if we encounter an out-of-memory condition
during NFA construction.

Part of the response to CVE-2007-6067 is to put a limit on the number of
states in the NFA representation of a regex.  This seems needed even though
the within-the-code problems have been corrected, since otherwise the code
could try to use very large amounts of memory for a suitably-crafted regex,
leading to potential DOS by driving the system into swap, activating a kernel
OOM killer, etc.

Although there are certainly plenty of ways to drive the system into effective
DOS with poorly-written SQL queries, these problems seem worth treating as
security issues because many applications might accept regex search patterns
from untrustworthy sources.

Thanks to Will Drewry of Google for reporting these problems.  Patches by Will
Drewry and Tom Lane.

Security: CVE-2007-4769, CVE-2007-4772, CVE-2007-6067

17 years agoInsert ARST into the list of known timezone abbreviations.
Tom Lane [Wed, 2 Jan 2008 22:05:36 +0000 (22:05 +0000)]
Insert ARST into the list of known timezone abbreviations.

17 years agoFix invalid ipv6 address in example. Per doc comment 7211.
Magnus Hagander [Wed, 2 Jan 2008 19:53:15 +0000 (19:53 +0000)]
Fix invalid ipv6 address in example. Per doc comment 7211.

17 years agoProvide a more helpful error message when there is an autoconf version
Bruce Momjian [Mon, 31 Dec 2007 17:27:57 +0000 (17:27 +0000)]
Provide a more helpful error message when there is an autoconf version
mismatch;  backpatch.

17 years agoMake path_recv() and poly_recv() reject paths/polygons containing no points.
Tom Lane [Tue, 18 Dec 2007 00:04:37 +0000 (00:04 +0000)]
Make path_recv() and poly_recv() reject paths/polygons containing no points.
The zero-point case is sensible so far as the data structure is concerned,
so maybe we ought to allow it sometime; but right now the textual input
routines for these types don't allow it, and it seems that not all the
functions for the types are prepared to cope.
Report and patch by Merlin Moncure.

17 years agoRequire a specific Autoconf version, instead of a lower bound only.
Peter Eisentraut [Mon, 26 Nov 2007 12:09:58 +0000 (12:09 +0000)]
Require a specific Autoconf version, instead of a lower bound only.

17 years agoFix buggy usage of vsnprintf in PL/Python by removing it altogether, instead
Alvaro Herrera [Fri, 23 Nov 2007 01:48:08 +0000 (01:48 +0000)]
Fix buggy usage of vsnprintf in PL/Python by removing it altogether, instead
relying on stringinfo.c.  This fixes a problem reported by Marko Kreen, but I
didn't use his patch, per subsequent discussion.

17 years agoFix "Page Layout" table. The second row should be ItemIdData, not
Tatsuo Ishii [Fri, 23 Nov 2007 00:39:59 +0000 (00:39 +0000)]
Fix "Page Layout" table. The second row should be ItemIdData, not
ItemPointerData.

17 years agoBackpatch: Fix tsvector_out() and tsquery_out() to escape backslesh, add test of...
Teodor Sigaev [Fri, 16 Nov 2007 17:31:16 +0000 (17:31 +0000)]
Backpatch: Fix tsvector_out() and tsquery_out() to escape backslesh, add test of that.
Patch by Bruce Momjian <bruce@momjian.us>

17 years agoHave crosstab variants treat NULL rowid as a category in its own right,
Joe Conway [Sat, 10 Nov 2007 05:02:22 +0000 (05:02 +0000)]
Have crosstab variants treat NULL rowid as a category in its own right,
per suggestion from Tom Lane. This fixes crash-bug reported by Stefan
Schwarzer.

17 years agoIf an index depends on no columns of its table, give it a dependency on the
Tom Lane [Thu, 8 Nov 2007 23:23:23 +0000 (23:23 +0000)]
If an index depends on no columns of its table, give it a dependency on the
whole table instead, to ensure that it goes away when the table is dropped.
Per bug #3723 from Sam Mason.

Backpatch as far as 7.4; AFAICT 7.3 does not have the issue, because it doesn't
have general-purpose expression indexes and so there must be at least one
column referenced by an index.

17 years agoAdded missing clause to parser.
Michael Meskes [Tue, 6 Nov 2007 08:33:32 +0000 (08:33 +0000)]
Added missing clause to parser.

17 years agoEnsure that the result of evaluating a function during constant-expression
Tom Lane [Thu, 11 Oct 2007 21:28:30 +0000 (21:28 +0000)]
Ensure that the result of evaluating a function during constant-expression
simplification gets detoasted before it is incorporated into a Const node.
Otherwise, if an immutable function were to return a TOAST pointer (an
unlikely case, but it can be made to happen), we would end up with a plan
that depends on the continued existence of the out-of-line toast datum.

17 years agoKeep the planner from failing on "WHERE false AND something IN (SELECT ...)".
Tom Lane [Thu, 4 Oct 2007 20:45:17 +0000 (20:45 +0000)]
Keep the planner from failing on "WHERE false AND something IN (SELECT ...)".
eval_const_expressions simplifies this to just "WHERE false", but we have
already done pull_up_IN_clauses so the IN join will be done, or at least
planned, anyway.  The trouble case comes when the sub-SELECT is itself a join
and we decide to implement the IN by unique-ifying the sub-SELECT outputs:
with no remaining reference to the output Vars in WHERE, we won't have
propagated the Vars up to the upper join point, leading to "variable not found
in subplan target lists" error.  Fix by adding an extra scan of in_info_list
and forcing all Vars mentioned therein to be propagated up to the IN join
point.  Per bug report from Miroslav Sulc.

17 years agoFix crash of to_tsvector() function on huge input: compareWORD()
Teodor Sigaev [Wed, 26 Sep 2007 10:44:54 +0000 (10:44 +0000)]
Fix crash of to_tsvector() function on huge input: compareWORD()
function didn't return correct result for word position greate than
limit.

Per report from Stuart Bishop <stuart@stuartbishop.net>

17 years agoFix bogus calculation of potential output string length in translate().
Tom Lane [Sat, 22 Sep 2007 05:36:14 +0000 (05:36 +0000)]
Fix bogus calculation of potential output string length in translate().

17 years agoUpdate release notes for last-minute fix. REL7_4_18
Tom Lane [Sun, 16 Sep 2007 03:03:55 +0000 (03:03 +0000)]
Update release notes for last-minute fix.

17 years agoFix aboriginal mistake in lazy VACUUM's code for truncating away
Tom Lane [Sun, 16 Sep 2007 02:38:25 +0000 (02:38 +0000)]
Fix aboriginal mistake in lazy VACUUM's code for truncating away
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.

17 years agoupdate configure for 7.4.18
Marc G. Fournier [Fri, 14 Sep 2007 23:19:58 +0000 (23:19 +0000)]
update configure for 7.4.18

17 years agoFix markup that doesn't work in back branches.
Tom Lane [Fri, 14 Sep 2007 16:01:03 +0000 (16:01 +0000)]
Fix markup that doesn't work in back branches.

17 years agoMinor editorialization on release notes.
Tom Lane [Fri, 14 Sep 2007 15:51:47 +0000 (15:51 +0000)]
Minor editorialization on release notes.

17 years agoTranslation updates
Peter Eisentraut [Thu, 13 Sep 2007 20:56:32 +0000 (20:56 +0000)]
Translation updates

17 years agoFix the database-wide version of CLUSTER to silently skip temp tables of
Alvaro Herrera [Wed, 12 Sep 2007 15:16:24 +0000 (15:16 +0000)]
Fix the database-wide version of CLUSTER to silently skip temp tables of
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.

17 years agoStamp releases 8.2.5, 8.1.10, 8.0.14, 7.4.18, 7.3.20.
Bruce Momjian [Tue, 11 Sep 2007 17:36:45 +0000 (17:36 +0000)]
Stamp releases 8.2.5, 8.1.10, 8.0.14, 7.4.18, 7.3.20.

Update FAQs for 8.2.5.

17 years agoStamp
Bruce Momjian [Tue, 11 Sep 2007 17:19:15 +0000 (17:19 +0000)]
Stamp

17 years agoFix aboriginal bug in _tarAddFile(): when complaining that the amount of data
Tom Lane [Wed, 29 Aug 2007 16:32:05 +0000 (16:32 +0000)]
Fix aboriginal bug in _tarAddFile(): when complaining that the amount of data
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.

17 years agoFix brain fade in DefineIndex(): it was continuing to access the table's
Tom Lane [Sat, 25 Aug 2007 19:08:44 +0000 (19:08 +0000)]
Fix brain fade in DefineIndex(): it was continuing to access the table's
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.

17 years agoFix combo_decrypt() to throw an error for zero-length input when using a
Tom Lane [Thu, 23 Aug 2007 16:16:20 +0000 (16:16 +0000)]
Fix combo_decrypt() to throw an error for zero-length input when using a
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.

17 years agoFix potential access-off-the-end-of-memory in varbit_out(): it fetched the
Tom Lane [Tue, 21 Aug 2007 02:40:33 +0000 (02:40 +0000)]
Fix potential access-off-the-end-of-memory in varbit_out(): it fetched the
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.

17 years agoFix a gradual memory leak in ExecReScanAgg(). Because the aggregation
Neil Conway [Wed, 8 Aug 2007 18:06:55 +0000 (18:06 +0000)]
Fix a gradual memory leak in ExecReScanAgg(). Because the aggregation
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.