]> granicus.if.org Git - postgresql/log
postgresql
13 years agoFix another bit of unlogged-table-induced breakage.
Robert Haas [Wed, 21 Sep 2011 14:32:30 +0000 (10:32 -0400)]
Fix another bit of unlogged-table-induced breakage.

Per bug #6205, reported by Abel Abraham Camarillo Ojeda.  This isn't a
particularly elegant fix, but I'm trying to minimize the chances of
causing yet another round of breakage.

Adjust regression tests to exercise this case.

13 years agoSuppress "unused function" warning when not HAVE_LOCALE_T.
Tom Lane [Tue, 20 Sep 2011 21:47:21 +0000 (17:47 -0400)]
Suppress "unused function" warning when not HAVE_LOCALE_T.

Forgot to consider this case ...

13 years agoImprove reporting of newlocale() failures in CREATE COLLATION.
Tom Lane [Tue, 20 Sep 2011 17:23:40 +0000 (13:23 -0400)]
Improve reporting of newlocale() failures in CREATE COLLATION.

The standardized errno code for "no such locale" failures is ENOENT, which
we were just reporting at face value, viz "No such file or directory".
Per gripe from Thom Brown, this might confuse users, so add an errdetail
message to clarify what it means.  Also, report newlocale() failures as
ERRCODE_INVALID_PARAMETER_VALUE rather than using
errcode_for_file_access(), since newlocale()'s errno values aren't
necessarily tied directly to file access failures.

13 years agoFix another Assert issue exposed by CLOBBER_CACHE_ALWAYS.
Tom Lane [Mon, 19 Sep 2011 03:46:04 +0000 (23:46 -0400)]
Fix another Assert issue exposed by CLOBBER_CACHE_ALWAYS.

plpgsql's exec_stmt_execsql was Assert'ing that a CachedPlanSource was
is_valid immediately after exec_prepare_plan.  The risk factor in this case
is that after building the prepared statement, exec_prepare_plan calls
exec_simple_check_plan, which might try to generate a generic plan --- and
with CLOBBER_CACHE_ALWAYS or other unusual causes of invalidation, that
could result in an invalidation.  However, that path could only be taken
for a SELECT query, for which we need not set mod_stmt.  So in this case
I think it's best to just remove the Assert; it's okay to look at a
slightly-stale querytree for what we need here.  Per buildfarm testing.

13 years agoFix Assert failure in new plancache code.
Tom Lane [Sat, 17 Sep 2011 05:47:33 +0000 (01:47 -0400)]
Fix Assert failure in new plancache code.

The regression tests were failing with CLOBBER_CACHE_ALWAYS enabled,
as reported by buildfarm member jaguar.  There was an Assert in
BuildCachedPlan that asserted that the CachedPlanSource hadn't been
invalidated since we called RevalidateCachedQuery, which in theory can't
happen because we are holding locks on all the relevant database objects.
However, CLOBBER_CACHE_ALWAYS generates a false positive by making an
invalidation happen anyway; and on reflection, that could also occur as a
result of a badly-timed sinval reset due to queue overflow.  We could just
remove the Assert and forge ahead with the not-really-stale querytree, but
it seems safer to do another RevalidateCachedQuery call just to make real
sure everything's OK.

13 years agoRemove debug logging for pgstat wait timeout.
Tom Lane [Fri, 16 Sep 2011 22:25:27 +0000 (18:25 -0400)]
Remove debug logging for pgstat wait timeout.

This reverts commit 79b2ee20c8a041a85dd230c4e787bef22edae57b, which proved
to not be very informative; it looks like the "pgstat wait timeout"
warnings in the buildfarm are just a symptom of running on heavily loaded
machines, and there isn't any weird mechanism causing them to appear.

To try to reduce the frequency of buildfarm failures from this effect,
increase PGSTAT_MAX_WAIT_TIME from 5 seconds to 10.

Also, arrange to not send a fresh inquiry message every single time through
the loop, as that seems more likely to cause problems (by swamping the
collector) than fix them.  We'll now send an inquiry the first time through
the delay loop, and every 640 msec thereafter.

13 years agoAdd FORCE_NOT_NULL support to the file_fdw foreign data wrapper.
Tom Lane [Fri, 16 Sep 2011 20:35:51 +0000 (16:35 -0400)]
Add FORCE_NOT_NULL support to the file_fdw foreign data wrapper.

This is implemented as a per-column boolean option, rather than trying
to match COPY's convention of a single option listing the column names.

Shigeru Hanada, reviewed by KaiGai Kohei

13 years agoAvoid unnecessary page-level SSI lock check in heap_insert().
Tom Lane [Fri, 16 Sep 2011 18:47:20 +0000 (14:47 -0400)]
Avoid unnecessary page-level SSI lock check in heap_insert().

As observed by Heikki, we need not conflict on heap page locks during an
insert; heap page locks are only aggregated tuple locks, they don't imply
locking "gaps" as index page locks do.  So we can avoid some unnecessary
conflicts, and also do the SSI check while not holding exclusive lock on
the target buffer.

Kevin Grittner, reviewed by Jeff Davis.  Back-patch to 9.1.

13 years agoEnsure generic plan gets used for a plpgsql expression with no parameters.
Tom Lane [Fri, 16 Sep 2011 16:31:23 +0000 (12:31 -0400)]
Ensure generic plan gets used for a plpgsql expression with no parameters.

Now that a NULL ParamListInfo pointer causes significantly different
behavior in plancache.c, be sure to pass it that way when the expression
is known not to reference any plpgsql variables.  Saves a few setup
cycles anyway.

13 years agogistendscan() forgot to free so->giststate.
Tom Lane [Fri, 16 Sep 2011 08:27:49 +0000 (04:27 -0400)]
gistendscan() forgot to free so->giststate.

This oversight led to a massive memory leak --- upwards of 10KB per tuple
--- during creation-time verification of an exclusion constraint based on a
GIST index.  In most other scenarios it'd just be a leak of 10KB that would
be recovered at end of query, so not too significant; though perhaps the
leak would be noticeable in a situation where a GIST index was being used
in a nestloop inner indexscan.  In any case, it's a real leak of long
standing, so patch all supported branches.  Per report from Harald Fuchs.

13 years agoRedesign the plancache mechanism for more flexibility and efficiency.
Tom Lane [Fri, 16 Sep 2011 04:42:53 +0000 (00:42 -0400)]
Redesign the plancache mechanism for more flexibility and efficiency.

Rewrite plancache.c so that a "cached plan" (which is rather a misnomer
at this point) can support generation of custom, parameter-value-dependent
plans, and can make an intelligent choice between using custom plans and
the traditional generic-plan approach.  The specific choice algorithm
implemented here can probably be improved in future, but this commit is
all about getting the mechanism in place, not the policy.

In addition, restructure the API to greatly reduce the amount of extraneous
data copying needed.  The main compromise needed to make that possible was
to split the initial creation of a CachedPlanSource into two steps.  It's
worth noting in particular that SPI_saveplan is now deprecated in favor of
SPI_keepplan, which accomplishes the same end result with zero data
copying, and no need to then spend even more cycles throwing away the
original SPIPlan.  The risk of long-term memory leaks while manipulating
SPIPlans has also been greatly reduced.  Most of this improvement is based
on use of the recently-added MemoryContextSetParent primitive.

13 years agoTeach the makefile used to build stand-alone libpq on Windows that libpq
Heikki Linnakangas [Wed, 14 Sep 2011 14:57:32 +0000 (17:57 +0300)]
Teach the makefile used to build stand-alone libpq on Windows that libpq
needs win32setlocale.c now. The cygwin and MSVC build scripts were changed
earlier, but this was neglected. This should fix bug report #6203 by Steve.

13 years agoIn the manual section on primary_conninfo, recommend using a role with
Heikki Linnakangas [Wed, 14 Sep 2011 06:30:32 +0000 (09:30 +0300)]
In the manual section on primary_conninfo, recommend using a role with
REPLICATION privileges, not SUPERUSER.

Fujii Masao

13 years agoSplit walsender.h in public/private headers
Alvaro Herrera [Mon, 12 Sep 2011 18:24:29 +0000 (15:24 -0300)]
Split walsender.h in public/private headers

This dramatically cuts short the number of headers the public one brings
into whatever includes it.

13 years agodeflist_to_tuplestore dumped core on an option with no value.
Tom Lane [Tue, 13 Sep 2011 15:36:49 +0000 (11:36 -0400)]
deflist_to_tuplestore dumped core on an option with no value.

Make it return NULL for the option_value, instead.

Per report from Frank van Vugt.  Back-patch to 8.4 where this code was
added.

13 years agoPropagate with_system_tzdata setting into initdb build.
Tom Lane [Tue, 13 Sep 2011 14:58:06 +0000 (10:58 -0400)]
Propagate with_system_tzdata setting into initdb build.

findtimezone.c needs to know this setting too.  Per Peter Eisentraut.

13 years agoIn the final emptying phase of the new GiST buffering build, set the
Heikki Linnakangas [Mon, 12 Sep 2011 10:00:44 +0000 (13:00 +0300)]
In the final emptying phase of the new GiST buffering build, set the
queuedForEmptying flag correctly on buffer when adding it to the queue.
Also, don't add buffer to the queue if it's there already. These were
harmless oversights; failing to set the flag just means that a buffer might
get added to the queue twice if more tuples are added to it (although that
can't actually happen at this point because all the upper buffers have
already been emptied), and having the same buffer twice in the emptying
queue is harmless. But better be tidy.

13 years agoInvent a new memory context primitive, MemoryContextSetParent.
Tom Lane [Sun, 11 Sep 2011 20:29:42 +0000 (16:29 -0400)]
Invent a new memory context primitive, MemoryContextSetParent.

This function will be useful for altering the lifespan of a context after
creation (for example, by creating it under a transient context and later
reparenting it to belong to a long-lived context).  It costs almost no new
code, since we can refactor what was there.  Per my proposal of yesterday.

13 years agoRemove no-longer-used variable.
Tom Lane [Sun, 11 Sep 2011 20:18:06 +0000 (16:18 -0400)]
Remove no-longer-used variable.

13 years agoRemove many -Wcast-qual warnings
Peter Eisentraut [Sun, 11 Sep 2011 18:54:32 +0000 (21:54 +0300)]
Remove many -Wcast-qual warnings

This addresses only those cases that are easy to fix by adding or
moving a const qualifier or removing an unnecessary cast.  There are
many more complicated cases remaining.

13 years agoFix additional format warning
Peter Eisentraut [Sun, 11 Sep 2011 12:19:54 +0000 (15:19 +0300)]
Fix additional format warning

Apparently, this only happens on 64-bit platforms.

13 years agoRemove double-quoting of table names in clusterdb. BACKWARD COMPABILITY
Bruce Momjian [Sat, 10 Sep 2011 20:39:02 +0000 (16:39 -0400)]
Remove double-quoting of table names in clusterdb.  BACKWARD COMPABILITY
BREAKAGE.

Remove double-quoting of index/table names in reindexdb.  BACKWARD
COMPABILITY BREAKAGE.

Document thate user/database names are preserved with double-quoting by
command-line tools like vacuumdb.

13 years agoAdd missing format attributes
Peter Eisentraut [Sat, 10 Sep 2011 20:12:46 +0000 (23:12 +0300)]
Add missing format attributes

Add __attribute__ decorations for printf format checking to the places that
were missing them.  Fix the resulting warnings.  Add
-Wmissing-format-attribute to the standard set of warnings for GCC, so these
don't happen again.

The warning fixes here are relatively harmless.  The one serious problem
discovered by this was already committed earlier in
cf15fb5cabfbc71e07be23cfbc813daee6c5014f.

13 years agoAdd datatype directory to SUBDIRS.
Itagaki Takahiro [Sat, 10 Sep 2011 19:07:12 +0000 (04:07 +0900)]
Add datatype directory to SUBDIRS.
New header datatype/timestamp.h should be installed for server-side dev.

13 years agoDocument that only user-defined columns are expanded by SELECT *.
Bruce Momjian [Sat, 10 Sep 2011 14:45:55 +0000 (10:45 -0400)]
Document that only user-defined columns are expanded by SELECT *.

13 years agoRemove unnecessary MATCH FULL specification in example.
Bruce Momjian [Sat, 10 Sep 2011 13:24:05 +0000 (09:24 -0400)]
Remove unnecessary MATCH FULL specification in example.

Reported by Grzegorz Szpetkowski.

13 years agoTry to un-break MSVC build.
Tom Lane [Sat, 10 Sep 2011 02:57:08 +0000 (22:57 -0400)]
Try to un-break MSVC build.

I thought we had enough infrastructure to absorb CPPFLAGS changes from
the makefiles, but buildfarm says otherwise.

13 years agoSimplify handling of the timezone GUC by making initdb choose the default.
Tom Lane [Fri, 9 Sep 2011 21:59:11 +0000 (17:59 -0400)]
Simplify handling of the timezone GUC by making initdb choose the default.

We were doing some amazingly complicated things in order to avoid running
the very expensive identify_system_timezone() procedure during GUC
initialization.  But there is an obvious fix for that, which is to do it
once during initdb and have initdb install the system-specific default into
postgresql.conf, as it already does for most other GUC variables that need
system-environment-dependent defaults.  This means that the timezone (and
log_timezone) settings no longer have any magic behavior in the server.
Per discussion.

13 years agoMove Timestamp/Interval typedefs and basic macros into datatype/timestamp.h.
Tom Lane [Fri, 9 Sep 2011 17:23:41 +0000 (13:23 -0400)]
Move Timestamp/Interval typedefs and basic macros into datatype/timestamp.h.

As per my recent proposal, this refactors things so that these typedefs and
macros are available in a header that can be included in frontend-ish code.
I also changed various headers that were undesirably including
utils/timestamp.h to include datatype/timestamp.h instead.  Unsurprisingly,
this showed that half the system was getting utils/timestamp.h by way of
xlog.h.

No actual code changes here, just header refactoring.

13 years agoround() is not portable. Use rint().
Tom Lane [Thu, 8 Sep 2011 20:37:40 +0000 (16:37 -0400)]
round() is not portable.  Use rint().

13 years agoTweak string for uniformity
Alvaro Herrera [Wed, 7 Sep 2011 21:19:32 +0000 (18:19 -0300)]
Tweak string for uniformity

13 years agoAdd missing format argument to ecpg_log() call
Peter Eisentraut [Thu, 8 Sep 2011 19:09:08 +0000 (22:09 +0300)]
Add missing format argument to ecpg_log() call

13 years agoFix typo and reword the sentence.
Heikki Linnakangas [Thu, 8 Sep 2011 15:17:57 +0000 (18:17 +0300)]
Fix typo and reword the sentence.

13 years agoBuffering GiST index build algorithm.
Heikki Linnakangas [Thu, 8 Sep 2011 14:51:23 +0000 (17:51 +0300)]
Buffering GiST index build algorithm.

When building a GiST index that doesn't fit in cache, buffers are attached
to some internal nodes in the index. This speeds up the build by avoiding
random I/O that would otherwise be needed to traverse all the way down the
tree to the find right leaf page for tuple.

Alexander Korotkov

13 years agoOne last round of copy-editing for the 9.1 release notes.
Tom Lane [Thu, 8 Sep 2011 04:53:11 +0000 (00:53 -0400)]
One last round of copy-editing for the 9.1 release notes.

Also set the documented release date to 2011-09-12.

13 years agoFix corner case bug in numeric to_char().
Tom Lane [Wed, 7 Sep 2011 21:06:10 +0000 (17:06 -0400)]
Fix corner case bug in numeric to_char().

Trailing-zero stripping applied by the FM specifier could strip zeroes
to the left of the decimal point, for a format with no digit positions
after the decimal point (such as "FM999.").

Reported and diagnosed by Marti Raudsepp, though I didn't use his patch.

13 years agoAllow bcc32 and win32 batch files to compile libpq.
Bruce Momjian [Wed, 7 Sep 2011 19:43:50 +0000 (15:43 -0400)]
Allow bcc32 and win32 batch files to compile libpq.

Backpatch to 9.1.

By Hiroshi Saito

13 years agoIn pg_upgrade, disallow migration of 8.3 clusters using contrib/ltree
Bruce Momjian [Wed, 7 Sep 2011 18:42:34 +0000 (14:42 -0400)]
In pg_upgrade, disallow migration of 8.3 clusters using contrib/ltree
because its internal format was changed in 8.4.

Backpatch to 9.0 and 9.1.

Report by depesz, diagnosis by Tom.

13 years agoFix typo in error message.
Tom Lane [Wed, 7 Sep 2011 17:29:26 +0000 (13:29 -0400)]
Fix typo in error message.

Per Euler Taveira de Oliveira.

13 years agoFix get_name_for_var_field() to deal with RECORD Params.
Tom Lane [Wed, 7 Sep 2011 17:01:15 +0000 (13:01 -0400)]
Fix get_name_for_var_field() to deal with RECORD Params.

With 9.1's use of Params to pass down values from NestLoop join nodes
to their inner plans, it is possible for a Param to have type RECORD, in
which case the set of fields comprising the value isn't determinable by
inspection of the Param alone.  However, just as with a Var of type RECORD,
we can find out what we need to know if we can locate the expression that
the Param represents.  We already knew how to do this in get_parameter(),
but I'd overlooked the need to be able to cope in get_name_for_var_field(),
which led to EXPLAIN failing with "record type has not been registered".

To fix, refactor the search code in get_parameter() so it can be used by
both functions.

Per report from Marti Raudsepp.

13 years agoHave pgrminclude skip files that use CppAsString2 because CppAsString2
Bruce Momjian [Wed, 7 Sep 2011 16:59:17 +0000 (12:59 -0400)]
Have pgrminclude skip files that use CppAsString2 because CppAsString2
will expaned undefined identifiers.

13 years agoFix bug introduced by pgrminclude where the tablespace version name was
Bruce Momjian [Wed, 7 Sep 2011 16:41:16 +0000 (12:41 -0400)]
Fix bug introduced by pgrminclude where the tablespace version name was
not expanded.

Bump catalog version number to force initdb for all tablespaces.

13 years agoFix to_date() and to_timestamp() to handle year masks of length < 4 so
Bruce Momjian [Wed, 7 Sep 2011 13:47:51 +0000 (09:47 -0400)]
Fix to_date() and to_timestamp() to handle year masks of length < 4 so
they wrap toward year 2020, rather than the inconsistent behavior we had
before.

13 years agoRevert documentation patch about NEW/OLD and triggers.
Bruce Momjian [Wed, 7 Sep 2011 13:24:01 +0000 (09:24 -0400)]
Revert documentation patch about NEW/OLD and triggers.

Backpatch to 9.0 and 9.1.

Patch from Josh Kupershmidt.

13 years agoPartially revoke attempt to improve performance with many savepoints.
Simon Riggs [Wed, 7 Sep 2011 11:11:26 +0000 (12:11 +0100)]
Partially revoke attempt to improve performance with many savepoints.
Maintain difference between subtransaction release and commit introduced
by earlier patch.

13 years agoEmit cascaded standby message on shutdown only when appropriate.
Simon Riggs [Wed, 7 Sep 2011 08:09:47 +0000 (09:09 +0100)]
Emit cascaded standby message on shutdown only when appropriate.
Adds additional test for active walsenders and closes a race
condition for when we failover when a new walsender was connecting.

Reported and fixed bu Fujii Masao. Review by Heikki Linnakangas

13 years agoProperly document the existance of OLD/NEW trigger pl/pgsql trigger
Bruce Momjian [Wed, 7 Sep 2011 02:54:16 +0000 (22:54 -0400)]
Properly document the existance of OLD/NEW trigger pl/pgsql trigger
fields.

Backpatch to 9.0 and 9.1.

Report from Pavel Stehule, patch from Josh Kupershmidt

13 years agoFix spelling mistake in pgpass documentation change.
Bruce Momjian [Tue, 6 Sep 2011 23:42:46 +0000 (19:42 -0400)]
Fix spelling mistake in pgpass documentation change.

Per Peter.

13 years agoAdd documentation suggestion about adding a comment to the top of
Bruce Momjian [Tue, 6 Sep 2011 21:32:14 +0000 (17:32 -0400)]
Add documentation suggestion about adding a comment to the top of
pgpass.

Backpatch to 9.1.

13 years agoImprove comment about handling of temp tables in shared-inval code.
Tom Lane [Tue, 6 Sep 2011 21:05:48 +0000 (17:05 -0400)]
Improve comment about handling of temp tables in shared-inval code.

13 years agoCorrect ancient logic mistake in assertion
Peter Eisentraut [Tue, 6 Sep 2011 20:05:02 +0000 (23:05 +0300)]
Correct ancient logic mistake in assertion

Found by gcc -Wlogical-op

13 years agoFix plpgsql "PERFORM" markup.
Bruce Momjian [Tue, 6 Sep 2011 19:20:14 +0000 (15:20 -0400)]
Fix plpgsql "PERFORM" markup.

Backpatch to 9.0 and 9.1.

13 years agoAvoid possibly accessing off the end of memory in SJIS2004 conversion.
Tom Lane [Tue, 6 Sep 2011 18:50:28 +0000 (14:50 -0400)]
Avoid possibly accessing off the end of memory in SJIS2004 conversion.

The code in shift_jis_20042euc_jis_2004() would fetch two bytes even when
only one remained in the string.  Since conversion functions aren't
supposed to assume null-terminated input, this poses a small risk of
fetching past the end of memory and incurring SIGSEGV.  No such crash has
been identified in the field, but we've certainly seen the equivalent
happen in other code paths, so patch this one all the way back.

Report and patch by Noah Misch.

13 years agoAvoid possibly accessing off the end of memory in examine_attribute().
Tom Lane [Tue, 6 Sep 2011 18:35:19 +0000 (14:35 -0400)]
Avoid possibly accessing off the end of memory in examine_attribute().

Since the last couple of columns of pg_type are often NULL,
sizeof(FormData_pg_type) can be an overestimate of the actual size of the
tuple data part.  Therefore memcpy'ing that much out of the catalog cache,
as analyze.c was doing, poses a small risk of copying past the end of
memory and incurring SIGSEGV.  No such crash has been identified in the
field, but we've certainly seen the equivalent happen in other code paths,
so patch this one all the way back.

Per valgrind testing by Noah Misch, though this is not his proposed patch.
I chose to use SearchSysCacheCopy1 rather than inventing special-purpose
infrastructure for copying only the minimal part of a pg_type tuple.

13 years agoDocument PERFORM limitation when using WITH queries.
Bruce Momjian [Tue, 6 Sep 2011 17:41:28 +0000 (13:41 -0400)]
Document PERFORM limitation when using WITH queries.

Backpatch to 9.0 and 9.1.

Report from depstein@alliedtesting.com.

13 years agoAdd an "incompatibility" entry to 9.1 release notes about CREATE EXTENSION.
Tom Lane [Tue, 6 Sep 2011 16:36:40 +0000 (12:36 -0400)]
Add an "incompatibility" entry to 9.1 release notes about CREATE EXTENSION.

We've now seen more than one gripe from somebody who didn't get the memo
about how to install contrib modules in 9.1.  Try to make it a little more
prominent that you aren't supposed to call the scripts directly anymore.

13 years agoUpdate type-conversion documentation for long-ago changes.
Tom Lane [Tue, 6 Sep 2011 16:14:51 +0000 (12:14 -0400)]
Update type-conversion documentation for long-ago changes.

This example wasn't updated when we changed the behavior of bpcharlen()
in 8.0, nor when we changed the number of parameters taken by the bpchar()
cast function in 7.3.  Per report from lsliang.

13 years agoProperly document semphore requirements by accounting for worker
Bruce Momjian [Tue, 6 Sep 2011 15:08:32 +0000 (11:08 -0400)]
Properly document semphore requirements by accounting for worker
processes.

Backpatch to 9.1 and 9.0.

Submitted by Anton Yuzhaninov, confirmed by Robert Haas

13 years agoAdd documentation link to strftime supported options.
Bruce Momjian [Tue, 6 Sep 2011 02:58:10 +0000 (22:58 -0400)]
Add documentation link to strftime supported options.

13 years agoAdd C comment about why we send cache invalidation messages for
Bruce Momjian [Tue, 6 Sep 2011 02:08:14 +0000 (22:08 -0400)]
Add C comment about why we send cache invalidation messages for
session-local objects.

13 years agoAdjust translator comment format to xgettext expectations
Alvaro Herrera [Mon, 5 Sep 2011 21:52:49 +0000 (18:52 -0300)]
Adjust translator comment format to xgettext expectations

13 years agoMark some untranslatable messages with errmsg_internal
Alvaro Herrera [Mon, 5 Sep 2011 20:47:18 +0000 (17:47 -0300)]
Mark some untranslatable messages with errmsg_internal

13 years agoImprove "invalid byte sequence for encoding" message
Peter Eisentraut [Mon, 5 Sep 2011 20:36:06 +0000 (23:36 +0300)]
Improve "invalid byte sequence for encoding" message

It used to say

ERROR:  invalid byte sequence for encoding "UTF8": 0xdb24

Change this to

ERROR:  invalid byte sequence for encoding "UTF8": 0xdb 0x24

to make it clear that this is a byte sequence and not a code point.

Also fix the adjacent "character has no equivalent" message that has
the same issue.

13 years agoAdd mention that UTC really means UT1.
Bruce Momjian [Mon, 5 Sep 2011 19:37:58 +0000 (15:37 -0400)]
Add mention that UTC really means UT1.

Backpatch to 9.1.

13 years agoUpdate time zone data files to tzdata release 2011i.
Tom Lane [Mon, 5 Sep 2011 18:46:31 +0000 (14:46 -0400)]
Update time zone data files to tzdata release 2011i.

DST law changes in Canada, Egypt, Russia, Samoa, South Sudan.

13 years agoDocument that contrib/pgtrgm only processes ASCII alphanumeric
Bruce Momjian [Mon, 5 Sep 2011 17:24:45 +0000 (13:24 -0400)]
Document that contrib/pgtrgm only processes ASCII alphanumeric
characters.

Backpatch to 9.0 and 9.1.

13 years agoGuard against using plperl's Makefile without specifying --with-perl.
Tom Lane [Mon, 5 Sep 2011 00:07:34 +0000 (20:07 -0400)]
Guard against using plperl's Makefile without specifying --with-perl.

The $(PERL) macro will be set by configure if it finds perl at all,
but $(perl_privlibexp) isn't configured unless you said --with-perl.
This results in confusing error messages if someone cd's into
src/pl/plperl and tries to build there despite the configure omission,
as reported by Tomas Vondra in bug #6198.  Add simple checks to
provide a more useful report, while not disabling other use of the
makefile such as "make clean".

Back-patch to 9.0, which is as far as the patch applies easily.

13 years agoChange get_variable_numdistinct's API to flag default estimates explicitly.
Tom Lane [Sun, 4 Sep 2011 19:41:49 +0000 (15:41 -0400)]
Change get_variable_numdistinct's API to flag default estimates explicitly.

Formerly, callers tested for DEFAULT_NUM_DISTINCT, which had the problem
that a perfectly solid estimate might be mistaken for a content-free
default.

13 years agoDig down into sub-selects to look for column statistics.
Tom Lane [Sun, 4 Sep 2011 19:13:46 +0000 (15:13 -0400)]
Dig down into sub-selects to look for column statistics.

If a sub-select's output column is a simple Var, recursively look for
statistics applying to that Var, and use them if available.  The need for
this was foreseen ages ago, but we didn't have enough infrastructure to do
it with reasonable speed until just now.

We punt and stick with default estimates if the subquery uses set
operations, GROUP BY, or DISTINCT, since those operations would change the
underlying column statistics (particularly, the relative frequencies of
different values) beyond recognition.  This means that the types of
sub-selects for which this improvement applies are fairly limited, since
most subqueries satisfying those restrictions would have gotten flattened
into the parent query anyway.  But it does help for some cases, such as
subqueries with ORDER BY or LIMIT.

13 years agoCan't print PlannerGlobal's subroots list in outfuncs.
Tom Lane [Sun, 4 Sep 2011 18:43:52 +0000 (14:43 -0400)]
Can't print PlannerGlobal's subroots list in outfuncs.

Since the subroots will surely link back to the same glob struct, this
necessarily leads to infinite recursion.  Doh.  Found while trying to
debug some other code.

13 years agoClean up the #include mess a little.
Tom Lane [Sun, 4 Sep 2011 05:13:16 +0000 (01:13 -0400)]
Clean up the #include mess a little.

walsender.h should depend on xlog.h, not vice versa.  (Actually, the
inclusion was circular until a couple hours ago, which was even sillier;
but Bruce broke it in the expedient rather than logically correct
direction.)  Because of that poor decision, plus blind application of
pgrminclude, we had a situation where half the system was depending on
xlog.h to include such unrelated stuff as array.h and guc.h.  Clean up
the header inclusion, and manually revert a lot of what pgrminclude had
done so things build again.

This episode reinforces my feeling that pgrminclude should not be run
without adult supervision.  Inclusion changes in header files in particular
need to be reviewed with great care.  More generally, it'd be good if we
had a clearer notion of module layering to dictate which headers can sanely
include which others ... but that's a big task for another day.

13 years agoRemove unnecessary and circular #include.
Tom Lane [Sun, 4 Sep 2011 02:14:45 +0000 (22:14 -0400)]
Remove unnecessary and circular #include.

storage/proc.h should not include replication/syncrep.h, especially not
when the latter includes storage/proc.h; but in any case this was a pretty
poor thing from a modular layering standpoint.

13 years agowalsender.h doesn't need xlog.h, per Tom.
Bruce Momjian [Sun, 4 Sep 2011 01:25:00 +0000 (21:25 -0400)]
walsender.h doesn't need xlog.h, per Tom.

13 years agoMove AllowCascadeReplication() define from xlog.h to replication include
Bruce Momjian [Sun, 4 Sep 2011 00:46:19 +0000 (20:46 -0400)]
Move AllowCascadeReplication() define from xlog.h to replication include
file.

Per suggestion from Alvaro.

13 years agoRemove find_lt sgml tool, as it is not needed.
Bruce Momjian [Sat, 3 Sep 2011 23:08:59 +0000 (19:08 -0400)]
Remove find_lt sgml tool, as it is not needed.

Per suggestion from Peter.

13 years agoFix typo in pg_srand48 (srand48 in older branches).
Tom Lane [Sat, 3 Sep 2011 20:17:34 +0000 (16:17 -0400)]
Fix typo in pg_srand48 (srand48 in older branches).

">" should be ">>".  This typo results in failure to use all of the bits
of the provided seed.

This might rise to the level of a security bug if we were relying on
srand48 for any security-critical purposes, but we are not --- in fact,
it's not used at all unless the platform lacks srandom(), which is
improbable.  Even on such a platform the exposure seems minimal.

Reported privately by Andres Freund.

13 years agoRearrange planner to save the whole PlannerInfo (subroot) for a subquery.
Tom Lane [Sat, 3 Sep 2011 19:35:12 +0000 (15:35 -0400)]
Rearrange planner to save the whole PlannerInfo (subroot) for a subquery.

Formerly, set_subquery_pathlist and other creators of plans for subqueries
saved only the rangetable and rowMarks lists from the lower-level
PlannerInfo.  But there's no reason not to remember the whole PlannerInfo,
and indeed this turns out to simplify matters in a number of places.

The immediate reason for doing this was so that the subroot will still be
accessible when we're trying to extract column statistics out of an
already-planned subquery.  But now that I've done it, it seems like a good
code-beautification effort in its own right.

I also chose to get rid of the transient subrtable and subrowmark fields in
SubqueryScan nodes, in favor of having setrefs.c look up the subquery's
RelOptInfo.  That required changing all the APIs in setrefs.c to pass
PlannerInfo not PlannerGlobal, which was a large but quite mechanical
transformation.

One side-effect not foreseen at the beginning is that this finally broke
inheritance_planner's assumption that replanning the same subquery RTE N
times would necessarily give interchangeable results each time.  That
assumption was always pretty risky, but now we really have to make a
separate RTE for each instance so that there's a place to carry the
separate subroots.

13 years agoAdd archive_command example
Peter Eisentraut [Fri, 2 Sep 2011 22:29:09 +0000 (01:29 +0300)]
Add archive_command example

13 years agoWhitespace adjustment for consistency in the file
Peter Eisentraut [Fri, 2 Sep 2011 22:28:05 +0000 (01:28 +0300)]
Whitespace adjustment for consistency in the file

13 years agoTeach ANALYZE to clear pg_class.relhassubclass when appropriate.
Tom Lane [Fri, 2 Sep 2011 18:29:31 +0000 (14:29 -0400)]
Teach ANALYZE to clear pg_class.relhassubclass when appropriate.

In the past, relhassubclass always remained true if a relation had ever had
child relations, even if the last subclass was long gone.  While this had
only marginal performance implications in most cases, it was annoying, and
I'm now considering some planner changes that would raise the cost of a
false positive.  It was previously impractical to fix this because of race
condition concerns.  However, given the recent change that made tablecmds.c
take ShareExclusiveLock on relations that are gaining a child (commit
fbcf4b92aa64d4577bcf25925b055316b978744a), we can now allow ANALYZE to
clear the flag when it's no longer relevant.  There is no additional
locking cost to do so, since ANALYZE takes ShareExclusiveLock anyway.

13 years agoFix brace indentation of commit 63d06ef59156719efd0208c62e764a69611b3f12 to fit Postg...
Michael Meskes [Fri, 2 Sep 2011 07:45:11 +0000 (09:45 +0200)]
Fix brace indentation of commit 63d06ef59156719efd0208c62e764a69611b3f12 to fit PostgreSQL style.

13 years agoImprove method of avoiding fcinfo compile errors.
Bruce Momjian [Thu, 1 Sep 2011 18:15:36 +0000 (14:15 -0400)]
Improve method of avoiding fcinfo compile errors.

Fix pgrminclude C comment marker.

13 years agoRemove spurious comma. Spotted by Tom.
Heikki Linnakangas [Thu, 1 Sep 2011 16:59:09 +0000 (19:59 +0300)]
Remove spurious comma. Spotted by Tom.

13 years agoAdd C comment about needed include.
Bruce Momjian [Thu, 1 Sep 2011 16:53:45 +0000 (12:53 -0400)]
Add C comment about needed include.

13 years agolibpq compiles various pgport files like ecpg does, and needs similar Makefile
Heikki Linnakangas [Thu, 1 Sep 2011 15:58:50 +0000 (18:58 +0300)]
libpq compiles various pgport files like ecpg does, and needs similar Makefile
changes for the win32 setlocale() wrapper I put into ecpg, to make it compile
on MinGW.

13 years agoPut back improperly removed #include.
Tom Lane [Thu, 1 Sep 2011 15:57:09 +0000 (11:57 -0400)]
Put back improperly removed #include.

13 years agoAdd C comment about necessary NetBSD include.
Bruce Momjian [Thu, 1 Sep 2011 15:20:47 +0000 (11:20 -0400)]
Add C comment about necessary NetBSD include.

13 years agoAdd missing hba.h include for NetBSD.
Bruce Momjian [Thu, 1 Sep 2011 14:34:04 +0000 (10:34 -0400)]
Add missing hba.h include for NetBSD.

13 years agoIn SGML we only need to worry about "<", not ">"; update scripts.
Bruce Momjian [Thu, 1 Sep 2011 14:17:04 +0000 (10:17 -0400)]
In SGML we only need to worry about "<", not ">";  update scripts.

13 years agoRemove unnecessary #include references, per pgrminclude script.
Bruce Momjian [Thu, 1 Sep 2011 14:03:22 +0000 (10:03 -0400)]
Remove unnecessary #include references, per pgrminclude script.

13 years agoIn ecpglib restore LC_NUMERIC in case of an error.
Michael Meskes [Thu, 1 Sep 2011 13:27:38 +0000 (15:27 +0200)]
In ecpglib restore LC_NUMERIC in case of an error.

13 years agoMinor improvements to mbregress.sh script.
Robert Haas [Thu, 1 Sep 2011 13:21:10 +0000 (09:21 -0400)]
Minor improvements to mbregress.sh script.

1. Use new dropdb --if-exists option, to avoid alarming the user if
   the database being dropped doesn't already exist.
2. Bail out if createdb fails.
3. exit 1 if the checks fail.
4. Make it executable.

Josh Kupershmidt, with some kibitzing by me.

13 years agoUserspace access vector cache for contrib/sepgsql.
Robert Haas [Thu, 1 Sep 2011 12:37:33 +0000 (08:37 -0400)]
Userspace access vector cache for contrib/sepgsql.

KaiGai Kohei

13 years agoFix "is db labeled test?" in chkselinuxenv script.
Robert Haas [Thu, 1 Sep 2011 12:28:26 +0000 (08:28 -0400)]
Fix "is db labeled test?" in chkselinuxenv script.

Don't test whether the number of labels is numerically equal to zero;
count(*) isn't going return zero anyway, and the current coding blows
up if it returns an empty string or an error.

13 years agoRemove "fmgr.h" include in cube contrib --- caused crash on a Gentoo
Bruce Momjian [Thu, 1 Sep 2011 11:22:01 +0000 (07:22 -0400)]
Remove "fmgr.h" include in cube contrib --- caused crash on a Gentoo
builfarm member.

13 years agoFix MinGW build, broken by my previous patch to add a setlocale() wrapper
Heikki Linnakangas [Thu, 1 Sep 2011 11:02:40 +0000 (14:02 +0300)]
Fix MinGW build, broken by my previous patch to add a setlocale() wrapper
on Windows. ecpglib doesn't link with libpgport, but picks and compiles
the .c files it needs individually. To cope with that, move the setlocale()
wrapper from chklocale.c to a separate setlocale.c file, and include that
in ecpglib.

13 years agosetlocale() on Windows doesn't work correctly if the locale name contains
Heikki Linnakangas [Thu, 1 Sep 2011 08:08:32 +0000 (11:08 +0300)]
setlocale() on Windows doesn't work correctly if the locale name contains
dots. I previously worked around this in initdb, mapping the known
problematic locale names to aliases that work, but Hiroshi Inoue pointed
out that that's not enough because even if you use one of the aliases, like
"Chinese_HKG", setlocale(LC_CTYPE, NULL) returns back the long form, ie.
"Chinese_Hong Kong S.A.R.". When we try to restore an old locale value by
passing that value back to setlocale(), it fails. Note that you are affected
by this bug also if you use one of those short-form names manually, so just
reverting the hack in initdb won't fix it.

To work around that, move the locale name mapping from initdb to a wrapper
around setlocale(), so that the mapping is invoked on every setlocale() call.

Also, add a few checks for failed setlocale() calls in the backend. These
calls shouldn't fail, and if they do there isn't much we can do about it,
but at least you'll get a warning.

Backpatch to 9.1, where the initdb hack was introduced. The Windows bug
affects older versions too if you set locale manually to one of the aliases,
but given the lack of complaints from the field, I'm hesitent to backpatch.

13 years agoMove the line to undefine setlocale() macro on Win32 outside USE_REPL_SNPRINTF
Heikki Linnakangas [Thu, 1 Sep 2011 06:13:37 +0000 (09:13 +0300)]
Move the line to undefine setlocale() macro on Win32 outside USE_REPL_SNPRINTF
ifdef block. It has nothing to do with whether the replacement snprintf
function is used. It caused no live bug, because the replacement snprintf
function is always used on Win32, but it was nevertheless misplaced.

13 years agoFurther repair of eqjoinsel ndistinct-clamping logic.
Tom Lane [Thu, 1 Sep 2011 04:18:28 +0000 (00:18 -0400)]
Further repair of eqjoinsel ndistinct-clamping logic.

Examination of examples provided by Mark Kirkwood and others has convinced
me that actually commit 7f3eba30c9d622d1981b1368f2d79ba0999cdff2 was quite
a few bricks shy of a load.  The useful part of that patch was clamping
ndistinct for the inner side of a semi or anti join, and the reason why
that's needed is that it's the only way that restriction clauses
eliminating rows from the inner relation can affect the estimated size of
the join result.  I had not clearly understood why the clamping was
appropriate, and so mis-extrapolated to conclude that we should clamp
ndistinct for the outer side too, as well as for both sides of regular
joins.  These latter actions were all wrong, and are reverted with this
patch.  In addition, the clamping logic is now made to affect the behavior
of both paths in eqjoinsel_semi, with or without MCV lists to compare.
When we have MCVs, we suppose that the most common values are the ones
that are most likely to survive the decimation resulting from a lower
restriction clause, so we think of the clamping as eliminating non-MCV
values, or potentially even the least-common MCVs for the inner relation.

Back-patch to 8.4, same as previous fixes in this area.

13 years agoFix pg_upgrade to preserve toast relfrozenxids for old 8.3 servers.
Bruce Momjian [Thu, 1 Sep 2011 01:49:58 +0000 (21:49 -0400)]
Fix pg_upgrade to preserve toast relfrozenxids for old 8.3 servers.

This fixes a pg_upgrade bug that could lead to query errors when
clog files are improperly removed.

Backpatch to 8.4, 9.0, 9.1.