- 27 Dec, 2010 4 commits
-
-
Tom Lane authored
gram.h has ordering dependencies, which are satisfied when it's included from gramparse.h, but might not be if it's pulled in directly.
-
Tom Lane authored
"private" is a keyword in C++, so this breaks the poorly-enforced policy that header files should be include-able in C++ code. Per report from Craig Ringer and some investigation with cpluspluscheck.
-
Alvaro Herrera authored
-
Robert Haas authored
My previous commit, 85cff3ce on 2010-12-25, failed to update errcodes.sgml or plerrcodes.h. This patch corrects that oversight, per a gripe from Tom Lane, and also corrects a typographical error.
-
- 26 Dec, 2010 1 commit
-
-
Andrew Dunstan authored
-
- 25 Dec, 2010 2 commits
-
-
Robert Haas authored
Extracted from a much larger patch by Shigeru Hanada.
-
Robert Haas authored
-
- 24 Dec, 2010 7 commits
-
-
Peter Eisentraut authored
-
Andrew Dunstan authored
Allow vpath builds and regression tests to succeed on Mingw. Backpatch to release 8.4 - earlier releases would require more changes and it's not worth the trouble.
-
Bruce Momjian authored
quotes are not required. This now matches postgresql.conf's specification of booleans.
-
Bruce Momjian authored
port and socket directory into postmaster.pid, and have pg_ctl read from that file, for use by PQping().
-
Peter Eisentraut authored
The order on the pg_dump/pg_dumpall man pages is not very strict, but surely putting it under connection options was wrong.
-
Peter Eisentraut authored
-
Robert Haas authored
The former is the option actually supported by these commands.
-
- 23 Dec, 2010 3 commits
-
-
Michael Meskes authored
string". This is not really needed because the string gets copied to the output untranslated anyway, but by adding this rule the lexer stays in sync with the backend lexer.
-
Heikki Linnakangas authored
cleanup stage to finish incomplete inserts or splits anymore. There was two reasons for the cleanup step: 1. When a new tuple was inserted to a leaf page, the downlink in the parent needed to be updated to contain (ie. to be consistent with) the new key. Updating the parent in turn might require recursively updating the parent of the parent. We now handle that by updating the parent while traversing down the tree, so that when we insert the leaf tuple, all the parents are already consistent with the new key, and the tree is consistent at every step. 2. When a page is split, we need to insert the downlink for the new right page(s), and update the downlink for the original page to not include keys that moved to the right page(s). We now handle that by setting a new flag, F_FOLLOW_RIGHT, on the non-rightmost pages in the split. When that flag is set, scans always follow the rightlink, regardless of the NSN mechanism used to detect concurrent page splits. That way the tree is consistent right after split, even though the downlink is still missing. This is very similar to the way B-tree splits are handled. When the downlink is inserted in the parent, the flag is cleared. To keep the insertion algorithm simple, when an insertion sees an incomplete split, indicated by the F_FOLLOW_RIGHT flag, it finishes the split before doing anything else. These changes allow removing the whole "invalid tuple" mechanism, but I retained the scan code to still follow invalid tuples correctly. While we don't create any such tuples anymore, we want to handle them gracefully in case you pg_upgrade a GiST index that has them. If we encounter any on an insert, though, we just throw an error saying that you need to REINDEX. The issue that got me into doing this is that if you did a checkpoint while an insert or split was in progress, and the checkpoint finishes quickly so that there is no WAL record related to the insert between RedoRecPtr and the checkpoint record, recovery from that checkpoint would not know to finish the incomplete insert. IOW, we have the same issue we solved with the rm_safe_restartpoint mechanism during normal operation too. It's highly unlikely to happen in practice, and this fix is far too large to backpatch, so we're just going to live with in previous versions, but this refactoring fixes it going forward. With this patch, you don't get the annoying 'index "FOO" needs VACUUM or REINDEX to finish crash recovery' notices anymore if you crash at an unfortunate moment.
-
Bruce Momjian authored
off unless they guarantee that all writes to the BBU arrive in 8kB chunks. Per discussion with Greg Smith
-
- 22 Dec, 2010 4 commits
-
-
Robert Haas authored
Noted by Thom Brown.
-
Bruce Momjian authored
-
Magnus Hagander authored
This function is like the PQserverVersion() function except it returns the version of libpq, making it possible for a client program or driver to determine which version of libpq is in use at runtime, and not just at link time. Suggested by Harald Armin Massa and several others.
-
Robert Haas authored
It appears that this will be faster for all but the shortest strings; at least one some platforms, memcmp() can use word-at-a-time comparisons. Noah Misch, somewhat pared down.
-
- 21 Dec, 2010 2 commits
-
-
Robert Haas authored
Andreas Karlsson
-
Robert Haas authored
On MacOS X, and apparently also on other BSD-derived systems, attaching a debugger causes getppid() to return the pid of the debugging process rather than the actual parent PID. As a result, debugging the autovacuum launcher, startup process, or WAL sender on such systems causes it to exit, because the previous coding of PostmasterIsAlive() detects postmaster death by testing whether getppid() == PostmasterPid. Work around that behavior by checking the return value of getppid() more carefully. If it's PostmasterPid, the postmaster must be alive; if it's 1, assume the postmaster is dead. If it's any other value, assume we've been debugged and fall through to the less-reliable kill() test. Review by Tom Lane.
-
- 20 Dec, 2010 2 commits
-
-
Robert Haas authored
This case can arise if a transaction has written data, but only to temporary tables. Loss of the commit record in case of a crash won't matter, because the temporary tables will be lost anyway. Reviewed by Heikki Linnakangas and Simon Riggs.
-
Alvaro Herrera authored
Jaime Casanova
-
- 19 Dec, 2010 4 commits
-
-
Magnus Hagander authored
Since we're not multithreaded it only provides marginally useful information, and it does require a newer version of the Platform SDK than we target. We may want to reconsider this in the future along with a fix for MinGW.
-
Tom Lane authored
eval_const_expressions() can replace CaseTestExprs with constants when the surrounding CASE's test expression is a constant. This confuses ruleutils.c's heuristic for deparsing simple-form CASEs, leading to Assert failures or "unexpected CASE WHEN clause" errors. I had put in a hack solution for that years ago (see commit 514ce7a3 of 2006-10-01), but bug #5794 from Peter Speck shows that that solution failed to cover all cases. Fortunately, there's a much better way, which came to me upon reflecting that Peter's "CASE TRUE WHEN" seemed pretty redundant: we can "simplify" the simple-form CASE to the general form of CASE, by simply omitting the constant test expression from the rebuilt CASE construct. This is intuitively valid because there is no need for the executor to evaluate the test expression at runtime; it will never be referenced, because any CaseTestExprs that would have referenced it are now replaced by constants. This won't save a whole lot of cycles, since evaluating a Const is pretty cheap, but a cycle saved is a cycle earned. In any case it beats kluging ruleutils.c still further. So this patch improves const-simplification and reverts the previous change in ruleutils.c. Back-patch to all supported branches. The bug exists in 8.1 too, but it's out of warranty.
-
Tom Lane authored
After parsing a parenthesized subexpression, we must pop all pending ANDs and NOTs off the stack, just like the case for a simple operand. Per bug #5793. Also fix clones of this routine in contrib/intarray and contrib/ltree, where input of types query_int and ltxtquery had the same problem. Back-patch to all supported versions.
-
Magnus Hagander authored
Add support for collecting "minidump" style crash dumps on Windows, by setting up an exception handling filter. Crash dumps will be generated in PGDATA/crashdumps if the directory is created (the existance of the directory is used as on/off switch for the generation of the dumps). Craig Ringer and Magnus Hagander
-
- 18 Dec, 2010 2 commits
-
-
Bruce Momjian authored
connections when the server is down, on Win32.
-
Magnus Hagander authored
Make the variables visible (but not used) even when support is not compiled in.
-
- 17 Dec, 2010 5 commits
-
-
Alvaro Herrera authored
This improves tag output by log_line_prefix
-
Alvaro Herrera authored
-
Robert Haas authored
If there's no work to be done, just exit quickly, before initialization.
-
Robert Haas authored
This prevents the word "waiting" from briefly disappearing from the ps status line when ResolveRecoveryConflictWithVirtualXIDs begins a new iteration of the outer loop. Along the way, remove some useless pgstat_report_waiting() calls; the startup process doesn't appear in pg_stat_activity. Fujii Masao
-
Robert Haas authored
Per report from Fujii Masao, and subsequent discussion.
-
- 16 Dec, 2010 4 commits
-
-
Tom Lane authored
These comments were not updated when we added the EXEC_BACKEND mechanism for Windows, even though it rendered them inaccurate. Also unify two unnecessarily-separate #ifdef __alpha code blocks.
-
Tom Lane authored
We don't actually need optreset, because we can easily fix the code to ensure that it's cleanly restartable after having completed a scan over the argv array; which is the only case we need to restart in. Getting rid of it avoids a class of interactions with the system libraries and allows reversion of my change of yesterday in postmaster.c and postgres.c. Back-patch to 8.4. Before that the getopt code was a bit different anyway.
-
Alvaro Herrera authored
-
Alvaro Herrera authored
-