Commit Graph

28430 Commits

Author SHA1 Message Date
Michael Meskes
0754b391f3 Removed some unneeded variables and comparisons 2009-05-20 16:13:18 +00:00
Heikki Linnakangas
7340793f31 Silence a gcc compiler warning about non-literal format string with no args
when compiling with -Wformat-security. Fujii Masao.
2009-05-20 08:48:10 +00:00
Peter Eisentraut
5e4c8aee1f Add documentation string for LDFLAGS_SL in configure --help output. 2009-05-19 22:32:41 +00:00
Heikki Linnakangas
9ca99cda21 Update relpages and reltuples estimates in stand-alone ANALYZE, even if
there's no analyzable attributes or indexes. We also used to report 0 live
and dead tuples for such tables, which messed with autovacuum threshold
calculations.

This fixes bug #4812 reported by George Su. Backpatch back to 8.1.
2009-05-19 08:30:00 +00:00
Tom Lane
7280fab717 Fix bug #4814 (wrong subscript in consistent-function call), and add some
minimal regression test coverage for matchPartialInPendingList().
2009-05-19 02:48:26 +00:00
Tom Lane
2c39ab12f3 Make pwdfMatchesString() a little more careful about matching * fields. 2009-05-18 16:15:22 +00:00
Peter Eisentraut
939a40b0af Add some instructions on how to customize emacs for working on the SGML
sources.
2009-05-18 12:47:44 +00:00
Peter Eisentraut
5581f226c8 Update SQL conformance entries for window functions functionality 2009-05-18 12:04:59 +00:00
Peter Eisentraut
9c4c70321d Refer to tables by id, not by "the following table", because tables are in
theory floating elements.
2009-05-18 11:08:24 +00:00
Peter Eisentraut
263144140f Some documentation cleanup for the addition of the KOI8U encoding. Change
all (remaining) mentions of KOI8 to the new canonical form KOI8R.  Add
information about the available conversions for KOI8U.
2009-05-18 08:59:29 +00:00
Tom Lane
606f5d1763 Minor copy-editing for description of partial-table vacuuming. 2009-05-16 22:51:24 +00:00
Tom Lane
03a5ff0d1a Minor editorialization on storage.sgml's documentation of free space
maps.
2009-05-16 22:03:53 +00:00
Tom Lane
2d6e2323a4 Make an editorial pass over the Client Authentication material. 2009-05-16 21:17:21 +00:00
Tom Lane
3626043229 Improve comments in pg_ident.conf.sample. 2009-05-16 20:43:46 +00:00
Tom Lane
4616d57dad Fix all the server-side SIGQUIT handlers (grumble ... why so many identical
copies?) to ensure they really don't run proc_exit/shmem_exit callbacks,
as was intended.  I broke this behavior recently by installing atexit
callbacks without thinking about the one case where we truly don't want
to run those callback functions.  Noted in an example from Dave Page.
2009-05-15 15:56:39 +00:00
Marc G. Fournier
abc924519a commit for BETA2 2009-05-15 02:18:27 +00:00
Tom Lane
bfab3f19e3 Include recovery_end_command in recovery.conf.sample.
Per suggestion of Jaime Casanova.
2009-05-14 22:22:01 +00:00
Tom Lane
1b6f549de5 Update release notes to today. 2009-05-14 22:17:28 +00:00
Tom Lane
a6df05356e Clean up overly hasty docs patch for pg_standby. 2009-05-14 21:59:22 +00:00
Alvaro Herrera
f97017068f Translation updates 2009-05-14 21:41:53 +00:00
Tom Lane
284e12c398 Improve a couple of comments. 2009-05-14 21:28:35 +00:00
Heikki Linnakangas
b3aac077c3 Add a note to release notes about the smart failover mode in pg_standby. 2009-05-14 21:01:49 +00:00
Heikki Linnakangas
9e403c2587 Add recovery_end_command option to recovery.conf. recovery_end_command
is run at the end of archive recovery, providing a chance to do external
cleanup. Modify pg_standby so that it no longer removes the trigger file,
that is to be done using the recovery_end_command now.

Provide a "smart" failover mode in pg_standby, where we don't fail over
immediately, but only after recovering all unapplied WAL from the archive.
That gives you zero data loss assuming all WAL was archived before
failover, which is what most users of pg_standby actually want.

recovery_end_command by Simon Riggs, pg_standby changes by Fujii Masao and
myself.
2009-05-14 20:31:09 +00:00
Tom Lane
a710713644 Add checks to DefineQueryRewrite() to prohibit attaching rules to relations
that aren't RELKIND_RELATION or RELKIND_VIEW, and to disallow attaching rules
to system relations unless allowSystemTableMods is on.  This is to make the
behavior of CREATE RULE more like CREATE TRIGGER, which disallows the
comparable cases.  Per discussion of bug #4808.
2009-05-13 22:32:55 +00:00
Tom Lane
1958603145 Remove a useless backslash from a pattern-match example. Michael Toews 2009-05-13 21:53:41 +00:00
Tom Lane
23543c732b Rewrite xml.c's memory management (yet again). Give up on the idea of
redirecting libxml's allocations into a Postgres context.  Instead, just let
it use malloc directly, and add PG_TRY blocks as needed to be sure we release
libxml data structures in error recovery code paths.  This is ugly but seems
much more likely to play nicely with third-party uses of libxml, as seen in
recent trouble reports about using Perl XML facilities in pl/perl and bug
#4774 about contrib/xml2.

I left the code for allocation redirection in place, but it's only
built/used if you #define USE_LIBXMLCONTEXT.  This is because I found it
useful to corral libxml's allocations in a palloc context when hunting
for libxml memory leaks, and we're surely going to have more of those
in the future with this type of approach.  But we don't want it turned on
in a normal build because it breaks exactly what we need to fix.

I have not re-indented most of the code sections that are now wrapped
by PG_TRY(); that's for ease of review.  pg_indent will fix it.

This is a pre-existing bug in 8.3, but I don't dare back-patch this change
until it's gotten a reasonable amount of field testing.
2009-05-13 20:27:17 +00:00
Tom Lane
db6e0b2db2 Update release notes for changes through 2009-05-11. Also some minor
copy-editing and reordering of items.
2009-05-12 23:43:50 +00:00
Tom Lane
546454f8a3 Fix intratransaction memory leaks in xml_recv, xmlconcat, xmlroot, and
xml_parse, all arising from the same sloppy usage of parse_xml_decl.
The original coding had that function returning its output string
parameters in the libxml context, which is long-lived, and all but one
of its callers neglected to free the strings afterwards.  The easiest
and most bulletproof fix is to return the strings in the local palloc
context instead, since that's short-lived.  This was only costing a
dozen or two bytes per function call, but that adds up fast if the
function is called repeatedly ...

Noted while poking at the more general problem of what to do with our
libxml memory allocation hooks.  Back-patch to 8.3, which has the
identical coding.
2009-05-12 20:17:40 +00:00
Tom Lane
f23bdda324 Fix LOCK TABLE to eliminate the race condition that could make it give weird
errors when tables are concurrently dropped.  To do this we must take lock
on each relation before we check its privileges.  The old code was trying
to do that the other way around, which is a bit pointless when there are lots
of other commands that lock relations before checking privileges.  I did keep
it checking each relation's privilege before locking the next relation, which
is a detail that ALTER TABLE isn't too picky about.
2009-05-12 16:43:32 +00:00
Tom Lane
d4a363cdf2 Modify find_inheritance_children() and find_all_inheritors() to add the
ability to lock relations as they scan pg_inherits, and to ignore any
relations that have disappeared by the time we get lock on them.  This
makes uses of these functions safe against concurrent DROP operations
on child tables: we will effectively ignore any just-dropped child,
rather than possibly throwing an error as in recent bug report from
Thomas Johansson (and similar past complaints).  The behavior should
not change otherwise, since the code was acquiring those same locks
anyway, just a little bit later.

An exception is LockTableCommand(), which is still behaving unsafely;
but that seems to require some more discussion before we change it.
2009-05-12 03:11:02 +00:00
Tom Lane
0ada559187 Do some minor code refactoring in preparation for changing the APIs of
find_inheritance_children() and find_all_inheritors().  I got annoyed that
these are buried inside the planner but mostly used elsewhere.  So, create
a new file catalog/pg_inherits.c and put them there, along with a couple
of other functions that search pg_inherits.

The code that modifies pg_inherits is (still) in tablecmds.c --- it's
kind of entangled with unrelated code that modifies pg_depend and other
stuff, so pulling it out seemed like a bigger change than I wanted to make
right now.  But this file provides a natural home for it if anyone ever
gets around to that.

This commit just moves code around; it doesn't change anything, except
I succumbed to the temptation to make a couple of trivial optimizations
in typeInheritsFrom().
2009-05-12 00:56:05 +00:00
Tom Lane
6480c143ee Partially revert my patch of 2008-11-12 that installed a limit on the number
of AND/OR clause branches that predtest.c would attempt to deal with.  As
noted in bug #4721, that change disabled proof attempts for sizes of problems
that people are actually expecting it to work for.  The original complaint
it was trying to solve was O(N^2) behavior for long IN-lists, so let's try
applying the limit to just ScalarArrayOpExprs rather than everything.
Another case of "foolish consistency" I fear.

Back-patch to 8.2, same as the previous patch was.
2009-05-11 17:56:08 +00:00
Magnus Hagander
e54ec9231c Move crypt auth comment to proper section.
Add some details about the name=value format of auth options.
2009-05-11 09:11:41 +00:00
Magnus Hagander
f3b507c8c7 Edit the SSL and Kerberos parts of the release notes a bit, and add
a note about the certificates chains patch just applied.
2009-05-11 09:00:10 +00:00
Magnus Hagander
d9ebc8822b Support SSL certificate chains in the server certificate file.
Andrew Gierth
2009-05-11 08:06:21 +00:00
Tom Lane
723476c72e Make a marginal performance improvement in predicate_implied_by and
predicate_refuted_by: if either top-level input is a single-element list,
reduce it to its lone member before proceeding.  This avoids
a useless level of AND-recursion within the recursive proof routines.
It's worth doing because, for example, if the clause is a 100-element
list and the predicate is a 1-element list then we'd otherwise strip
the predicate's list structure 100 times as we iterate through the clause.
It's only needed at top level because there won't be any trivial ANDs below
that --- this situation is an artifact of the decision to represent even
single-item conditions as Lists in the "implicit AND" format, and that format
is only used at the top level of any predicate or restriction condition.
2009-05-10 22:45:28 +00:00
Tom Lane
4db44b433b Adjust pg_dumpall so that it emits ENCODING, LC_COLLATE, and LC_CTYPE options
in its CREATE DATABASE commands only for databases that have settings
different from the installation defaults.  This is a low-tech method of
avoiding unnecessary platform dependencies in dump files.  Eventually we ought
to have a platform-independent way of specifying LC_COLLATE and LC_CTYPE, but
that's not going to happen for 8.4, and this patch at least avoids the issue
for people who aren't setting up per-database locales.  ENCODING doesn't have
the platform dependency problem, but it seems consistent to make it act the
same as the locale settings.
2009-05-10 02:51:44 +00:00
Tom Lane
8dcf18414b Fix cost_nestloop and cost_hashjoin to model the behavior of semi and anti
joins a bit better, ie, understand the differing cost functions for matched
and unmatched outer tuples.  There is more that could be done in cost_hashjoin
but this already helps a great deal.  Per discussions with Robert Haas.
2009-05-09 22:51:41 +00:00
Heikki Linnakangas
a41e9ec0db Add alternative expected output files for cs_CZ locale for btree_gist and
tsearch2 tests. This should make 'comet_moth' buildfarm member pass
contrib check. Zdenek Kotala.
2009-05-08 14:48:06 +00:00
Bruce Momjian
d0ab409eae Add missing third argument to open(). 2009-05-08 14:06:27 +00:00
Bruce Momjian
a600605bc1 'PGDLLIMPORT' ShmemVariableCache, needed for pg_migrator.so function
linkage on Win32.

Tested by Hiroshi Saito
2009-05-08 03:21:35 +00:00
Tom Lane
1e06ed1abe Add an option to AlterTableCreateToastTable() to allow its caller to force
a toast table to be built, even if the sum-of-column-widths calculation
indicates one isn't needed.  This is needed by pg_migrator because if the
old table has a toast table, we have to migrate over the toast table since
it might contain some live data, even though subsequent column drops could
mean that no recently-added rows could require toasting.
2009-05-07 22:58:28 +00:00
Tom Lane
48caf91b66 Change pgbench to use the table names pgbench_accounts, pgbench_branches,
pgbench_history, and pgbench_tellers, rather than just accounts, branches,
history, and tellers.  This is to prevent accidental conflicts with real
application tables, as has been reported to happen at least once.  Also
remove the automatic "SET search_path = public" that it did at startup,
as this seems to restrict testing flexibility without actually buying much.
Per proposal by Joshua Drake and ensuing discussion.

Joshua Drake and Tom Lane
2009-05-07 22:01:18 +00:00
Tom Lane
fdd48b1852 Ooops ... make_outerjoininfo wasn't actually enforcing the join order
restrictions specified for semijoins in optimizer/README, to wit that
you can't reassociate outer joins into or out of the RHS of a semijoin.
Per report from Heikki.
2009-05-07 20:13:09 +00:00
Heikki Linnakangas
223431cba1 Request XLOG switch before writing checkpoint in pg_start_backup(). Otherwise
you can end up with an unrecoverable backup if you start a new base backup
right after finishing archive recovery. In that scenario, the redo pointer of
the checkpoint that pg_start_backup() writes points to the XLOG segment where
the timeline-changing end-of-archive-recovery checkpoint is. The beginning
of that segment contains pages with the old timeline ID, and we don't accept
that in recovery unless we find a history file covering the old timeline ID.
If you omit pg_xlog from the base backup and clear the archive directory
before starting the backup, there will be no such history file available.

The bug is present in all versions since PITR was introduced in 8.0, but I'm
back-patching only back to 8.2. Earlier versions didn't have XLOG switch
records, making this fix unfeasible. Given the lack of reports until now,
it doesn't seem worthwhile to spend more effort to fix 8.0 and 8.1.

Per report and suggestion by Mikael Krantz
2009-05-07 11:25:25 +00:00
Tom Lane
1f36feceb0 Tweak distribute_qual_to_rels so that when we decide a pseudoconstant qual
can be pushed to the top of the join tree, we update both the relids and
qualscope variables to keep them in sync.  This prevents a possible later
failure of an Assert clause, and affects nothing else since qualscope isn't
used later except for that Assert.  At the moment the Assert shouldn't be
reachable when we've pushed the qual up; but this is cheap insurance, and
it's more sensible anyway in terms of the overall logic of the routine.
Per analysis of a bug report from Stefan Huehner.

I'm not back-patching this since it's just future-proofing; but if anyone
gets tempted to change check_outerjoin_delay again in the back branches,
this might be needed.
2009-05-06 20:31:18 +00:00
Tom Lane
421c66b76c Modify CREATE DATABASE to enforce that the source database's encoding setting
must be used for the new database, except when copying from template0.
This is the same rule that we now enforce for locale settings, and it has
the same motivation: databases other than template0 might contain data that
would be invalid according to a different setting.  This represents another
step in a continuing process of locking down ways in which encoding violations
could occur inside the backend.  Per discussion of a few days ago.

In passing, fix pre-existing breakage of mbregress.sh, and fix up a couple
of ereport() calls in dbcommands.c that failed to specify sqlstate codes.
2009-05-06 16:15:21 +00:00
Tom Lane
ab4e386a80 Fix ecpg tests for change that disallowed Unicode literals unless
standard_conforming_strings is on.
2009-05-06 03:22:15 +00:00
Tom Lane
d7ee335520 Tweak a comment to agree a bit better with the new dispensation that
locales are database-wide, not server-wide.
2009-05-05 23:39:55 +00:00
Tom Lane
2fe0f2962c Minor improvement: avoid assuming that GetLastError value cannot be
affected by CloseHandle() or Sleep().
2009-05-05 21:51:46 +00:00