Commit Graph

32452 Commits

Author SHA1 Message Date
Andrew Dunstan
94478aa8b1 Detect out of date flex in MSVC builds.
Per recent discussion, following a report from Quan Zongliang.
The same logic is used as in pgbison.pl.
2011-08-30 12:06:32 -04:00
Robert Haas
8a3d33c8e6 Fix parsing of time string followed by yesterday/today/tomorrow.
Previously, 'yesterday 04:00:00'::timestamp didn't do the same thing as
'04:00:00 yesterday'::timestamp, and the return value from the latter
was midnight rather than the specified time.

Dean Rasheed, with some stylistic changes
2011-08-30 11:38:42 -04:00
Robert Haas
eab2ef6164 Remove some tabs from README file.
Some of the ASCII art expected 8-space tab stops, and some of it
expected 4-space tab stops.

Per report from YAMAMOTO Takashi.
2011-08-29 22:26:29 -04:00
Tom Lane
a5b7640ba0 Fix concat_ws() to not insert a separator after leading NULL argument(s).
Per bug #6181 from Itagaki Takahiro.  Also do some marginal code cleanup
and improve error handling.
2011-08-29 15:20:57 -04:00
Tom Lane
be1e8053f4 Use a non-locking test in TAS_SPIN() on all IA64 platforms.
Per my testing, this works just as well with gcc as it does with HP's
compiler; and there is no reason to think that the effect doesn't occur
with icc, either.

Also, rewrite the header comment about enforcing sequencing around spinlock
operations, per Robert's gripe that it was misleading.
2011-08-29 13:18:44 -04:00
Robert Haas
c01c25fbe5 Improve spinlock performance for HP-UX, ia64, non-gcc.
At least on this architecture, it's very important to spin on a
non-atomic instruction and only retry the atomic once it appears
that it will succeed.  To fix this, split TAS() into two macros:
TAS(), for trying to grab the lock the first time, and TAS_SPIN(),
for spinning until we get it.  TAS_SPIN() defaults to same as TAS(),
but we can override it when we know there's a better way.

It's likely that some of the other cases in s_lock.h require
similar treatment, but this is the only one we've got conclusive
evidence for at present.
2011-08-29 10:05:48 -04:00
Tom Lane
6e1f1fee97 Actually, all of parallel restore's limitations should be tested earlier.
On closer inspection, whining in restore_toc_entries_parallel is really
much too late for any user-facing error case.  The right place to do it
is at the start of RestoreArchive(), before we've done anything interesting
(suh as trying to DROP all the targets ...)

Back-patch to 8.4, where parallel restore was introduced.
2011-08-28 22:27:48 -04:00
Tom Lane
d6e7abe45a Be more user-friendly about unsupported cases for parallel pg_restore.
If we are unable to do a parallel restore because the input file is stdin
or is otherwise unseekable, we should complain and fail immediately, not
after having done some of the restore.  Complaining once per thread isn't
so cool either, and the messages should be worded to make it clear this is
an unsupported case not some weird race-condition bug.  Per complaint from
Lonni Friedman.

Back-patch to 8.4, where parallel restore was introduced.
2011-08-28 21:48:58 -04:00
Tom Lane
2c5d6f1fb5 Include $cc_string in the info reported by a configure run.
Without this, it's not very easy to tell which compiler version a buildfarm
animal is actually using at the moment.
2011-08-28 17:14:52 -04:00
Bruce Momjian
94db6664e2 Modify pgrminclude -v to report include files that can't be compiled on
their own.

Avoid compile problems with defines being redefined after the removal of
the #if blocks.

Change script to use shell functions for simplicity.
2011-08-28 13:04:01 -04:00
Tom Lane
a49fbaaf8d Don't assume that "E" response to NEGOTIATE_SSL_CODE means pre-7.0 server.
These days, such a response is far more likely to signify a server-side
problem, such as fork failure.  Reporting "server does not support SSL"
(in sslmode=require) could be quite misleading.  But the results could
be even worse in sslmode=prefer: if the problem was transient and the
next connection attempt succeeds, we'll have silently fallen back to
protocol version 2.0, possibly disabling features the user needs.

Hence, it seems best to just eliminate the assumption that backing off
to non-SSL/2.0 protocol is the way to recover from an "E" response, and
instead treat the server error the same as we would in non-SSL cases.

I tested this change against a pre-7.0 server, and found that there
was a second logic bug in the "prefer" path: the test to decide whether
to make a fallback connection attempt assumed that we must have opened
conn->ssl, which in fact does not happen given an "E" response.  After
fixing that, the code does indeed connect successfully to pre-7.0,
as long as you didn't set sslmode=require.  (If you did, you get
"Unsupported frontend protocol", which isn't completely off base
given the server certainly doesn't support SSL.)

Since there seems no reason to believe that pre-7.0 servers exist anymore
in the wild, back-patch to all supported branches.
2011-08-27 16:37:58 -04:00
Peter Eisentraut
f44d275b6d Document minimum required version of DocBook XSL stylesheets 2011-08-27 23:28:55 +03:00
Tom Lane
724e30c9f8 Ensure we discard unread/unsent data when abandoning a connection attempt.
There are assorted situations wherein PQconnectPoll() will abandon a
connection attempt and try again with different parameters (eg, SSL versus
not SSL).  However, the code forgot to discard any pending data in libpq's
I/O buffers when doing this.  In at least one case (server returns E
message during SSL negotiation), there is unread input data which bollixes
the next connection attempt.  I have not checked to see whether this is
possible in the other cases where we close the socket and retry, but it
seems like a matter of good defensive programming to add explicit
buffer-flushing code to all of them.

This is one of several issues exposed by Daniel Farina's report of
misbehavior after a server-side fork failure.

This has been wrong since forever, so back-patch to all supported branches.
2011-08-27 14:16:14 -04:00
Bruce Momjian
4bd7333b14 Allow more include files to be compiled in their own by adding missing
include dependencies.

Modify pgcompinclude to skip a common fcinfo error.
2011-08-27 11:05:33 -04:00
Bruce Momjian
d010391ac8 Add support for #elif to pgrminclude. 2011-08-27 09:25:19 -04:00
Peter Eisentraut
fd5b397ca4 Implement the information schema with_hierarchy column
In PostgreSQL, this is included in the SELECT privilege, so show YES
or NO depending on whether SELECT is granted.
2011-08-27 15:03:02 +03:00
Peter Eisentraut
3104cc89be Spelling improvement 2011-08-27 08:08:26 +03:00
Bruce Momjian
68c019a538 Add another pgdefine path check, and a cvs-git change. 2011-08-26 21:52:35 -04:00
Bruce Momjian
e7088713cd Change references of CVS to .git. 2011-08-26 21:43:34 -04:00
Bruce Momjian
f1312b5ed3 Add postgres.h to *.c files for pg_upgrade, ltree, and btree_gist, and
remove from local *.h files.

Per suggestion from Alvaro.
2011-08-26 21:16:24 -04:00
Bruce Momjian
8b0f0822fd Fix missing pgdefine detection in pgrminclude. 2011-08-26 18:21:32 -04:00
Bruce Momjian
f8e41abd8a Modify pgrminclude to include all code, even in #if blocks. Process
.h include files before .c files.

Mark some includes as needed to be ignored by pgrminclude.
2011-08-26 18:15:15 -04:00
Bruce Momjian
c6e9da17a1 Cleanup of script. 2011-08-26 18:15:15 -04:00
Bruce Momjian
f261deb4b4 Add missing includes after pgrminclude run. 2011-08-26 18:15:14 -04:00
Bruce Momjian
987214b4d5 do include files first 2011-08-26 18:15:14 -04:00
Bruce Momjian
48423d949f Add markers. 2011-08-26 18:15:14 -04:00
Bruce Momjian
455d08b285 Add another marker. 2011-08-26 18:15:14 -04:00
Bruce Momjian
f8fc37b337 Add markers for skips. 2011-08-26 18:15:13 -04:00
Bruce Momjian
ac5f11e0ec Fix #if blocks. 2011-08-26 18:15:13 -04:00
Tom Lane
00eb036c11 Fix potential memory clobber in tsvector_concat().
tsvector_concat() allocated its result workspace using the "conservative"
estimate of the sum of the two input tsvectors' sizes.  Unfortunately that
wasn't so conservative as all that, because it supposed that the number of
pad bytes required could not grow.  Which it can, as per test case from
Jesper Krogh, if there's a mix of lexemes with positions and lexemes
without them in the input data.  The fix is to assume that we might add
a not-previously-present pad byte for each and every lexeme in the two
inputs; which really is conservative, but it doesn't seem worthwhile to
try to be more precise.

This is an aboriginal bug in tsvector_concat, so back-patch to all
versions containing it.
2011-08-26 16:51:34 -04:00
Tom Lane
40271811cb Improve comments describing tsvector data structure. 2011-08-26 16:17:42 -04:00
Tom Lane
928311a463 Clean up weird corner cases in lexing of psql meta-command arguments.
These changes allow backtick command evaluation and psql variable
interpolation to happen on substrings of a single meta-command argument.
Formerly, no such evaluations happened at all if the backtick or colon
wasn't the first character of the argument, and we considered an argument
completed as soon as we'd processed one backtick, variable reference, or
quoted substring.  A string like 'FOO'BAR was thus taken as two arguments
not one, not exactly what one would expect.  In the new coding, an argument
is considered terminated only by unquoted whitespace or backslash.

Also, clean up a bunch of omissions, infelicities and outright errors in
the psql documentation of variables and metacommand argument syntax.
2011-08-26 13:53:11 -04:00
Tom Lane
e86fdb0ab2 Support non-ASCII letters in psql variable names.
As in the backend, the implementation actually accepts any non-ASCII
character, but we only document that you can use letters.
2011-08-26 13:53:09 -04:00
Bruce Momjian
910725b49d Fix pgrminclude regex pattern. 2011-08-26 10:33:18 -04:00
Andrew Dunstan
6a56a38f01 Unbreak MSVC build broken by my port of flex check.
flex puts lex.backup in the current working directory regardless
of where the input and output are.
2011-08-26 10:21:43 -04:00
Bruce Momjian
6f9afc351b In pgrminclude, add code to skip includes with a marker comment. 2011-08-26 10:08:39 -04:00
Bruce Momjian
4399e81749 In pgrminclude, make skipped include names constent and skip files with
#if/#ifdefs.
2011-08-26 10:06:01 -04:00
Bruce Momjian
eb013ede59 In pg_upgrade, limit schema name filter to include toast tables. Bug
introduced recently when trying to filter out temp tables.

Backpatch to 9.0 and 9.1.
2011-08-26 00:12:32 -04:00
Andrew Dunstan
7327cb6420 Port backup check on psql lexer to MSVC. 2011-08-25 17:27:36 -04:00
Alvaro Herrera
28190bacfd Add expected isolationtester output when prepared xacts are disabled
This was deemed unnecessary initially but in later discussion it was
agreed otherwise.

Original file from Kevin Grittner, allegedly from Dan Ports.
I had to clean up whitespace a bit per changes from Heikki.
2011-08-25 17:44:56 -03:00
Tom Lane
ecf248737a Add makefile rules to check for backtracking in backend and psql lexers.
Per discussion, we should enforce the policy of "no backtracking" in these
performance-sensitive scanners.
2011-08-25 14:44:17 -04:00
Tom Lane
77ce50a403 Fix psql lexer to avoid use of backtracking.
Per previous experimentation, backtracking slows down lexing performance
significantly (by about a third).  It's usually pretty easy to avoid, just
need to have rules that accept an incomplete construct and do whatever the
lexer would have done otherwise.

The backtracking was introduced by the patch that added quoted variable
substitution.  Back-patch to 9.0 where that was added.
2011-08-25 14:33:08 -04:00
Tom Lane
2e95f1f002 Add "%option warn" to all flex input files that lacked it.
This is recommended in the flex manual, and there seems no good reason
not to use it everywhere.
2011-08-25 13:55:57 -04:00
Robert Haas
0371d4d063 Change format of SQL/MED generic options in psql backslash commands.
Rather than dumping out the raw array as PostgreSQL represents it
internally, we now print it out in a format similar to the one in
which the user input it, which seems a lot more user friendly.

Shigeru Hanada
2011-08-25 12:47:30 -04:00
Robert Haas
0a803d65e4 Properly quote SQL/MED generic options in pg_dump output.
Shigeru Hanada
2011-08-25 12:37:32 -04:00
Robert Haas
48bc57657d Tweak postgresql.conf.sample's comments on listen_addresess.
This makes it slightly more clear that '*' is not part of the default
value, in case that wasn't obvious.

As requested by Dougal Sutherland.
2011-08-25 09:41:24 -04:00
Robert Haas
6fc726adac Adjust CREATE DOMAIN example for standard_conforming_strings=on.
Noted by Hitoshi Harada.
2011-08-25 09:37:44 -04:00
Tom Lane
bd165757f4 Add a regression test for pgstattuple.
This is mainly to prove that the NaN fix actually works cross-platform.
2011-08-25 00:06:16 -04:00
Tom Lane
af7d181298 Fix pgstatindex() to give consistent results for empty indexes.
For an empty index, the pgstatindex() function would compute 0.0/0.0 for
its avg_leaf_density and leaf_fragmentation outputs.  On machines that
follow the IEEE float arithmetic standard with any care, that results in
a NaN.  However, per report from Rushabh Lathia, Microsoft couldn't
manage to get this right, so you'd get a bizarre error on Windows.

Fix by forcing the results to be NaN explicitly, rather than relying on
the division operator to give that or the snprintf function to print it
correctly.  I have some doubts that this is really the most useful
definition, but it seems better to remain backward-compatible with
those platforms for which the behavior wasn't completely broken.

Back-patch to 8.2, since the code is like that in all current releases.
2011-08-24 23:50:10 -04:00
Alvaro Herrera
f18795e7b7 Update FK alternative test output to new whitespace rules
With these changes, the isolation tests pass again on isolation levels
serializable and repeatable read.

Author: Kevin Grittner
2011-08-24 18:24:03 -03:00