]> granicus.if.org Git - postgresql/log
postgresql
12 years agoFix incorrect password transformation in contrib/pgcrypto's DES crypt().
Tom Lane [Wed, 30 May 2012 14:53:30 +0000 (10:53 -0400)]
Fix incorrect password transformation in contrib/pgcrypto's DES crypt().

Overly tight coding caused the password transformation loop to stop
examining input once it had processed a byte equal to 0x80.  Thus, if the
given password string contained such a byte (which is possible though not
highly likely in UTF8, and perhaps also in other non-ASCII encodings), all
subsequent characters would not contribute to the hash, making the password
much weaker than it appears on the surface.

This would only affect cases where applications used DES crypt() to encode
passwords before storing them in the database.  If a weak password has been
created in this fashion, the hash will stop matching after this update has
been applied, so it will be easy to tell if any passwords were unexpectedly
weak.  Changing to a different password would be a good idea in such a case.
(Since DES has been considered inadequately secure for some time, changing
to a different encryption algorithm can also be recommended.)

This code, and the bug, are shared with at least PHP, FreeBSD, and OpenBSD.
Since the other projects have already published their fixes, there is no
point in trying to keep this commit private.

This bug has been assigned CVE-2012-2143, and credit for its discovery goes
to Rubin Xu and Joseph Bonneau.

12 years agoChange the way parent pages are tracked during buffered GiST build.
Heikki Linnakangas [Wed, 30 May 2012 08:59:14 +0000 (11:59 +0300)]
Change the way parent pages are tracked during buffered GiST build.

We used to mimic the way a stack is constructed when descending the tree
during normal GiST inserts, but that was quite complicated during a buffered
build. It was also wrong: in GiST, the left-to-right relationships on
different levels might not match each other, so that when you know the
parent of a child page, you won't necessarily find the parent of the page to
the right of the child page by following the rightlinks at the parent level.
This sometimes led to "could not re-find parent" errors while building a
GiST index.

We now use a simple hash table to track the parent of every internal page.
Whenever a page is split, and downlinks are moved from one page to another,
we update the hash table accordingly. This is also better for performance
than the old method, as we never need to move right to re-find the parent
page, which could take a significant amount of time for buffers that were
created much earlier in the index build.

12 years agoDelete the temporary file used in buffered GiST build, after the build.
Heikki Linnakangas [Wed, 30 May 2012 08:58:54 +0000 (11:58 +0300)]
Delete the temporary file used in buffered GiST build, after the build.

There were two bugs here: We forgot to call gistFreeBuildBuffers() function
at the end of build, and we passed interXact == true to BufFileCreateTemp,
so the file wasn't automatically cleaned up at end-of-transaction either.

12 years agoRewrite --section option to decouple it from --schema-only/--data-only.
Tom Lane [Wed, 30 May 2012 03:22:14 +0000 (23:22 -0400)]
Rewrite --section option to decouple it from --schema-only/--data-only.

The initial implementation of pg_dump's --section option supposed that the
existing --schema-only and --data-only options could be made equivalent to
--section settings.  This is wrong, though, due to dubious but long since
set-in-stone decisions about where to dump SEQUENCE SET items, as seen in
bug report from Martin Pitt.  (And I'm not totally convinced there weren't
other bugs, either.)  Undo that coupling and instead drive --section
filtering off current-section state tracked as we scan through the TOC
list to call _tocEntryRequired().

To make sure those decisions don't shift around and hopefully save a few
cycles, run _tocEntryRequired() only once per TOC entry and save the result
in a new TOC field.  This required minor rejiggering of ACL handling but
also allows a far cleaner implementation of inhibit_data_for_failed_table.

Also, to ensure that pg_dump and pg_restore have the same behavior with
respect to the --section switches, add _tocEntryRequired() filtering to
WriteToc() and WriteDataChunks(), rather than trying to implement section
filtering in an entirely orthogonal way in dumpDumpableObject().  This
required adjusting the handling of the special ENCODING and STDSTRINGS
items, but they were pretty weird before anyway.

Minor other code review for the patch, too.

12 years agoFix integer overflow bug in GiST buffering build calculations.
Heikki Linnakangas [Tue, 29 May 2012 19:22:43 +0000 (22:22 +0300)]
Fix integer overflow bug in GiST buffering build calculations.

The result of (maintenance_work_mem * 1024) / BLCKSZ doesn't fit in a signed
32-bit integer, if maintenance_work_mem >= 2GB. Use double instead. And
while we're at it, write the calculations in an easier to understand form,
with the intermediary steps written out and commented.

12 years agoTeach AbortOutOfAnyTransaction to clean up partially-started transactions.
Tom Lane [Tue, 29 May 2012 03:57:06 +0000 (23:57 -0400)]
Teach AbortOutOfAnyTransaction to clean up partially-started transactions.

AbortOutOfAnyTransaction failed to do anything if the state it saw on
entry corresponded to failing partway through StartTransaction.  I fixed
AbortCurrentTransaction to cope with that case way back in commit
60b2444cc3ba037630c9b940c3c9ef01b954b87b, but evidently overlooked that
AbortOutOfAnyTransaction should do likewise.

Back-patch to all supported branches.  It's not clear that this omission
has any more-than-cosmetic consequences, but it's also not clear that it
doesn't, so back-patching seems the least risky choice.

12 years agoEliminate some more O(N^2) behaviors in pg_dump/pg_restore.
Tom Lane [Tue, 29 May 2012 00:38:28 +0000 (20:38 -0400)]
Eliminate some more O(N^2) behaviors in pg_dump/pg_restore.

This patch fixes three places (which AFAICT is all of them) where runtime
was O(N^2) in the number of TOC entries, by using an index array to replace
linear searches of the TOC list.  This performance issue is a bit less bad
than those recently fixed, because it depends on the number of items dumped
not the number in the source database, so the problem can be dodged by
doing partial dumps.

The previous coding already had an instance of one of the two index arrays
needed, but it was only calculated in parallel-restore cases; now we need
it all the time.  I also chose to move the arrays into the ArchiveHandle
data structure, to make this code a bit more ready for the day that we
try to sling multiple ArchiveHandles around in pg_dump or pg_restore.

Since we still need some server-side work before pg_dump can really cope
nicely with tens of thousands of tables, there's probably little point in
back-patching.

12 years agolibpq: URI parsing fixes
Peter Eisentraut [Mon, 28 May 2012 19:44:34 +0000 (22:44 +0300)]
libpq: URI parsing fixes

Drop special handling of host component with slashes to mean
Unix-domain socket.  Specify it as separate parameter or using
percent-encoding now.

Allow omitting username, password, and port even if the corresponding
designators are present in URI.

Handle percent-encoding in query parameter keywords.

Alex Shulgin

some documentation improvements by myself

12 years agoUpdate SQL features list
Peter Eisentraut [Sun, 27 May 2012 20:34:16 +0000 (23:34 +0300)]
Update SQL features list

Set E081 Basic Privileges to supported, since by the letter of it, we
support it, even though not all possible forms of USAGE privileges are
implemented.

12 years agopsql: Remove notice about readline from --version output
Peter Eisentraut [Sun, 27 May 2012 19:48:20 +0000 (22:48 +0300)]
psql: Remove notice about readline from --version output

This was from a time when readline support wasn't standard.  And it
doesn't help analyzing current line editing library problems.

12 years agoSuppress -Wunused-result warning about write()
Peter Eisentraut [Sun, 27 May 2012 19:35:01 +0000 (22:35 +0300)]
Suppress -Wunused-result warning about write()

This is related to aa90e148ca70a235897b1227f1a7cd1c66bc5368, but this
code is only used under -DLINUX_OOM_ADJ, so it was apparently
overlooked then.

12 years agoPL/Perl: Avoid compiler warning from clang
Peter Eisentraut [Sun, 27 May 2012 19:30:34 +0000 (22:30 +0300)]
PL/Perl: Avoid compiler warning from clang

Use SvREFCNT_inc_simple_void() instead of SvREFCNT_inc() to avoid
warning about unused return value.

12 years agoImprove pg_upgrade C comment.
Bruce Momjian [Sun, 27 May 2012 10:45:29 +0000 (06:45 -0400)]
Improve pg_upgrade C comment.

12 years agoAdd C comment explaining why we can't exclude checking functions in the
Bruce Momjian [Sun, 27 May 2012 10:35:10 +0000 (06:35 -0400)]
Add C comment explaining why we can't exclude checking functions in the
pg_catalog schema, even though they are not explicitly dumped (they are
implicitly dumped, e.g. create language plperl).

12 years agoAdd pg_update C comment about problems with plpython_call_handler().
Bruce Momjian [Sun, 27 May 2012 10:29:45 +0000 (06:29 -0400)]
Add pg_update C comment about problems with plpython_call_handler().

12 years agoMake pg_recievexlog by default loop on connection failures
Magnus Hagander [Sun, 27 May 2012 09:05:24 +0000 (11:05 +0200)]
Make pg_recievexlog by default loop on connection failures

Avoids the need for an external script in the most common
scenario. Behavior can be overridden using the -n/--noloop
commandline parameter.

12 years agoFix handling of pg_stat_statements.stat temporary file
Magnus Hagander [Sun, 27 May 2012 08:54:31 +0000 (10:54 +0200)]
Fix handling of pg_stat_statements.stat temporary file

Write the file to a temporary name and then rename() it into the
permanent name, to ensure it can't end up half-written and corrupt
in case of a crash during shutdown.

Unlink the file after it has been read so it's removed from the data
directory and not included in base backups going to replication slaves.

12 years agoPrevent synchronized scanning when systable_beginscan chooses a heapscan.
Tom Lane [Sat, 26 May 2012 23:09:52 +0000 (19:09 -0400)]
Prevent synchronized scanning when systable_beginscan chooses a heapscan.

The only interesting-for-performance case wherein we force heapscan here
is when we're rebuilding the relcache init file, and the only such case
that is likely to be examining a catalog big enough to be syncscanned is
RelationBuildTupleDesc.  But the early-exit optimization in that code gets
broken if we start the scan at a random place within the catalog, so that
allowing syncscan is actually a big deoptimization if pg_attribute is large
(at least for the normal case where the rows for core system catalogs have
never been changed since initdb).  Hence, prevent syncscan here.  Per my
testing pursuant to complaints from Jeff Frost and Greg Sabino Mullane,
though neither of them seem to have actually hit this specific problem.

Back-patch to 8.3, where syncscan was introduced.

12 years agoFix string truncation to be multibyte-aware in text_name and bpchar_name.
Tom Lane [Fri, 25 May 2012 21:34:51 +0000 (17:34 -0400)]
Fix string truncation to be multibyte-aware in text_name and bpchar_name.

Previously, casts to name could generate invalidly-encoded results.

Also, make these functions match namein() more exactly, by consistently
using palloc0() instead of ad-hoc zeroing code.

Back-patch to all supported branches.

Karl Schnaitter and Tom Lane

12 years agoUse binary search instead of brute-force scan in findNamespace().
Tom Lane [Fri, 25 May 2012 18:35:37 +0000 (14:35 -0400)]
Use binary search instead of brute-force scan in findNamespace().

The previous coding presented a significant bottleneck when dumping
databases containing many thousands of schemas, since the total time
spent searching would increase roughly as O(N^2) in the number of objects.
Noted by Jeff Janes, though I rewrote his proposed patch to use the
existing findObjectByOid infrastructure.

Since this is a longstanding performance bug, backpatch to all supported
versions.

12 years agoHave pg_upgrade only use one extra log file for Win32, not two.
Bruce Momjian [Fri, 25 May 2012 13:09:51 +0000 (09:09 -0400)]
Have pg_upgrade only use one extra log file for Win32, not two.

12 years agoFix base backup streaming xlog from standby
Magnus Hagander [Fri, 25 May 2012 09:36:22 +0000 (11:36 +0200)]
Fix base backup streaming xlog from standby

When backing up from a standby server, the backup process
will not automatically switch xlog segment. So we must
accept a partially transferred xlog file in this case, but
rename it into position anyway.

In passing, merge the two callbacks for segment end and
stop stream into a single callback, since their implementations
were close to identical, and rename this callback to
reflect that it stops streaming rather than continues it.

Patch by Magnus Hagander, review by Fujii Masao

12 years agoOn Windows, have pg_upgrade use different two files to log pg_ctl
Bruce Momjian [Fri, 25 May 2012 00:30:39 +0000 (20:30 -0400)]
On Windows, have pg_upgrade use different two files to log pg_ctl
start/stop output, to fix file share error reported by Edmund Horner

12 years agoClarify 9.2 release notes items about pg_stat_statements, to better
Bruce Momjian [Thu, 24 May 2012 23:10:06 +0000 (19:10 -0400)]
Clarify 9.2 release notes items about pg_stat_statements, to better
document fix of double counting and read/write count addition, per Peter
Geoghegan

12 years agoChange pg_stat_statements order of release note items, per Peter
Bruce Momjian [Thu, 24 May 2012 21:51:56 +0000 (17:51 -0400)]
Change pg_stat_statements order of release note items, per Peter
Geoghegan

12 years agoRemove PL/Perl null array 9.2 release note item, per Andrew Dunstan
Bruce Momjian [Thu, 24 May 2012 21:35:53 +0000 (17:35 -0400)]
Remove PL/Perl null array 9.2 release note item, per Andrew Dunstan

12 years agoFix array overrun in regex code.
Tom Lane [Thu, 24 May 2012 17:56:16 +0000 (13:56 -0400)]
Fix array overrun in regex code.

zaptreesubs() was coded to unconditionally reset a capture subre's
corresponding pmatch[] entry.  However, in regexes without backrefs, that
array is caller-supplied and might not have as many entries as the regex
has capturing parens.  So check the array length and do nothing if there
is no corresponding entry, much as subset() does.  Failure to check this
resulted in a stack clobber in the case reported by Marko Kreen.

This bug appears to have been latent in the regex library from the
beginning.  It was not exposed because find() called dissect() not
cdissect(), and the dissect() code path didn't ever call zaptreesubs()
(formerly zapmem()).  When I unified dissect() and cdissect() in commit
4dd78bf37aa29d04b3f358b08c4a2fa43cf828e7, the problem was exposed.

Now that I've seen this, I'm rather suspicious that we might need to
back-patch it; but will refrain for now, for lack of evidence that
the case can be hit in the previous coding.

12 years agoUpdate SQL key word list to SQL:2011
Peter Eisentraut [Thu, 24 May 2012 17:06:25 +0000 (20:06 +0300)]
Update SQL key word list to SQL:2011

For space reasons, drop SQL:1999 and SQL:2003.  Only keep the latest
two and SQL-92 for historical comparison.

12 years agoAdjust pg_upgrade to output a separate log file for pg_ctl output on
Bruce Momjian [Thu, 24 May 2012 00:19:21 +0000 (20:19 -0400)]
Adjust pg_upgrade to output a separate log file for pg_ctl output on
Windows, to avoid opening a file by multiple processes.

12 years agoAdd missing PQfinish() calls
Magnus Hagander [Wed, 23 May 2012 19:52:23 +0000 (21:52 +0200)]
Add missing PQfinish() calls

Fujii Masao

12 years agopg_standby: Remove tabs from string literals
Peter Eisentraut [Wed, 23 May 2012 16:58:17 +0000 (19:58 +0300)]
pg_standby: Remove tabs from string literals

And align a bit better with the rest of the debug output.

12 years agoMention Peter Geoghegan as primary author of pg_stat_statements changes.
Bruce Momjian [Wed, 23 May 2012 14:12:44 +0000 (10:12 -0400)]
Mention Peter Geoghegan as primary author of pg_stat_statements changes.

12 years agoImprove wording of 9.2 clog release note item.
Bruce Momjian [Wed, 23 May 2012 13:29:39 +0000 (09:29 -0400)]
Improve wording of 9.2 clog release note item.

12 years agoAdd 9.2 release note authorship mentions for Heikki and Alexander
Bruce Momjian [Wed, 23 May 2012 02:59:21 +0000 (22:59 -0400)]
Add 9.2 release note authorship mentions for Heikki and Alexander
Korotkov, per Alexander Korotkov.

12 years agoEnsure that seqscans check for interrupts at least once per page.
Tom Lane [Tue, 22 May 2012 23:42:05 +0000 (19:42 -0400)]
Ensure that seqscans check for interrupts at least once per page.

If a seqscan encounters many consecutive pages containing only dead tuples,
it can remain in the loop in heapgettup for a long time, and there was no
CHECK_FOR_INTERRUPTS anywhere in that loop.  This meant there were
real-world situations where a query would be effectively uncancelable for
long stretches.  Add a check placed to occur once per page, which should be
enough to provide reasonable response time without adding any measurable
overhead.

Report and patch by Merlin Moncure (though I tweaked it a bit).
Back-patch to all supported branches.

12 years agoAdd small example about pg_archivecleanup -x option
Peter Eisentraut [Tue, 22 May 2012 21:29:20 +0000 (00:29 +0300)]
Add small example about pg_archivecleanup -x option

Every time I read this I had doubts about whether the argument to the
-x option should include the dot (yes).  A small example should
clarify this.

12 years agoFix markup for HISTORY generation.
Bruce Momjian [Tue, 22 May 2012 21:36:33 +0000 (17:36 -0400)]
Fix markup for HISTORY generation.

12 years agoFix reindexdb manual page to say --maintenance-db controls what is
Bruce Momjian [Tue, 22 May 2012 21:31:46 +0000 (17:31 -0400)]
Fix reindexdb manual page to say --maintenance-db controls what is
reindexed, not vacuumed (typo).  Per report from Thomas REISS

12 years ago9.2 release notes: GiST index improvements are for all geometric index
Bruce Momjian [Tue, 22 May 2012 21:26:42 +0000 (17:26 -0400)]
9.2 release notes:  GiST index improvements are for all geometric index
types, per Alexander Korotkov

12 years agoRemove reviewers from 9.2 release notes; improve attributions.
Bruce Momjian [Tue, 22 May 2012 21:17:01 +0000 (17:17 -0400)]
Remove reviewers from 9.2 release notes;  improve attributions.

12 years agoFix error message for COMMENT/SECURITY LABEL ON COLUMN xxx IS 'yyy'
Robert Haas [Tue, 22 May 2012 15:19:33 +0000 (11:19 -0400)]
Fix error message for COMMENT/SECURITY LABEL ON COLUMN xxx IS 'yyy'

When the column name is an unqualified name, rather than table.column,
the error message complains about too many dotted names, which is
wrong.  Report by Peter Eisentraut based on examination of the
sepgsql regression test output, but the problem also affects COMMENT.
New wording as suggested by Tom Lane.

12 years agoRelease note improvements.
Robert Haas [Tue, 22 May 2012 14:20:25 +0000 (10:20 -0400)]
Release note improvements.

Document some more things as incompatibilities, and improve wording of
another item.

Noah Misch

12 years agoPrevent pg_basebackup when integer_datetimes flag doesn't match.
Robert Haas [Tue, 22 May 2012 14:02:47 +0000 (10:02 -0400)]
Prevent pg_basebackup when integer_datetimes flag doesn't match.

Magnus Hagander, reviewed by Fujii Masao, with slight wording changes
by me.

12 years agoRepair out-of-date information in src/backend/storage/buffer/README.
Robert Haas [Tue, 22 May 2012 13:30:59 +0000 (09:30 -0400)]
Repair out-of-date information in src/backend/storage/buffer/README.

In commit d526575f893c1a4e05ebd307e80203536b213a6d, we changed things so
that buffer usage counts are incremented when the buffer is pinned, rather
than when it is unpinned, but the README file didn't get the memo.

Report by Amit Kapila.

12 years agoMove postmaster's RemovePgTempFiles call to a less randomly chosen place.
Tom Lane [Tue, 22 May 2012 02:50:30 +0000 (22:50 -0400)]
Move postmaster's RemovePgTempFiles call to a less randomly chosen place.

There is no reason to do this as early as possible in postmaster startup,
and good reason not to do it until we have completely created the
postmaster's lock file, namely that it might contribute to pg_ctl thinking
that postmaster startup has timed out.  (This would require a rather
unusual amount of time to be spent scanning temp file directories, but we
have at least one field report of it happening reproducibly.)

Back-patch to 9.1.  Before that, pg_ctl didn't wait for additional info to
be added to the lock file, so it wasn't a problem.

Note that this is not a complete fix to the slow-start issue in 9.1,
because we still had identify_system_timezone being run during postmaster
start in 9.1.  But that's at least a reasonably well-defined delay, with
an easy workaround if needed, whereas the temp-files scan is not so
predictable and cannot be avoided.

12 years agoUpdate woefully-obsolete comment.
Tom Lane [Tue, 22 May 2012 02:10:40 +0000 (22:10 -0400)]
Update woefully-obsolete comment.

The accurate info about what's in a lock file has been in miscadmin.h
for some time, so let's just make this comment point there instead of
maintaining a duplicative copy.

12 years agopg_ctl: Sort signal list in --help output
Peter Eisentraut [Mon, 21 May 2012 17:12:30 +0000 (20:12 +0300)]
pg_ctl: Sort signal list in --help output

The list was neither logical nor numerical nor alphabetical.  Let's go
with alphabetical.

12 years agolibpq: Add missing file to GETTEXT_FILES list
Peter Eisentraut [Mon, 21 May 2012 17:08:50 +0000 (20:08 +0300)]
libpq: Add missing file to GETTEXT_FILES list

For the record, fe-print.c is also missing, but it's sort of
deprecated, and the string internationalization there has some issues,
and it doesn't seem worth fixing that.  So let's leave that out.

12 years agoAdjust documentation of ALTER TABLE CLUSTER ON for more consistency.
Tom Lane [Mon, 21 May 2012 16:06:56 +0000 (12:06 -0400)]
Adjust documentation of ALTER TABLE CLUSTER ON for more consistency.

Josh Kupershmidt

12 years agoDocument that we deviate from ISO 8601 by not using 'T' on output.
Tom Lane [Mon, 21 May 2012 15:56:00 +0000 (11:56 -0400)]
Document that we deviate from ISO 8601 by not using 'T' on output.

Per discussion, we should explain that we follow RFC 3339 and not really
the letter of the ISO 8601 spec for timestamp output format.  Mostly
Brendan Jurd's wording, though I tweaked it to clarify that we do take 'T'
on input.  Minor additional copy-editing and markup-tweaking, too.

12 years agoFix incorrect logic in JSON number lexer
Peter Eisentraut [Sat, 19 May 2012 23:24:46 +0000 (02:24 +0300)]
Fix incorrect logic in JSON number lexer

Detectable by gcc -Wlogical-op.

Add two regression test cases that would previously allow incorrect
values to pass.

12 years agoSome reference page improvements
Peter Eisentraut [Sat, 19 May 2012 22:15:55 +0000 (01:15 +0300)]
Some reference page improvements

initdb: Add -T option
oid2name: Put options in some non-random order
pg_dump: Put --section option in the right place

And some additional markup and terminology improvements.

12 years agoSmall cleanups of contrib --help output
Peter Eisentraut [Sat, 19 May 2012 22:14:25 +0000 (01:14 +0300)]
Small cleanups of contrib --help output

12 years agoPut back word that was mysteriously lost in man page conversion
Peter Eisentraut [Sat, 19 May 2012 17:26:53 +0000 (20:26 +0300)]
Put back word that was mysteriously lost in man page conversion

12 years agoReworded sentence as suggested by Stephen Frost.
Michael Meskes [Sat, 19 May 2012 12:42:47 +0000 (14:42 +0200)]
Reworded sentence as suggested by Stephen Frost.

12 years agoRealign some --help output to have better spacing between columns
Peter Eisentraut [Fri, 18 May 2012 17:34:14 +0000 (20:34 +0300)]
Realign some --help output to have better spacing between columns

12 years agoFix bug in gistRelocateBuildBuffersOnSplit().
Heikki Linnakangas [Fri, 18 May 2012 16:31:36 +0000 (19:31 +0300)]
Fix bug in gistRelocateBuildBuffersOnSplit().

When we create a temporary copy of the old node buffer, in stack, we mustn't
leak that into any of the long-lived data structures. Before this patch,
when we called gistPopItupFromNodeBuffer(), it got added to the array of
"loaded buffers". After gistRelocateBuildBuffersOnSplit() exits, the
pointer added to the loaded buffers array points to garbage. Often that goes
unnotied, because when we go through the array of loaded buffers to unload
them, buffers with a NULL pageBuffer are ignored, which can often happen by
accident even if the pointer points to garbage.

This patch fixes that by marking the temporary copy in stack explicitly as
temporary, and refrain from adding buffers marked as temporary to the array
of loaded buffers.

While we're at it, initialize nodeBuffer->pageBlocknum to InvalidBlockNumber
and improve comments a bit. This isn't strictly necessary, but makes
debugging easier.

12 years agofile_fdw: Improve error message
Peter Eisentraut [Thu, 17 May 2012 17:20:33 +0000 (20:20 +0300)]
file_fdw: Improve error message

The hint looked a bit confusing when there were no valid options to
hint about.

12 years agoUpdate key words table for 9.2
Peter Eisentraut [Thu, 17 May 2012 16:27:55 +0000 (19:27 +0300)]
Update key words table for 9.2

12 years agoUpdate SQL features/conformance information to SQL:2011
Peter Eisentraut [Thu, 17 May 2012 06:50:04 +0000 (09:50 +0300)]
Update SQL features/conformance information to SQL:2011

12 years agoChange COLLATION keyword category
Peter Eisentraut [Wed, 16 May 2012 17:19:44 +0000 (20:19 +0300)]
Change COLLATION keyword category

It was changed from unreserved to reserved as part of the COLLATION
FOR syntax, but it turns out that type_func_name_keyword is
sufficient.

12 years agoImprove error message for ALTER COLUMN TYPE coercion failure.
Tom Lane [Tue, 15 May 2012 16:12:40 +0000 (12:12 -0400)]
Improve error message for ALTER COLUMN TYPE coercion failure.

Per recent discussion, the error message for this was actually a trifle
inaccurate, since it said "cannot be cast" which might be incorrect.
Adjust that wording, and add a HINT suggesting that a USING clause might
be needed.

12 years agoFix bug in freespace calculation in heap_multi_insert().
Heikki Linnakangas [Wed, 16 May 2012 11:10:29 +0000 (14:10 +0300)]
Fix bug in freespace calculation in heap_multi_insert().

If the amount of freespace on page was less than the amount reserved by
fillfactor, the calculation would underflow.

This fixes bug #6643 reported by Tomonari Katsumata.

12 years agoFix a whitespace issue with the man pages
Peter Eisentraut [Tue, 15 May 2012 19:55:13 +0000 (22:55 +0300)]
Fix a whitespace issue with the man pages

See 6ef24487967692604b07a4a54e71821a60fb729a for an explanation.  This
is the same for the new man pages.

12 years agoRemove whitespace from end of lines
Peter Eisentraut [Tue, 15 May 2012 19:19:04 +0000 (22:19 +0300)]
Remove whitespace from end of lines

pgindent and perltidy should clean up the rest.

12 years agoMake xrefs to tables instead of assuming they appear below
Peter Eisentraut [Tue, 15 May 2012 18:53:07 +0000 (21:53 +0300)]
Make xrefs to tables instead of assuming they appear below

12 years agoRemove stray nbsp character
Peter Eisentraut [Tue, 15 May 2012 18:38:59 +0000 (21:38 +0300)]
Remove stray nbsp character

12 years agoFix bug in to_tsquery().
Heikki Linnakangas [Tue, 15 May 2012 16:22:56 +0000 (19:22 +0300)]
Fix bug in to_tsquery().

We were using memcpy() to copy to a possibly overlapping memory region,
which is a no-no. Use memmove() instead.

12 years agoIn pgstat.c, use a timeout in WaitLatchOrSocket only on Windows.
Tom Lane [Tue, 15 May 2012 03:51:34 +0000 (23:51 -0400)]
In pgstat.c, use a timeout in WaitLatchOrSocket only on Windows.

We have no need for a timeout here really, but some broken products from
Redmond seem to lose FD_READ events occasionally, and waking up and
retrying the recv() is the only known way to work around that.  Perhaps
somebody will be motivated to figure out a better answer here; but not I.

12 years agoRevert "Add some temporary instrumentation to pgstat.c."
Tom Lane [Tue, 15 May 2012 03:08:10 +0000 (23:08 -0400)]
Revert "Add some temporary instrumentation to pgstat.c."

This reverts commit 7d88bb73f755f7fb5d847ef2319c21076054fb0e.
That instrumentation has served its purpose.

12 years agoPut back AC_REQUIRE([AC_STRUCT_TM]).
Tom Lane [Tue, 15 May 2012 03:06:48 +0000 (23:06 -0400)]
Put back AC_REQUIRE([AC_STRUCT_TM]).

The BSD-ish members of the buildfarm all seem to think removing this
was a bad idea.  It looks to me like it resulted in omitting the system
header inclusion necessary to detect the fields of struct tm correctly.

12 years agoAssert that WaitLatchOrSocket callers cannot wait only for writability.
Tom Lane [Mon, 14 May 2012 20:11:59 +0000 (16:11 -0400)]
Assert that WaitLatchOrSocket callers cannot wait only for writability.

Since we have chosen to report socket EOF and error conditions via the
WL_SOCKET_READABLE flag bit, it's unsafe to wait only for
WL_SOCKET_WRITEABLE; the caller would never be notified of the socket
condition, and in some of these implementations WaitLatchOrSocket would
busy-wait until something else happens.  Add this restriction to the API
specification, and add Asserts to check that callers don't try to do that.

At some point we might want to consider adjusting the API to relax this
restriction, but until we have an actual use case for waiting on a
write-only socket, it seems premature to design a solution.

12 years agoRemove unused AC_DEFINE symbols
Peter Eisentraut [Mon, 14 May 2012 19:51:21 +0000 (22:51 +0300)]
Remove unused AC_DEFINE symbols

ENABLE_DTRACE            unused as of a7b7b07af340c73adee9959edf260695591a9496
HAVE_ERR_SET_MARK        unused as of 4ed4b6c54e5fab24ab2624d80e26f7546edc88ad
HAVE_FCVT                unused as of 4553e1d80f824291932cfde30aa24a76dd8f1941
HAVE_STRUCT_SOCKADDR_UN  unused as of b4cea00a1fc9d2270bfe9aeeee44915378d5f733
HAVE_SYSCONF             unused as of f83356c7f574bc69969f29dc7b430b286a0cd9f4
TM_IN_SYS_TIME           never used, obsolescent per Autoconf documentation

12 years agoFor testing purposes, reinsert a timeout in pgstat.c's wait call.
Tom Lane [Mon, 14 May 2012 19:03:14 +0000 (15:03 -0400)]
For testing purposes, reinsert a timeout in pgstat.c's wait call.

Test results from buildfarm members mastodon/narwhal (Windows Server 2003)
make it look like that platform just plain loses FD_READ events
occasionally, and the only reason our previous coding seemed to work was
that it timed out every couple of seconds and retried the whole operation.
Try to verify this by reinserting a finite timeout into the pgstat loop.
This isn't meant to be a permanent patch either, just to confirm or
disprove a theory.

12 years agoForce pgwin32_recv into nonblock mode when called from pgstat.c.
Tom Lane [Mon, 14 May 2012 14:57:07 +0000 (10:57 -0400)]
Force pgwin32_recv into nonblock mode when called from pgstat.c.

This should get rid of the usage of pgwin32_waitforsinglesocket entirely,
and perhaps thereby remove the race condition that's evidently still
present on some versions of Windows.  The previous arrangement was a bit
unsafe anyway, since waiting at the recv() would not allow pgstat to notice
postmaster death.

12 years agoRemove unnecessary pg_verifymbstr() calls from tsvector/query in functions.
Heikki Linnakangas [Mon, 14 May 2012 11:30:32 +0000 (14:30 +0300)]
Remove unnecessary pg_verifymbstr() calls from tsvector/query in functions.

The input should've been validated well before it hits the input function.
Doing so again is a waste of cycles.

12 years agoUpdate comments that became out-of-date with the PGXACT struct.
Heikki Linnakangas [Mon, 14 May 2012 07:22:44 +0000 (10:22 +0300)]
Update comments that became out-of-date with the PGXACT struct.

When the "hot" members of PGPROC were split off to separate PGXACT structs,
many PGPROC fields referred to in comments were moved to PGXACT, but the
comments were neglected in the commit. Mostly this is just a search/replace
of PGPROC with PGXACT, but the way the dummy PGPROC entries are created for
prepared transactions changed more, making some of the comments totally
bogus.

Noah Misch

12 years agoRemove leftovers of BeOS port
Peter Eisentraut [Mon, 14 May 2012 01:47:48 +0000 (04:47 +0300)]
Remove leftovers of BeOS port

These should have been removed when the BeOS port was removed in
44f90212236bfb6fc1279e95dc8fa315104d964e.

12 years agoSmall punctuation editing of postgresql.conf.sample
Peter Eisentraut [Mon, 14 May 2012 01:14:35 +0000 (04:14 +0300)]
Small punctuation editing of postgresql.conf.sample

12 years agopg_ctl: Improve --help output
Peter Eisentraut [Mon, 14 May 2012 00:54:17 +0000 (03:54 +0300)]
pg_ctl: Improve --help output

All other --help output has = signs between long options and their
arguments, so do it here as well.

12 years agoAdd some temporary instrumentation to pgstat.c.
Tom Lane [Mon, 14 May 2012 01:11:31 +0000 (21:11 -0400)]
Add some temporary instrumentation to pgstat.c.

Log main-loop blocking events and the results of inquiry messages.
This is to get some clarity as to what's happening on those Windows
buildfarm members that still don't like the latch-ified stats collector.
This bulks up the postmaster log a tad, so I won't leave it in place for
long.

12 years agoFix DROP TABLESPACE to unlink symlink when directory is not there.
Tom Lane [Sun, 13 May 2012 22:06:52 +0000 (18:06 -0400)]
Fix DROP TABLESPACE to unlink symlink when directory is not there.

If the tablespace directory is missing entirely, we allow DROP TABLESPACE
to go through, on the grounds that it should be possible to clean up the
catalog entry in such a situation.  However, we forgot that the pg_tblspc
symlink might still be there.  We should try to remove the symlink too
(but not fail if it's no longer there), since not doing so can lead to
weird behavior subsequently, as per report from Michael Nolan.

There was some discussion of adding dependency links to prevent DROP
TABLESPACE when the catalogs still contain references to the tablespace.
That might be worth doing too, but it's an orthogonal question, and in
any case wouldn't be back-patchable.

Back-patch to 9.0, which is as far back as the logic looks like this.
We could possibly do something similar in 8.x, but given the lack of
reports I'm not sure it's worth the trouble, and anyway the case could
not arise in the form the logic is meant to cover (namely, a post-DROP
transaction rollback having resurrected the pg_tablespace entry after
some or all of the filesystem infrastructure is gone).

12 years agoRe-revert stats collector latch changes.
Tom Lane [Sun, 13 May 2012 18:44:39 +0000 (14:44 -0400)]
Re-revert stats collector latch changes.

This reverts commit cb2f2873d6b81ad7f0a9733ba738bfac0746fb7b, restoring
the latch-ified stats collector logic.  We'll soon see if this works any
better on the Windows buildfarm machines.

12 years agoAttempt to fix some issues in our Windows socket code.
Tom Lane [Sun, 13 May 2012 18:35:40 +0000 (14:35 -0400)]
Attempt to fix some issues in our Windows socket code.

Make sure WaitLatchOrSocket regards FD_CLOSE as a read-ready condition.
We might want to tweak this further, but it was surely wrong as-is.

Make pgwin32_waitforsinglesocket detach its private event object from the
passed socket before returning.  I suspect that failure to do so leads
to race conditions when other code (such as WaitLatchOrSocket) attaches
a different event object to the same socket.  Moreover, the existing
coding meant that repeated calls to pgwin32_waitforsinglesocket would
perform ResetEvent on an event actively connected to a socket, which
is rumored to be an unsafe practice; the WSAEventSelect documentation
appears to recommend against this, though it does not say not to do it
in so many words.

Also, uniformly use the coding pattern "WSAEventSelect(s, NULL, 0)" to
detach events from sockets, rather than passing the event in the second
parameter.  The WSAEventSelect documentation says that the second parameter
is ignored if the third is 0, so theoretically this should make no
difference.  However, elsewhere on the same reference page the use of NULL
in this context is recommended, and I have found suggestions on the net
that some versions of Windows have bugs with a non-NULL second parameter
in this usage.

Some other mostly-cosmetic cleanup, such as using the right one of
WSAGetLastError and GetLastError for reporting errors from these functions.

12 years agoFix bogus declaration of local variable.
Tom Lane [Sun, 13 May 2012 04:30:32 +0000 (00:30 -0400)]
Fix bogus declaration of local variable.

rc should be an int here, not a pgsocket.  Fairly harmless as long as
pgsocket is an integer type, but nonetheless wrong.  Error introduced
in commit 87091cb1f1ed914e2ddca424fa28f94fdf8461d2.

12 years agoAvoid unnecessary process wakeups in the log collector.
Tom Lane [Sat, 12 May 2012 23:21:54 +0000 (19:21 -0400)]
Avoid unnecessary process wakeups in the log collector.

syslogger was coded to wake up once per second whether there was anything
useful to do or not.  As part of our campaign to reduce the server's idle
power consumption, change it to use a latch for waiting.  Now, in the
absence of any data to log or any signals to service, it will only wake up
at the programmed logfile rotation times (if any).

12 years agoRemove unused AC_SUBST variables
Peter Eisentraut [Sat, 12 May 2012 20:29:07 +0000 (23:29 +0300)]
Remove unused AC_SUBST variables

These were apparently never used.  The AC_SUBST was probably just
added in a copy-and-paste manner.  (The shell variables continue to be
used inside configure.  The change is just that we don't need them
outside of configure.)

12 years agoFix WaitLatchOrSocket to handle EOF on socket correctly.
Tom Lane [Sat, 12 May 2012 20:36:47 +0000 (16:36 -0400)]
Fix WaitLatchOrSocket to handle EOF on socket correctly.

When using poll(), EOF on a socket is reported with the POLLHUP not
POLLIN flag (at least on Linux).  WaitLatchOrSocket failed to check
this bit, causing it to go into a busy-wait loop if EOF occurs.
We earlier fixed the same mistake in the test for the state of the
postmaster_alive socket, but missed it for the caller-supplied socket.
Fortunately, this error is new in 9.2, since 9.1 only had a select()
based code path not a poll() based one.

12 years agoUpdate group commit release note item.
Bruce Momjian [Sat, 12 May 2012 12:55:07 +0000 (08:55 -0400)]
Update group commit release note item.

12 years agoEnsure backwards compatibility for GetStableLatestTransactionId()
Simon Riggs [Sat, 12 May 2012 12:26:10 +0000 (13:26 +0100)]
Ensure backwards compatibility for GetStableLatestTransactionId()

12 years agoFix obsolescent C declaration syntax
Peter Eisentraut [Sat, 12 May 2012 09:52:02 +0000 (12:52 +0300)]
Fix obsolescent C declaration syntax

gcc -Wextra/-Wold-style-declaration thinks that "inline" should go
before the function return type.

12 years agoExplain compatibility item about language names a bit more.
Tom Lane [Fri, 11 May 2012 22:53:12 +0000 (18:53 -0400)]
Explain compatibility item about language names a bit more.

Since we've got an "open items" list item about this, apparently some
people are pretty worried about it.

In passing remove a lot of trailing whitespace.

12 years agoUpdate example of process titles shown by "ps".
Tom Lane [Fri, 11 May 2012 22:33:39 +0000 (18:33 -0400)]
Update example of process titles shown by "ps".

This example was quite old: it lacked the WAL writer and autovac launcher
as well as the more recently added checkpointer.  Linux "ps" seems to show
slightly different stuff now too.

12 years agoCosmetic adjustments for postmaster's handling of checkpointer.
Tom Lane [Fri, 11 May 2012 21:46:08 +0000 (17:46 -0400)]
Cosmetic adjustments for postmaster's handling of checkpointer.

Correct some comments, order some operations a bit more consistently.
No functional changes.

12 years agoPL/Python: Adjust the regression tests for Python 3.3
Peter Eisentraut [Fri, 11 May 2012 20:01:15 +0000 (23:01 +0300)]
PL/Python: Adjust the regression tests for Python 3.3

The string representation of ImportError changed.  Remove printing
that; it's not necessary for the test.

The order in which members of a dict are printed changed.  But this
was always implementation-dependent, so we have just been lucky for a
long time.  Do the printing the hard way to ensure sorted order.

12 years agoFix contrib/citext's upgrade script to handle array and domain cases.
Tom Lane [Fri, 11 May 2012 19:22:30 +0000 (15:22 -0400)]
Fix contrib/citext's upgrade script to handle array and domain cases.

We previously recognized that citext wouldn't get marked as collatable
during pg_upgrade from a pre-9.1 installation, and hacked its
create-from-unpackaged script to manually perform the necessary catalog
adjustments.  However, we overlooked the fact that domains over citext,
as well as the citext[] array type, need the same adjustments.  Extend
the script to handle those cases.

Also, the documentation suggested that this was only an issue in pg_upgrade
scenarios, which is quite wrong; loading any dump containing citext from a
pre-9.1 server will also result in the type being wrongly marked.

I approached the documentation problem by changing the 9.1.2 release note
paragraphs about this issue, which is historically inaccurate.  But it
seems better than having the information scattered in multiple places, and
leaving incorrect info in the 9.1.2 notes would be bad anyway.  We'll still
need to mention the issue again in the 9.1.4 notes, but perhaps they can
just reference 9.1.2 for fix instructions.

Per report from Evan Carroll.  Back-patch into 9.1.

12 years agoPrevent loss of init fork when truncating an unlogged table.
Robert Haas [Fri, 11 May 2012 13:46:42 +0000 (09:46 -0400)]
Prevent loss of init fork when truncating an unlogged table.

Fixes bug #6635, reported by Akira Kurosawa.

12 years agoRemove extraneous #include "storage/proc.h"
Simon Riggs [Fri, 11 May 2012 13:46:46 +0000 (14:46 +0100)]
Remove extraneous #include "storage/proc.h"

12 years agoEnsure age() returns a stable value rather than the latest value
Simon Riggs [Fri, 11 May 2012 13:36:24 +0000 (14:36 +0100)]
Ensure age() returns a stable value rather than the latest value

12 years agoOn GiST page split, release the locks on child pages before recursing up.
Heikki Linnakangas [Fri, 11 May 2012 09:35:28 +0000 (12:35 +0300)]
On GiST page split, release the locks on child pages before recursing up.

When inserting the downlinks for a split gist page, we used hold the locks
on the child pages until the insertion into the parent - and recursively its
parent if it had to be split too - were all completed. Change that so that
the locks on child pages are released after the insertion in the immediate
parent is done, before recursing further up the tree.

This reduces the number of lwlocks that are held simultaneously. Holding
many locks is bad for concurrency, and in extreme cases you can even hit
the limit of 100 simultaneously held lwlocks in a backend. If you're really
unlucky, you can hit the limit while in a critical section, which brings
down the whole system.

This fixes bug #6629 reported by Tom Forbes. Backpatch to 9.1. The page
splitting code was rewritten in 9.1, and the old code did not have this
problem.